uCOS-II微小内核地分析.ppt

  1. 1、本文档共169页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信号量管理 -等待信号量 OS_ENTER_CRITICAL(); if (pevent-OSEventCnt 0) { pevent-OSEventCnt--; OS_EXIT_CRITICAL(); *err = OS_NO_ERR; return; } OSTCBCur-OSTCBStat |= OS_STAT_SEM; OSTCBCur-OSTCBDly = timeout; OS_EventTaskWait(pevent); OS_EXIT_CRITICAL(); OS_Sched(); OS_ENTER_CRITICAL(); if (OSTCBCur-OSTCBStat OS_STAT_SEM) { OS_EventTO(pevent); OS_EXIT_CRITICAL(); *err = OS_TIMEOUT; return; } OSTCBCur-OSTCBEventPtr = (OS_EVENT *)0; OS_EXIT_CRITICAL(); *err = OS_NO_ERR; } 已有信号量 使任务进入 等待事件状态 任务在等待 信号量 任务调度 任务不再 等待事件 返回“无错” 返回“无错” 返回“超时” 超时处理 Y 减少信号量 计数器 Y N N 信号量有效,计数器减1,然后任务继续运行 计数值为0,任务进行等待状态直到发出信号量 信号量管理 -发送信号量 INT8U OSSemPost (OS_EVENT *pevent) { #if OS_ARG_CHK_EN 0 if (pevent == (OS_EVENT *)0) { return (OS_ERR_PEVENT_NULL); } if (pevent-OSEventType != OS_EVENT_TYPE_SEM) { return (OS_ERR_EVENT_TYPE); } #endif OS_ENTER_CRITICAL(); if (pevent-OSEventGrp != 0x00) { OS_EventTaskRdy(pevent, (void *)0, OS_STAT_SEM); OS_EXIT_CRITICAL(); OS_Sched(); return (OS_NO_ERR); } if (pevent-OSEventCnt 65535) { pevent-OSEventCnt++; OS_EXIT_CRITICAL(); return (OS_NO_ERR); } OS_EXIT_CRITICAL(); return (OS_SEM_OVF); } 开始 ECB指针 为NULL 事件为信号量 有任务等待 信号量 信号量计数器 65535 返回“溢出” 任务调度 返回“无错” 返回“无错” 信号量 计数器加1 Y N 返回“ECB 为NULL” Y N 返回“事件 类型错误” N Y 使相应的任务 就绪 Y N 目录 概述 最小内核 临界区与中断管理 任务的结束 信号量 删除信号量 1.5 删除信号量 删除信号量 一般情况下建立了事件(信号量等)就不删除了。实际上μC/OS-II V2.0版本还没加入删除事件支持,需要使用删除事件(信号量等)的情况一般是复杂的应用。 删除信号量是通过调用函数OSSemDel()实现。 OS_EVENT *OSSemDel (OS_EVENT *pevent, INT8U opt, INT8U *err) { } 信号量句柄 删除方式 返回错误码 删除信号量 BOOLEAN tasks_waiting; if (OSIntNesting 0) { *err = OS_ERR_DEL_ISR; return (pevent); } #if OS_ARG_CHK_EN 0 if (pevent == (OS_EVENT *)0) { *err = OS_ERR_PEVENT_NULL; return (pevent); } if (pevent-OSEve

文档评论(0)

tk2469tk + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档