RTOS概述


概述


  如上圖所示,裸機也叫做前后台系統,中斷屬於前台系統,while(1)循環中的叫做后台系統,任務是順序執行的。而RTOS(Real Time OS)即實時操作系統。在RTOS支持的系統中,每個任務均有一個優先級(類似前面章節的中斷搶占優先級),而當前正在運行的任務永遠都是已經就緒的最高優先級任務,如上圖中所示在裸機中假設在某種情況下需要馬上運行task4,但是卻不能夠馬上響應,需要輪到task4執行時,才可以運行,這樣就不實時了,而且使用中斷可能也不合適,因為中斷處理函數中代碼執行的代碼越少越好,也需要避免使用浮點運算,局限太大了。而實時操作系統可以通過一些任務管理的方式(搶占或掛起)讓需要優先運行的任務立即運行,除了中斷能夠打斷其他的任務都不能夠,這也是被稱為實現系統的原因,任務管理后面再進行補充。
  使用實時操作系統還需要額外的ROM/RAM開銷,2~5%的CPU額外負荷,以及內核的費用,但是嵌入式實時操作系統提高了系統的可靠性;線程方式的並發任務處理,解決模塊化問題,同時保證實時性;官方提供了網絡協議棧、文件系統、圖形界面(ucGUI、emWin、QT....)的支持;嵌入式實時操作系統充分發揮了32位CPU的多任務潛力。

用RTOS做嵌入式開發的優勢

  1.並發性
  裸機程序並發工作效率低,不可避免的在主程序中會有一個超級大的 while(1) 循環,這里面幾乎包含整個項目的所有業務邏輯。因為每個業務邏輯里面都會有delay這樣的循環等待函數,這樣導致了所有的業務邏輯幾乎都是串行起來工作的。這個時候CPU就會有很多時間都浪費在了延時函數里,一直在空轉,導致軟件的並發效率非常差;
  2.模塊化:高內聚、低耦合的原則
  從軟件工程的角度,我們在做軟件開發時,都會強調高內聚、低耦合的原則。而裸機的模塊化開發難度非常大,模塊間的耦合較重,這也導致了無法在大型項目使用裸機來開發。還是剛才 main 函數中大 while(1) 的例子,可以想象到那么多功能都緊緊的擠在一個函數里,不可拆分,模塊化開發的困難重重;
舉一個非常貼切的例子,在一些使用看門狗的項目中,如果使用delay延時函數,那得注意點,萬一延時過長,主函數來不及喂狗,看門狗就被觸發了。最后會產生這樣一種感覺,一個簡簡單單的delay還得考慮喂狗功能,裸機開發時操的心太多了,自然無法應用在大型項目中;
  3.生態
  很多高級軟件組件,必須依賴於操作系統來實現;
  4.實時性
  軟件的實時性在一些領域會有一定的要求,軟件的每個步驟必須在指定的時間被觸發。工控領域就是最常見到的場景,如果實時性無法保證,機械設備可能就無法按照指定時序要求去動作,以至於發生機械事故,甚至會威脅到人的生命。回過來接着看裸機軟件,如果軟件變得龐大以后,可以想象到,主程序中那么大的一個 while(1) 循環,代碼耦合嚴重,到處都是delay延時,要保證實時性幾乎是不可能的;
  5.可重用性
  在嵌入式碎片化極其嚴重的時代,各式各樣的芯片,想要讓同樣的代碼,在裸機環境下同時適配不同的硬件,難度非常大。這樣也就導致了裸機的代碼會過多的依賴於底層硬件,重復造輪子的過程也就不可避免。

常見RTOS優勢對比

&esmp;&esmp;常見的RTOS有UCOS/FreeRTOS/RT-Thread,其中RT-Thread是國產的,它們的年限都比較長了,在市面上都有一定的知名度,用過的人比較多。
&esmp;&esmp;1. 基本功能、性能
&esmp;&esmp;各家 RTOS 差異很小,可比性並不是很大;
&esmp;&esmp;2. 易用性/可讀性
&esmp;&esmp;其中FreeRTOS做的比較差。UCOS可讀性強,注釋很全。做的最好的是RT-Thread,它是類Linux的代碼風格,面向對象的設計模式,代碼簡潔易懂。在保證了體積(最小 ROM:3K RAM:1.5K)的同時,還借鑒了 Linux 的設備驅動框架、虛擬文件系統、Shell 等功能,設計更加優雅;
&esmp;&esmp;3.組件豐富性
&esmp;&esmp;RT-Thread比起傳統UCOS、FreeRTOS 不僅僅在基礎功能上多而全,多達50個以上的可重用軟件組件,還有很多物聯網組件,對於物聯網產品幾乎做到開箱即用。RT-Thread還可以運行PythonJava、Lua 這些高級語言的腳本,進一步降低開發難度;
&esmp;&esmp;4.開發資料
&esmp;&esmp;這塊UCOS做的最好,還有配套相關的書籍,FreeRTOS屬於后起之秀,網上也有很多相關資料。RT-Thread 這塊之前還是略顯薄弱的。因此,入門RTOS最好的系統就首選UCOS。

官方網址

RT-Thread官網網址:https://www.rt-thread.org/
UCOS官網網址:https://www.micrium.com/ 
FreeRTOS官網網址:https://www.micrium.com/ 

UCOS-iii stm32f4xx keil5模板

鏈接:https://pan.baidu.com/s/1A0eVfchu0kTflyypQGSTkw 
提取碼:emat 
復制這段內容后打開百度網盤手機App,操作更方便哦


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM