欢迎来到天天文库
浏览记录
ID:5231196
大小:27.00 KB
页数:5页
时间:2017-12-06
《基于μc-os-ⅲ多任务间邮箱机制研究和应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于μC/OS?Ⅲ多任务间邮箱机制研究和应用 摘要:为灵活、有效地在多任务程序设计中应用μC/OS?Ⅲ操作系统中的邮箱,采用理论分析与实例实验相结合的方法,得到基于μC/OS?Ⅲ操作系统的邮箱机制在全双工任务间通信、二值信号量和充当延迟函数等方面的应用技巧和方法。实验表明,邮箱的灵活应用不仅可以实现传统的任务间数据通信,还可以方便地替代互斥信号量和实现延时功能。关键字:嵌入式系统;任务间通信;μC/OS?Ⅲ;邮箱中图分类号:TN311?34文献标识码:A文章编号:1004?373X(2013)06?0042?030引言5嵌入式系统软件通常由多个功能模块构成,而模块的功能一般由基于嵌入式操作系
2、统的任务来实现。在实际应用中,常需要进行任务间通信来实现特定的功能,如变量的传递、资源的共享等,这就需要针对操作系统建立可靠的任务间通信,而邮箱是最常用的任务间通信机制之一[1?2]。本文基于μC/OS?Ⅲ嵌入式实时操作系统[3],研究了邮箱的使用和技巧,不仅探讨了邮箱在传统任务间通信和数据的传递中的应用,还通过实例研究了邮箱在二值信号量和实现延时功能中的灵活应用。1μC/OS?Ⅲ简介2任务间通信与邮箱的应用由于嵌入式系统软件通常由基于操作系统的若干个任务实现,因此,不可避免的需要任务之间或中断服务子程序与任务间的通信,这种信息传递机制称为任务间的通信。μC/OS?Ⅲ任务间的通信可以通过共享内
3、存、信号量、任务内建消息队列、外部消息队列、事件标志组实现。共享内存方式使用全局变量或缓存,对大型而复杂的程序,多个任务同时对一个变量进行读写操作会引起冲突或缓存区的溢出,因此共享内存用于共享一些对数据安全性不高的通用数据。信号量的通信模型虽然可以很好地起到互斥的作用,但在多个任务同时与某一任务通信是就会产生对信号量的竞争,引起通信发起端的排队,降低系统的效率。任务内建消息队列一般用于接收少量消息(如中断服务程序发送过来的消息)、外部消息队列主要面向于多个任务共同等待的消息,事件标志组则用于多个任务间的同步[6?7]。5总结来说,μC/OS?Ⅲ任务间通信有2个途径:通过全局变量或发消息给另一个
4、任务。用全局变量时,必须保证每个任务或中断服务子程序独享该变量。中断服务中保证独享的惟一办法是关中断。如果2个任务共享某变量,各任务实现独享该变量的办法可以使关中断,再开中断,或使用信号量。需要注意的是,任务只能通过全局变量与中断服务子程序通信,而任务并不知道什么时候全局变量被中断服务子程序修改了,除非中断服务子程序以信号量方式向任务发信号,或者是该任务以查询方式不断周期地查询变量的值。这样就不可避免地给程序设计带来了一定的难度,为避免这种情况,常用的解决方法是采用邮箱[1]。典型的消息邮箱(MessageMailBox)也称作交换消息,即用一个指针型变量,一个任务或一个中断服务子程序通过内核
5、,可以把一则消息(一个指针)放到邮箱中。同样,一个或多个任务通过内核,可以接收这则消息。发送消息的任务和接收消息的任务约定,某个指针指向的内容就是它们要传送的消息,如发送消息用指针*Txmsg,而接收消息用指针*Rxmsg。这种消息传送的过程与通过邮箱收发邮件颇为相似,故称消息邮箱,或简称邮箱。下述代码给出了2个邮箱TxMbox和RxMbox的建立方法,同时TaskOne和TaskTwo两个任务使用邮箱实现了全双工的应答式通信。从代码可以看出,使用内核提供的邮箱服务实现任务间通信方便、简单,这也是邮箱作为任务间通信最常用手段的原因。此外,在实际应用中,通过分析邮箱的功能特点,还可以将其应用到其
6、他场合以实现一些灵活的功能。53邮箱的灵活应用3.1用邮箱作为二值信号量4结语本文基于嵌入式操作系统μC/OS?Ⅲ探讨了邮箱在任务间通信中的应用方法及注意事项,分析了各邮箱函数的关系及使能/屏蔽方法,并给出示例实现2个任务的全双工通信;在此基础上,还研究了邮箱在二值信号量和延时功能中的灵活应用,并给出实例代码验证,这在嵌入式系统开发过程中有一定的参考价值。参考文献[1]张皓,伍云,周志杰.基于VxWorks的任务间通信模型设计[J].计算机工程,2007(2):131?135.[2]曾蜀芳,郭兵,沈艳.统一优先级软/硬件任务协同调度下的任务间通信机制[J].单片机与嵌入式系统应用,2009(4
7、):21?24.[3]LABROSSEJJ,TORRESFreddy.μC/OS?Ⅲ:thereal?timekernelfortheNXPLPC1700[M].[S.l.]:Micrium,2010.[4]李承创,陈跃斌.μC/OS?Ⅲ在Cortex?M3处理器上的移植[J].昆明冶金高等专科学校学报,2012,28(1):37?40.[5]邵贝贝.浅谈μC/OS5任务调度算法的硬件实现[J].
此文档下载收益归作者所有