說一說RTOS
RTOS 即Real-time operating system,實時操作系統(tǒng),這種操作系統(tǒng)比分時操作系統(tǒng)實時性強,線程切換速度快,線程切換時間可控,為了保證實時性,實時操作系統(tǒng)一般都是搶占型內(nèi)核,允許高優(yōu)先級的線程搶占CPU,優(yōu)先級低的排隊執(zhí)行。普通的單片機程序只有一個while循環(huán),功能比較多的時候這個循環(huán)代碼很復雜,閱讀性差,不好維護。而RTOS可以創(chuàng)建線程,每個線程有自己的while循環(huán),功能可以模塊化設(shè)計。
1、功能擴展性好,加個功能加個線程就好了,非常方便。
2、單片機利用率高,減少單片機空轉(zhuǎn)。
3、可以像電腦端一樣編程,電腦程序員方便地做單片機開發(fā)。進程間通訊,內(nèi)存管理等隨便用。
4、代碼閱讀方便,各個線程很清晰。
5、部分RTOS自帶各種功能模塊,比如網(wǎng)絡,文件系統(tǒng),UI等模塊。選擇使用操作系統(tǒng)基本上都是因為這個優(yōu)點。
使用RTOS的缺點:
1、實時性變差,有人說RTOS不就是實時操作系統(tǒng)嘛,怎么會變差呢,有了操作系統(tǒng)單片機肯定要花費不少時間在操作系統(tǒng)上,比如線程切換是需要時間的等等。實時操作系統(tǒng)是相對非實時操作系統(tǒng)來說的。沒有操作系統(tǒng)的那個while才是最實時的。
2、內(nèi)存開銷大,包括RAM和Flash,增加了操作系統(tǒng)代碼量就增多了,占用更多的Flash空間,每個任務棧占用了很多RAM,每個??隙ǘ加行└挥嗟?,也就是有不少的棧空間是空閑的,占用了寶貴的RAM空間。
3、出現(xiàn)BUG時不好調(diào)試,雖然大部分單片機都有在線仿真功能。因為每個線程都有自己的線程棧,查找起來麻煩一些。
4、操作系統(tǒng)為了安全運行,必須開關(guān)全局中斷,在操作系統(tǒng)里面有大量的開關(guān)全局中斷操作。全局中斷只要關(guān)閉就會對實時性有一定的影響。比如恰好關(guān)閉中斷時事件到來,這時候是不能響應的。
5、移植操作系統(tǒng)需要一些匯編知識,稍有些難度,好在官方都有實際例子可以借鑒。
記得09年的時候在51單片機上跑RTOS,51單片機主頻低,能跑是能跑,占用比較多資源,沒有多少空間給功能開發(fā),也就學學玩玩,實際應用不現(xiàn)實。如果要使用RTOS還是在主頻高一些,存儲資源豐富的ARM上跑比較合適,比如STM32。
評論