實(shí)時(shí)操作系統μC/OS-II的改進(jìn)與應用研究
傳統的嵌入式系統設計大多采用單任務(wù)順序機制,應用程序是一個(gè)無(wú)限的大循環(huán),所有的事件都按順序執行,與時(shí)間相關(guān)性較強的事件靠定時(shí)中斷來(lái)保證,由此帶來(lái)系統的穩定性、實(shí)時(shí)性較差;尤其當系統功能較復雜,且對實(shí)時(shí)性要求較嚴格時(shí),這種單任務(wù)機制的弱點(diǎn)暴露無(wú)遺。本文引入的嵌入式操作系統μC/OS-II是一個(gè)多任務(wù)的實(shí)時(shí)內核,主要提供任務(wù)管理功能。在實(shí)時(shí)系統中的多個(gè)任務(wù),必須決定這些任務(wù)的優(yōu)先級順序,任務(wù)調度算法需要動(dòng)態(tài)為就緒任務(wù)的優(yōu)先級排序。為了滿(mǎn)足對實(shí)時(shí)性要求越來(lái)越高的需要,同時(shí)避免頻繁改變就緒任務(wù)的優(yōu)先級,在分析μC/OS-II源代碼的基礎上,對其調度算法進(jìn)行改進(jìn)。
本文引用地址:http://dyxdggzs.com/article/78799.htm1 μC/OS-II概述
μC/OS-II是一個(gè)完整的,可移植、可固化、可裁剪的占先式實(shí)時(shí)多任務(wù)內核;支持56個(gè)用戶(hù)任務(wù),支持信號量、郵箱、消息隊列等常用的進(jìn)程間通信機制;適用于各種微控制器和微處理器;所有代碼用ANSI C語(yǔ)言編寫(xiě),程序的可讀性強,具有良好的可移植性,已被移植到多種處理器架構中,在某些實(shí)時(shí)性要求嚴格的領(lǐng)域中得到廣泛應用。
1.1 工作原理
μC/OS-II的核心工作原理是:近似地讓最高優(yōu)先級的就緒任務(wù)處于運行狀態(tài)。首先初始化MCU,再進(jìn)行操作系統初始化,主要完成任務(wù)控制塊TCB初始化,TCB優(yōu)先級表初始化,TCB鏈表初始化,事件控制塊(ECB)鏈表初始化,空任務(wù)的創(chuàng )建等。然后,開(kāi)始創(chuàng )建新任務(wù),并可在新創(chuàng )建的任務(wù)中再創(chuàng )建其他新任務(wù)。最后,訶用OSStart()函數啟動(dòng)多任務(wù)調度。在多任務(wù)調度開(kāi)始后,啟動(dòng)時(shí)鐘節拍源開(kāi)始計時(shí),此節拍源給系統提供周期性的時(shí)鐘中斷信號,實(shí)現延時(shí)和超時(shí)確認。
1.2 任務(wù)調度
操作系統在下面的情況下進(jìn)行任務(wù)調度:中斷(系統占用的時(shí)間片中斷OSTimeTick()、用戶(hù)使用的中斷)和調用API函數(用戶(hù)主動(dòng)調用)。一種是當時(shí)鐘中斷來(lái)臨時(shí),系統把當前正在執行的任務(wù)掛起,保護現場(chǎng),進(jìn)行中斷處理,判斷有無(wú)任務(wù)延時(shí)到期;若沒(méi)有別的任務(wù)進(jìn)入就緒態(tài),則恢復現場(chǎng)繼續執行原任務(wù)。另一種調度方式是任務(wù)級的調度,即調用API函數(由用戶(hù)主動(dòng)調用),足通過(guò)發(fā)軟中斷命令或依靠處理器在任務(wù)執行中調度。當沒(méi)有任何任務(wù)進(jìn)入就緒態(tài)時(shí),就去執行空任務(wù)。
2 調度算法的改進(jìn)
2.1 實(shí)時(shí)系統的調度策略
在操作系統的多任務(wù)調度算法的設計上,要根據系統的具體需求來(lái)確定調度策略。實(shí)時(shí)調度策略按不同的方法可以分為:靜態(tài)/動(dòng)態(tài),基于優(yōu)先級/不基于優(yōu)先級,搶占式/非搶占式,單處理器/多處理器。其中,靜態(tài)是指在任務(wù)的整個(gè)生命期內優(yōu)先級保持不變,任務(wù)的優(yōu)先級是在系統建立任務(wù)時(shí)確定的;動(dòng)態(tài)是指在任務(wù)的生命期內,隨時(shí)確定或改變它的優(yōu)先級別,以適應系統工作環(huán)境和條件的變化。
μC/OS-II系統采用的是靜態(tài)優(yōu)先級分配策略,由用戶(hù)來(lái)為每個(gè)任務(wù)指定優(yōu)先級。雖然任務(wù)的優(yōu)先級可通過(guò)OSTaskChangePrio()函數改變,但函數功能簡(jiǎn)單,僅以用戶(hù)指定的新優(yōu)先級來(lái)替換任務(wù)當前的優(yōu)先級。隨著(zhù)實(shí)時(shí)嵌入式技術(shù)的發(fā)展,對嵌入式系統的實(shí)時(shí)性要求越來(lái)越高,多樣化的調度方法己成為一種趨勢。本文討論動(dòng)態(tài)優(yōu)先級調度中的最優(yōu)算法截止期最早優(yōu)先算法的改進(jìn)及其在μC/OS-II中的實(shí)現。
2.2 調度算法的改進(jìn)
截止期最早優(yōu)先算法是動(dòng)態(tài)優(yōu)先級調度算法中的最優(yōu)算法。在截止期最早優(yōu)先算法中,系統按任務(wù)的截止期給每個(gè)任務(wù)分配優(yōu)先級。任務(wù)的截止期越早其優(yōu)先級越高,反之亦然。為此,在本文所述截止期最早優(yōu)先算法的改進(jìn)中.需在μC/OS-II系統中增加表l所列的項目。

在截止期最早優(yōu)先算法中,需要用戶(hù)為任務(wù)指定其截止期。在本改進(jìn)中,將OSTaskCreate()和OSTaskCreateExt()中的參數INT8U Prio改為INT8U deadline,并在函數內定義局部變量INT8U Prio來(lái)記錄分配給任務(wù)的優(yōu)先級。該算法改進(jìn)也要在系統中增加OSTaskPrioCreate()函數,函數優(yōu)先級分配的方法是按任務(wù)的截止期分配。該模塊流程如圖l所示。

在對就緒任務(wù)優(yōu)先級進(jìn)行調整時(shí),該模塊首先在數組中對任務(wù)的優(yōu)先級完成調整并記錄任務(wù)優(yōu)先級的調整情況。在執行此函數后,就緒任務(wù)隊列中任務(wù)的優(yōu)先級可能會(huì )改變,園此還需要在μC/OS-II系統中添加prio_adjust()函數。該函數應用μC/OS-II系統原有的函數OSTaskChangePrio()來(lái)更新就緒任務(wù),代碼如下:

為防止多個(gè)任務(wù)同時(shí)調用OSTaskPrioCreate()函數造成混亂,這段代碼應按臨界資源來(lái)處理,需要在調用前關(guān)中斷,調用后再開(kāi)中斷。
3 應用及評價(jià)
3.1 系統結構
在液壓測量控制HPMC模塊中,系統要求在18ms內完成對7個(gè)位置的傳感器和用戶(hù)鍵盤(pán)數據的實(shí)時(shí)采集、處理及顯示;且對于采集到的不同測量數據,要求系統根據任務(wù)的緊迫程度,作出優(yōu)先級不同的實(shí)時(shí)響應。
系統的結構如圖2所示。由外向內分為3層:硬件電路層、任務(wù)層和操作系統層。

硬件電路層主要包括HPMC模塊、用戶(hù)操作、單片機控制模塊。大致功能如下:HPMC模塊主要完成傳感器數據的實(shí)時(shí)采集;用戶(hù)模塊主要完成用戶(hù)的操作;單片機控制模塊用于控制數據的接收、處理、發(fā)送、短消息的收發(fā)等。
任務(wù)層并行存在lO個(gè)任務(wù),每個(gè)任務(wù)均由以下3部分組成:應用程序、任務(wù)堆棧以及任務(wù)控制塊,主要完成任務(wù)優(yōu)先權的動(dòng)態(tài)設置以及任務(wù)狀態(tài)的轉換。
操作系統層的設計主要是將μC/OS-II移植到單片機上。本系統采用Atmel公司的MCS-5l系列兼容單片機,同時(shí)完成各個(gè)任務(wù)的具體編程。
3.2 算法評估
選擇用動(dòng)態(tài)調度還是靜態(tài)調度是很重要的,這會(huì )對系統產(chǎn)生深遠的影響。靜態(tài)調度對時(shí)間觸發(fā)系統的設計很適合,而動(dòng)態(tài)調度對事件觸發(fā)系統的設計很適合。靜態(tài)調度必須事先仔細設計,并要花很大的力氣考慮選擇各種各樣的參數;動(dòng)態(tài)調度不要求事先作多少工作,而是在執行期間動(dòng)態(tài)地作出決定。
在HPMC模塊中,由于需對現場(chǎng)采集到的測量數據進(jìn)行實(shí)時(shí)處理,故對系統的實(shí)時(shí)性提出了很高的要求。若采用μC/OS-II的靜態(tài)優(yōu)先級調度算法,當系統中任務(wù)優(yōu)先級變化時(shí)則顯得無(wú)能為力;同時(shí)通過(guò)在液壓測量控制系統中的應用表明,改進(jìn)后系統的實(shí)時(shí)性得到了極大改善。
結語(yǔ)
本文針對μC/OS-II靜態(tài)調度算法進(jìn)行改進(jìn),在系統中實(shí)現了截止期優(yōu)先調度算法。通過(guò)在液壓測量控制系統中的應用,表明這種改進(jìn)能明顯提高系統的實(shí)時(shí)性;但是改進(jìn)后的算法對系統的內存、CPU等提出了更高的要求,存在一定的局限性。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論