- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 1
uC_OS—III外建消息队列及任务内建消息队列深度解析
摘要:在uC/OS-II的基础上,uC/OS-III对消息队列做了较大的改进,并新增一项特有的功能:任务内建消息队列。任务内建消息队列不仅可以降低消息队列占用的存储空间、提高消息与任务间的通信效率,还能实现消息与任务的相互一一对应,从而保证了系统的健壮性。
关键词:消息队列;任务内建消息队列;嵌入式操作系统
中图分类号:TP313文献标识码:A文章编号:1009-3044(2013)04-0908-03
DepthAnalysisOfuC/OS-IIIsMessageQueueandTaskBuilt-inMessageQueue
QUHuan-yu,CHENLi-ping,TANGXiao-mei
(SchoolofMathematics,PhysicsandInformaitonEngineering,JiaxingUniversity,Jiaxing314001,China)
Abstract:OnthebasisofuC/OS-II,uC/OS-IIIhasmadeagreatimprovementonitsmessagequeuefunction,andaddauniquefunction:thetaskbuilt-inmessagequeue.Taskbuilt-inmessagequeuecannotonlyreducetheoccupancystoragespaceofmessagequeue、improvethecommunicationefficiencyofmessagesandtasks,butalsocanrealizeone-to-onecorrespondencebetweentasksandmessages,ensurethesystemsrobustness
Keywords:messagequeues;taskbuilt-inmessagequeue;embeddedoperationsystem
多任务调度系统中,任务间互相通信的方法可以是共享全局变量、共享内存、信号量等。但若要区分任务对通信数据占有的优先级、实现通信数据的临界性操作、支配通信数据的可访问次数等更为高级的应用,就必须依靠消息队列这一媒介。
uC/OS-III的非必须功能均具有可裁剪性,用户需在OS_CFG.H文件中设置OS_CFG_TASK_Q_EN为1,任务内建消息队列才会被分配到任务控制块中,否则任务内建消息队列部分就会被裁剪而失效。
1uC/OS-III消息队列的结构
1.1外建消息队列
外建消息队列主要由五个部分组成:
structos_q{
OS_OBJ_TYPEType;//结构体标识部分
CPU_CHAR*NamePtr;//消息队列命名部分
OS_PEND_LISTPendList;//消息挂起部分
#ifOS_CFG_DBG_EN0u//功能调试部分
OS_Q*DbgPrevPtr;
OS_Q*DbgNextPtr;
CPU_CHAR*DbgNamePtr;
#endif
OS_MSG_QMsgQ;};//消息存储部分
1)结构体标识部分:存放消息队列的标识数据,是操作系统识别此结构体为消息队列的依据。
2)消息队列命名部分:存放该消息队列的名字,可直接访问该地址并查看该队列名字相对应的ASCII码或者通过uC/Probe查看其相对应的字符串。该命名功能主要应用于产品设计时的调试,区分各个消息队列。
3)消息挂起部分:该部分由指针HeadPtr、TailPtr和计数变量NbrEntries组成,指针指向的是内建于任务控制块的os_pend_data结构体,多个结构体与上述两个指针一起构成了消息挂起队列,等待该消息的任务都以链的形式存放在该队列中。
当任务被添加进挂起队列中,uC/OS-III会根据该任务的优先级、相等优先级时依据添加顺序进行重新排列,以保证当消息到来时最先获得消息的是队列中优先级最高的任务。计数变量记录了当前该挂起队列中所存放的任务个数。
4)功能调试部分:当配置宏OS_CFG_DBG_EN为1时,便使能了uC/OS-III提供的专用于调试的代码,其作用是将所有的内建和外建消息队列按照创建时的顺序以队列的形式展现给用户,方便用户调试时查看所有消息队列及其数据。
5)消息存储部分:该部分由指针InPtr、OutPtr和计数变量NbrEntriesSize、NbrEntries、NbrEntriesMax组成。指针InPtr、OutPtr指向的是os_msg消息结构体,多个该类型结构体与上
文档评论(0)