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