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