作者:鳳舞天 對很多只具有MCU51,Cortex基礎的網(wǎng)友來(lái)說(shuō),學(xué)習RTOS是一件痛苦的事情,以uCOS為例,博主以前看過(guò)2遍,雖然有些概念,但因為涉及內容較多,理解不深,加上沒(méi)做項目,過(guò)段時(shí)間就忘記了。這次為了做msPLC系統:一種網(wǎng)絡(luò )化PLC,需要解決網(wǎng)絡(luò )通訊,特意引入RTOS實(shí)現任務(wù)分離,所以把目前資料最為廣泛的uCOS與博主自己設計的“實(shí)用單片機系統MS5”結合起來(lái),uCOS具備RTOS的多任務(wù),并且資料豐富,MS5博主自己開(kāi)發(fā)的,最為熟悉,并且在單任務(wù)下代碼簡(jiǎn)潔,功能齊全,尤其是對時(shí)間分割管理、消息機制、界面設計上,都有一定的模式,所以可以理解為基于MS5下,把單任務(wù)變成多任務(wù)處理,比較完美的結合。 uCOS可以認為是比較標準的一種RTOS,就RTOS來(lái)說(shuō),它不算復雜,但對于絕大部分只有單任務(wù)設計經(jīng)驗的嵌入式人員,已經(jīng)足夠復雜,主要有幾點(diǎn)原因: 1、剛接觸RTOS思想,對很多名詞,功能、變量都不熟悉,這些一多就混淆了 2、文件結構、頭文件定義復雜,條件編譯、函數指針、結構體過(guò)多 3、外圍函數過(guò)多,任務(wù)核心不突出 基于以上三點(diǎn),本人以普通嵌入式人員的思維,做以下幾點(diǎn)精簡(jiǎn): 1、去掉一般項目不常用的函數,比如信號量事件(SEM)、開(kāi)關(guān)量事件(MUX)、標記事件(FLAG)、內存管理(MEM),只保留消息郵箱(MBox)和消息隊列(MQ)。 2、精簡(jiǎn)頭文件,按常規寫(xiě)法修改,去掉不必要的條件編譯 3、去掉統計任務(wù)(StatTask)和空閑任務(wù)(IdleTask),系統內部精簡(jiǎn)掉相關(guān)的變量,加入MS5,作為它的IdleTask,設置為最低優(yōu)先級。 4、加入MBox和MQ例子,讓其可以在Keil的Debug的UART1窗口下直接調試模擬。 初學(xué)者基于精簡(jiǎn)版本的uCOS,對照書(shū)本,學(xué)起來(lái)應該更容易,起碼不會(huì )有強烈的排斥心里,在理解了uCOS內核后,再看完整的源碼,就非常容易。 msOS今后將基于MS5為基礎,引入其他免費公開(kāi)的RTOS的一些優(yōu)點(diǎn),比如FreeRTOS和RT-Thread,形成自己的風(fēng)格,避免版權,主要超工業(yè)自動(dòng)化方向進(jìn)化,專(zhuān)注于工業(yè)自動(dòng)化領(lǐng)域。 附件中uCOS.rar為精簡(jiǎn)后的uCOSII msOS為基于MS5結合精簡(jiǎn)后的uCOS的msOS ![]() ![]() |