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