為什么你應(yīng)該考慮RTOS?對(duì)大多數(shù)人來說,這可以歸結(jié)為知道“你最擅長什么”。如果你總是用裸機(jī)編程,那么總是用那種方式編程就成了慣例。如果你從未使用過RTOS,你可能不會(huì)意識(shí)到RTOS可以給嵌入式開發(fā)項(xiàng)目帶來的好處。雖然它們更加強(qiáng)大和復(fù)雜,但是使用RTOS并不一定是更耗時(shí)的開發(fā)路線。
當(dāng)使用功能有限的小型系統(tǒng)時(shí),在裸機(jī)上使用超級(jí)循環(huán)架構(gòu)來調(diào)度任務(wù)可能是一個(gè)非常合適的解決方案,但是當(dāng)對(duì)調(diào)度有更高的要求,并且執(zhí)行時(shí)間變得更加復(fù)雜時(shí),可能是時(shí)候考慮RTOS了。
更大的靈活性
超級(jí)循環(huán)體系結(jié)構(gòu)的一個(gè)關(guān)鍵問題是定時(shí)和響應(yīng)時(shí)間,因?yàn)樗鼈兪怯纱a結(jié)構(gòu)決定的,如果進(jìn)行修改或添加,它們會(huì)發(fā)生變化。相比之下,RTOS通常能夠?qū)崿F(xiàn)更大的調(diào)度靈活性?;趦?yōu)先級(jí)的搶先式RTOS允許根據(jù)任務(wù)的實(shí)時(shí)要求對(duì)任務(wù)進(jìn)行優(yōu)先級(jí)排序。具有嚴(yán)格時(shí)間約束的任務(wù)能夠優(yōu)先于那些具有更大調(diào)度靈活性的任務(wù),從而提高應(yīng)用程序?qū)r(shí)間關(guān)鍵事件的響應(yīng)能力。雖然可以在裸機(jī)上實(shí)現(xiàn)某種形式的搶先調(diào)度,但它的范圍有限。
簡(jiǎn)化集成
即使不要求實(shí)時(shí)響應(yīng),使用RTOS也可以簡(jiǎn)化集成。如果你的應(yīng)用程序?qū)硇枰蚩赡苄枰c文件系統(tǒng)、TCP/IP和GIU等組件進(jìn)行交互,這些組件可以作為單獨(dú)的任務(wù)簡(jiǎn)單地添加到系統(tǒng)中。裸機(jī)應(yīng)用直接與處理器寄存器交互,而RTOS和/或硬件抽象層(HAL)位于裸機(jī)和應(yīng)用之間。嵌入式開發(fā)人員與RTOS和Hal互動(dòng),而不是與裸機(jī)互動(dòng)。因此,RTOS的模塊化設(shè)計(jì)使得使用所提供的RTOS資源與任務(wù)和驅(qū)動(dòng)程序進(jìn)行通信變得容易,從而縮短了開發(fā)時(shí)間。
更少的編碼,更多的代碼重用
RTOS提供的資源還支持簡(jiǎn)單的任務(wù)創(chuàng)建、銷毀、同步以及任務(wù)和處理器資源之間的通信。所需要的只是對(duì)RTOSAPI的理解。這是一個(gè)一致的接口,一旦掌握,就可以在應(yīng)用程序和處理器之間實(shí)現(xiàn)代碼重用和可移植性。RTOS還允許將應(yīng)用程序分解成更小的自治任務(wù),每個(gè)任務(wù)在其自己的上下文中執(zhí)行,這可以降低復(fù)雜性,并有助于調(diào)試和驗(yàn)證。
為什么要學(xué)習(xí)FreeRTOS?
RTOS應(yīng)該易于使用、編譯并受多種架構(gòu)支持。FreeRTOS內(nèi)核是世界上最流行的嵌入式RTOS,擁有龐大的用戶群。FreeRTOS與處理器和編譯器無關(guān),因此提供跨平臺(tái)支持,目前支持超過35種不同的架構(gòu)供嵌入式開發(fā)人員使用。顧名思義,F(xiàn)reeRTOS內(nèi)核可以從FreeRTOS網(wǎng)站免費(fèi)下載和使用,在M.I.T.許可下分發(fā)。