嵌入式系统-RTOS-uCOS-II-原理及其应用----4.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西安邮电学院 计算机系 第4章 任务的 同步与通信 第4章 任务的同步与通信 一个应用系统通常是由多个任务组成,任务之间互相协作共同完成目标功能。例如任务对共享资源竞争,先采集数据才能处理数据等情况。(任务的同步控制,共享资源的竞争,任务间的通信等问题的解决方案OS) 任务间的同步任务间的制约、合作运行机制。 系统各任务之间通过 “任务通信” 的方式,实现任务的信息传递和同步控制, “任务通信” 的载体就是 事件。 常用的事件:信号量(计数型SEM/互斥型MUTEX)、消息邮箱(MBOX)、消息队列(Q)、事件标志组等。 事件用 “事件控制块”(ECB) 来描述。 第4章 目录 1、 任务间的同步和事件控制块 2、 信号量及其操作 3、互斥型信号量和任务优先级反转 4、消息邮箱及其操作 5、消息队列及其操作 第4章 目录 1、 任务间的同步和事件控制块 2、 信号量及其操作 3、互斥型信号量和任务优先级反转 4、消息邮箱及其操作 5、消息队列及其操作 第4章 目录 1、 任务间的同步和事件控制块 2、 信号量及其操作 3、互斥型信号量和任务优先级反转 4、消息邮箱及其操作 5、消息队列及其操作 第4章 目录 1、 任务间的同步和事件控制块 2、 信号量及其操作 3、互斥型信号量和任务优先级反转 4、消息邮箱及其操作 5、消息队列及其操作 第4章 目录 1、 任务间的同步和事件控制块 2、 信号量及其操作 3、互斥型信号量和任务优先级反转 4、消息邮箱及其操作 5、消息队列及其操作 第4章 目录 1、 任务间的同步和事件控制块 2、 信号量及其操作 3、互斥型信号量和任务优先级反转 4、消息邮箱及其操作 5、消息队列及其操作 4.4 消息邮箱及其操作 消息邮箱(Mbox) 它的主要功能就是用于在任务间传递一个数据;还要为操作系统管理事件和任务提供一些参数。结构如下: 消息邮箱使用传递变量指针的手段在任务之间进行通信。 4.4 消息邮箱及其操作 消息邮箱的操作 创建消息邮箱 可以调用系统函数OSMboxCreate( )函数创建消息邮箱;其原型如下: OS_EVENT * OSMboxCreate( void * msg // 消息指针 ); 备注: 1、形参 msg 是一个要在任务间传递的变量指针; 2、当创建消息邮箱成功时,返回消息邮箱指针; 3、消息邮箱创建失败时,返回一个 Null 。 4.4 消息邮箱及其操作 消息邮箱的操作 向消息邮箱发送消息 可以调用系统函数OSMboxPost( )函数向消息邮箱发送消息;其原型如下: INT8U OSMboxPost( OS_EVENT * pevent, //消息邮箱指针 void * msg // 消息指针 ); 备注: 1、形参 msg 是一个要在任务间传递的变量指针; 2、形参 pevent 是消息邮箱指针; 4.4 消息邮箱及其操作 消息邮箱的操作 向消息邮箱发送消息 向消息邮箱发送消息系统函数OSMboxPost( )返回值含义: 1、OS_NO_ERR 消息发送成功; 2、 OS_MBOX_FULL 不能向满邮箱在发送消息; 3、OS_ERR_EVENT_TYPE 指定的事件不是消息邮箱类型; 4、OS_ERR_PEVENT_NULL 不能向不存在的消息邮箱发送消息; 5、OS_ERR_POST_NULL_PTR 消息缓冲区不能为空; 4.4 消息邮箱及其操作 消息邮箱的操作 请求消息邮箱 void *OSMboxPend ( OS_EVENT *pevent, //消息邮箱指针 INT16U timeout, //等待时限 INT8U *err //函数执行信息 ); 所谓的 “请求消息邮箱” 就是等待一个消息传送到消息邮箱,或取得一个消息数据。请求消息邮箱函数原型: 当返回值 != Null 时,返回值就是一个预期消息的指针; 当返回值 =Null 时,意味着未得到消息,此时uC/OS-II执行OS_Sched();可能消息未准备好,或指示的事件出错、超时等,此时函数直接返回,用户应查阅 *err的状态。 4.4 消息邮箱及其操作 消息邮箱的操作 请求消息邮箱 err 是本函数执行状态的返回值,*err 的值含义: OS_NO_ERR 请求成功,得到目标数据; OS_TIMEOUT 超时,未得到目标数据; OS_ERR_EVENT_TYPE 无效的事件类型; OS_ERR_PEND_ISR 不支

文档评论(0)

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

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

1亿VIP精品文档

相关文档