嵌入式实时操作系统(第9课时).ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式实时操作系统(第9课时)

嵌入式实时操作系统 第四章 任务的同步与通信 4.1.3 事件控制块 为了把描述事件的数据结构统一起来,μc/os-II使用叫做事件控制块ECB的数据结构来描述诸如信号量、邮箱(消息邮箱)和消息队列这些事件。事件控制块中包含包括等待任务表在内的所有有关事件的数据。 定义在文件μc/os-II.H中的事件控制块的数据结构如下: typedef struct { INT8U OSEventType; //事件的类型 INT16U OSEventCnt; //信号量计数器 void *OSEventPtr; //消息或消息队列的指针 INT8U OSEventGrp; //等待事件的任务组 INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; //任务等代表 } 应用程序中的任务通过指针pevent来访问事件控制块。 成员OSEventCnt为信号量的计数器。 成员OSEventPtr主要用来存放消息邮箱或消息队列的指针。 成员OSEventTbl[OS_EVENT_TBL_SIZE]是一个数组。这个数组的格式与前面任务就绪表的格式一样。应用程序中的所有任务按照优先级别各自在表中占据一个二进制位,并用该位的值是“1”还是“0”来表示该位对应的任务是否为正在等待事件的任务,这个表叫做任务等待表。 与任务就绪表类似,结构成员OSEventGrp表示任务等待表中的各任务组是否存在等待任务。 事件控制块ECB结构中的成员OSEventType用来指明事件的类型。成员OSEventType可能的取值见表4-1。 表4-1 OSEventType(定义在文件uCOS_II.H中)可取的值 4.1.4 操作事件控制块的函数 μc/os-II有4个对事件控制块进行基本操作的函数(定义在文件OS_CORE.C中),以供操作信号量、消息邮箱、消息队列等事件的函数来调用。 1、事件控制块的初始化函数 调用EventWaitListInit( )函数可以对事件控制块进行初始化。函数的原型如下: void OS_EventWaitListInit( OS_EVENT *pevent //事件控制块的指针 ); 这个函数的作用就是把变量OSEventGrp及任务等待表中的每一位都清0,即令事件的任务等待表中不含有任务等待任务。 初始化事件控制块的函数OS_EventWaitListInit( ),将在任务调用函数OSXXXCreate( )创建事件时,被函数OSXXXCreate( )所调用。 函数OSXXXCreate( )中XXX的含义见表4-2。 表4-2 XXX的含义 事件控制块被初始化后的情况如图4-10所示。 2、使一个任务进入等待状态的函数 把一个任务置于等待状态要调用函数OS_EventTaskWait( )。该函数的原型如下: void OS_EventTaskWait( OS_Event *pevent //事件控制块的指针 ); 函数OS_EventTaskWait( )将在调用函数OSXXXPend( )请求一个事件时,被函数OSXXXPend( )所调用。 3、使一个正在等待任务进入就绪状态的函数 如果一个正在等待的任务具备了可以运行的条件,那么就要使它进入就绪状态。这时要调用函数OS_EventTaskRdy( )。该函数的作用就是把调用这个函数的任务在任务等待表中的位置清0(解除等待状态)后,再把任务在任务就绪表中对应的位置1,然后引发一次任务调度。 函数OS_EventTaskRdy( )的原型如下: INT8U OS_EventTaskRdy( OS_EVENT *pevent, //事件控制块的指针 void *msg, //未使用 INT8U msk //清除TCB状态标志掩码 ); 函数OS_E

文档评论(0)

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

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

1亿VIP精品文档

相关文档