基于μC/OS-Ⅱ應用系統的任務(wù)劃分實(shí)例
在一些較復雜的嵌入式應用系統中,個(gè)別任務(wù)代碼會(huì )包含繁瑣的計算算法,運行時(shí)占用大量的CPU處理時(shí)間和資源,嚴重影響μC/OS-Ⅱ系統的實(shí)時(shí)性。對于這樣的任務(wù),可將其按照不同的內部功能劃分為多個(gè)模塊,每個(gè)模塊即為一個(gè)相對獨立的小任務(wù),相互之間通過(guò)任務(wù)通信機制協(xié)調工作。由于需要占用CPU較多的處理時(shí)間,這些任務(wù)幾乎沒(méi)有實(shí)時(shí)性要求,所以通常將其優(yōu)先級設低,以確保強實(shí)時(shí)任務(wù)的正常運行。
例如:當前的μC/OS-Ⅱ系統中有一任務(wù)在調度執行時(shí)會(huì )占用較長(cháng)時(shí)間,導致其運行過(guò)程頻繁被強實(shí)時(shí)任務(wù)打斷,這樣CPU就需要“犧牲”大量時(shí)間和空間用于保存被打斷的任務(wù)現場(chǎng),而整個(gè)系統的實(shí)時(shí)性就會(huì )大大降低,執行效率也大打折扣。該任務(wù)的描述如下:首先根據算法1處理數據X,其次利用算法2處理數據Y,最后將數據X和數據Y通過(guò)算法3得到數據Z。在這種情況下,應將不同的算法處理部分劃分為獨立的子任務(wù),并根據執行順序逐次遞減任務(wù)優(yōu)先級。由于縮短了單個(gè)任務(wù)的執行時(shí)間,任務(wù)的響應時(shí)間也隨之變短,整個(gè)系統的實(shí)時(shí)性得到了提高。
3 應用實(shí)例
作者在參與開(kāi)發(fā)的一個(gè)項目網(wǎng)絡(luò )數據采集系統中使用了μC/OS-Ⅱ進(jìn)行多任務(wù)的管理。該項目基于Freescale公司1994年推出的微處理器MC9S12NE64,主要功能要求網(wǎng)絡(luò )數據采集系統通過(guò)光敏傳感器采集工廠(chǎng)生產(chǎn)設備的多個(gè)狀態(tài)指示燈,以獲取當前設備的工作狀態(tài)信息,隨后通過(guò)UDP包將信息發(fā)送至局域網(wǎng)中PC服務(wù)器處理。此外,技術(shù)人員還能夠通過(guò)串行通信方式對采集系統進(jìn)行測試和維護。該采集系統劃分的主要任務(wù)及其優(yōu)先級設定如表1所示。
生產(chǎn)設備狀態(tài)信息采集及處理任務(wù)優(yōu)先級最高,因為該任務(wù)屬于強實(shí)時(shí)性任務(wù),無(wú)法及時(shí)執行會(huì )使采集系統處于癱瘓狀態(tài)。而同樣屬于實(shí)時(shí)任務(wù)的系統測試維護功能由于實(shí)時(shí)要求并不高,所以?xún)?yōu)先級次之。
A/D模塊驅動(dòng)程序、網(wǎng)絡(luò )模塊通信程序、串口通信程序和FIASH模塊操作程序與各自硬件單元關(guān)系密切,故將它們劃分為獨立的硬件相關(guān)任務(wù)。
采集系統中耗時(shí)最多、處理最復雜的部分是局域網(wǎng)內的數據通信。由于受到芯片存儲空間的限制,作者并沒(méi)有移植現有源碼公開(kāi)的TCP/IP協(xié)議棧,取而代之的是自主研發(fā)了簡(jiǎn)易TCP/IP協(xié)議,并將該協(xié)議棧中每一層分割成為1個(gè)獨立的任務(wù)存在。
4 結語(yǔ)
μC/OS-Ⅱ是一個(gè)公開(kāi)源碼、搶占式、多任務(wù)的嵌入式實(shí)時(shí)操作系統,自1992年面世以來(lái),已應用于上百種產(chǎn)品。與一些商用嵌入式操作系統相比,它源代碼結構清晰,易于移植和裁剪,具有很大的發(fā)展空間。本文在分析μC/OS-Ⅱ任務(wù)管理機制的基礎上,對μC/OS-Ⅱ的任務(wù)劃分進(jìn)行了初步探究,闡述了一些任務(wù)劃分的方法:“劃分與硬件模塊相關(guān)的任務(wù)”、“劃分強實(shí)時(shí)性任務(wù)”、“分割耗時(shí)較多的任務(wù)”。最后,結合開(kāi)發(fā)實(shí)踐給出了基于μC/OS-Ⅱ應用系統的任務(wù)劃分實(shí)例。
評論