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