新聞中心

EEPW首頁 > 手機與無線通信 > 設計應用 > 基于μC/OS-Ⅲ的多任務間郵箱機制分析與應用

基于μC/OS-Ⅲ的多任務間郵箱機制分析與應用

作者: 時間:2013-06-14 來源:網(wǎng)絡 收藏

摘要:為靈活、有效地在多程序設計中μC/Ⅲ操作系統(tǒng)中的,采用理論與實例實驗相結(jié)合的方法,得到μC/Ⅲ操作系統(tǒng)的在全雙工間通信、二值信號量和充當延遲函數(shù)等方面的技巧和方法。實驗表明,的靈活不僅可以實現(xiàn)傳統(tǒng)的間數(shù)據(jù)通信,還可以方便地替代互斥信號量和實現(xiàn)延時功能。
關鍵字:嵌入式系統(tǒng);任務間通信;μC/Ⅲ;郵箱

0 引言
嵌入式系統(tǒng)軟件通常由多個功能模塊構(gòu)成,而模塊的功能一般由嵌入式操作系統(tǒng)的任務來實現(xiàn)。在實際應用中,常需要進行任務間通信來實現(xiàn)特定的功能,如變量的傳遞、資源的共享等,這就需要針對操作系統(tǒng)建立可靠的任務間通信,而郵箱是最常用的任務間通信之一。本文μC/OS-Ⅲ嵌入式實時操作系統(tǒng),研究了郵箱的使用和技巧,不僅探討了郵箱在傳統(tǒng)任務間通信和數(shù)據(jù)的傳遞中的應用,還通過實例研究了郵箱在二值信號量和實現(xiàn)延時功能中的靈活應用。

1 μC/OS-Ⅲ簡介
嵌入式實時操作系統(tǒng)(RTOS)是嵌入式系統(tǒng)的關鍵組成部分。近年來,μC/OS-Ⅲ操作系統(tǒng)以其較小的體積、開放的源碼和值得信賴的可靠性獲得了工程技術(shù)人員的青睞。2011年,μC/OS-Ⅲ的升級版μC/OS-Ⅲ發(fā)布。μC/OS-Ⅲ秉承了前一版本的優(yōu)點,是一個高度可移植、可固化、可擴展,具有優(yōu)先搶占的實時性,專為滿足當今嵌入式系統(tǒng)的苛刻要求的多任務內(nèi)核,它的最大改進之處在于允許多個任務運行于同一優(yōu)先級上,相同優(yōu)先級的任務按時間片輪轉(zhuǎn)調(diào)度,內(nèi)核對象的數(shù)量不受限制以及接近于零的終端禁用時鐘周期。μC/OS-Ⅲ內(nèi)核為程序員提供了高效的實時任務調(diào)度、中斷管理以及任務間通信。與前期版本不同,μC/OS-Ⅲ支持無限多個任務,無限多個優(yōu)先級,無限多個信號量,同時支持互斥信號量、消息郵箱等任務間通信方式。

2 任務間通信與郵箱的應用
由于嵌入式系統(tǒng)軟件通常由基于操作系統(tǒng)的若干個任務實現(xiàn),因此,不可避免的需要任務之間或中斷服務子程序與任務間的通信,這種信息傳遞稱為任務間的通信。μC/OS-Ⅲ任務間的通信可以通過共享內(nèi)存、信號量、任務內(nèi)建消息隊列、外部消息隊列、事件標志組實現(xiàn)。共享內(nèi)存方式使用全局變量或緩存,對大型而復雜的程序,多個任務同時對一個變量進行讀寫操作會引起沖突或緩存區(qū)的溢出,因此共享內(nèi)存用于共享一些對數(shù)據(jù)安全性不高的通用數(shù)據(jù)。信號量的通信模型雖然可以很好地起到互斥的作用,但在多個任務同時與某一任務通信是就會產(chǎn)生對信號量的競爭,引起通信發(fā)起端的排隊,降低系統(tǒng)的效率。任務內(nèi)建消息隊列一般用于接收少量消息(如中斷服務程序發(fā)送過來的消息)、外部消息隊列主要面向于多個任務共同等待的消息,事件標志組則用于多個任務間的同步。
總結(jié)來說,μC/OS-Ⅲ任務間通信有2個途徑:通過全局變量或發(fā)消息給另一個任務。用全局變量時,必須保證每個任務或中斷服務子程序獨享該變量。中斷服務中保證獨享的惟一辦法是關中斷。如果2個任務共享某變量,各任務實現(xiàn)獨享該變量的辦法可以使關中斷,再開中斷,或使用信號量。需要注意的是,任務只能通過全局變量與中斷服務子程序通信,而任務并不知道什么時候全局變量被中斷服務子程序修改了,除非中斷服務子程序以信號量方式向任務發(fā)信號,或者是該任務以查詢方式不斷周期地查詢變量的值。這樣就不可避免地給程序設計帶來了一定的難度,為避免這種情況,常用的解決方法是采用郵箱。
典型的消息郵箱(Message Mail Box)也稱作交換消息,即用一個指針型變量,一個任務或一個中斷服務子程序通過內(nèi)核,可以把一則消息(一個指針)放到郵箱中。同樣,一個或多個任務通過內(nèi)核,可以接收這則消息。發(fā)送消息的任務和接收消息的任務約定,某個指針指向的內(nèi)容就是它們要傳送的消息,如發(fā)送消息用指針*Txmsg,而接收消息用指針*Rxmsg。這種消息傳送的過程與通過郵箱收發(fā)郵件頗為相似,故稱消息郵箱,或簡稱郵箱。
為了在μC/OS-Ⅲ中使用郵箱,必須將OS_CFG.H文件中相應的配置常數(shù)置1。具體配置項如表1所示。

本文引用地址:http://butianyuan.cn/article/153463.htm

b.JPG


需要說明的是,由于μC/OS-Ⅲ的郵箱管理必須有函數(shù)OSMboxCreate()和OSMboxPend()的參與,所以它們不能單獨被屏蔽掉。但從表1中可以看出,將OS_MBOX_EN選項置0即可屏蔽所有郵箱函數(shù),當然也可以屏蔽OSMboxCreate()和OSMboxPend()函數(shù)。


上一頁 1 2 3 下一頁

評論


相關推薦

技術(shù)專區(qū)

關閉