1. 程式人生 > >聊一聊嵌入式中常用的實時作業系統(RTOS)

聊一聊嵌入式中常用的實時作業系統(RTOS)

嵌入式Linux系統 VS RTOS

一提到嵌入式的作業系統,自然繞不開嵌入式Linux作業系統。嵌入式linux 是將日益流行的Linux作業系統進行裁剪修改,使之能在嵌入式計算機系統上執行。它效能優異,軟體移植容易,程式碼開放,有許多應用軟體支援,應用產品開發週期短,新產品上市迅速,所以在不同行業,尤其是消費類電子產品中廣泛使用。

  然而即便如此,嵌入式Linux作業系統也有其難以彌補的缺陷:

- Linux作業系統有龐大的核心,對任何中斷指令的響應都需要一個複雜的處理過程,對一些需要快速響應的場合顯得有些力不從心。

- 軟硬體成本較高,需要功能強勁的MCU和外部資源,不適用於低成本的產品

- 相對而言,配備嵌入式Linux會導致功耗較高,不適用於功耗要求嚴格應用場合

因為上述提及的一些缺陷,所以在對實時性要求比較高,成本控制比較嚴格或者低功耗應用等場合,常常會使用實時作業系統RTOS。(注:原生Linux系統是分時作業系統,一些衍生的嵌入式Linux進行了優化和改進,也能做到很高的實時性,也可以認為是RTOS)。

簡單來說,實時作業系統(RTOS)是指當外界事件或資料產生時,能夠接受並以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系 統作出快速響應,並控制所有實時任務協調一致執行的作業系統。主要特點如下:

1)高精度計時系統

計時精度是影響實時性的一個重要因素。在實時應用系統中,經常需要精確確定實時地操作某個裝置或執行某個任務,或精確的計算一個時間函式。這些不僅依賴於一些硬體提供的時鐘精度,也依賴於實時作業系統實現的高精度計時功能。

2)多級中斷機制

一個實時應用系統通常需要處理多種外部資訊或事件,但處理的緊迫程度有輕重緩急之分。有的必須立即作出反應,有的則可以延後處理。因此,需要建立多級中斷巢狀處理機制,以確保對緊迫程度較高的實時事件進行及時響應和處理。

3)實時排程機制

實時作業系統不僅要及時響應實時事件中斷,同時也要及時排程執行實時任務。

RTOS使用現狀

一起來看一份某調查機構關於嵌入式作業系統的調研結果。(摘自2015全球嵌入式市場分析報告)

調查使用者分佈

作業系統佔有率

下一年度考慮使用的作業系統比例

從調查結果可以看到市場佔用率前兩名分別為uc/OS(II + III 27%)和FreeRTOS(22%)。這兩款RTOS即便在國內用的比較多。除此之外,從我瞭解的情況來說,國內也有不少人士使用Keil RTX,TI的DSP/BIOS。另外由國內人士自己開發的RT-Thread近幾年也越來越多人使用。

uc/OS

俗話說得好,早起的鳥兒有蟲吃。uc/OS能夠在國內普及的很大一個原因是因為uc/OS比較早被介紹到中國,早在七八年前小編上大學期間,就有uc/OS的課程,教材用的是邵貝貝教授翻譯的《嵌入式實時作業系統uC/OS-II》。這本書也讓許多行業人士入了RTOS的門。另外uc/OS教材案例豐富,官網也有提供基於不同嵌入式晶片移植好的demo,交流論壇也有不少,大大降低了使用門檻。詳細介紹就不貼上,相信大家再熟悉不過了。然而商業上使用uc/OS是需要付版權費的,而且費用不菲。所以雖然國內用的人很少,但是真正向Micrium公司購買版權的公司全中國估計不超過10個(至少2012年的時候,只有兩家公司有購買版權)。官網連結: 

https://www.micrium.com/

FreeRTOS

FreeRTOS歐美用得比較多,以前的公司有個與歐美同事合作專案,人家點名要求使用FreeRTOS。國內目前用得並不算太多,但是發展趨勢不錯。

同uc/OS類似,FreeRTOS也是一個輕量級的實時作業系統核心,功能包括:任務管理、時間管理、訊號量、訊息佇列、記憶體管理、記錄功能、軟體定時器、協程等,可基本滿足較小系統的需要。官網的移植demo和教程現在也非常全面了,基本上的嵌入式晶片都已經覆蓋,可以前往官網下載。相比uc/OS,FreeRTOS的主要優勢在於:

- 核心檔案佔用RAM,ROM的要求少一些(其實差異不大,但是對於片內資源較少的MCU也算是一種優勢)

- 支援協程,可以共享stack,進一步降低RAM的消耗

- 支援有同等優先順序的任務,可以使用時間片輪轉的方式進行排程

- 當然,最終要的是商業使用是免費的

TI DSP/BIOS

DSP/BIOS是TI公司特別為其TMS320C6000TM,TMS320C5000TM和TMS320C28xTM系列DSP平臺(貌似現在已經支援更多TI的晶片)所設計開發的一個尺寸可裁剪的實時多工作業系統核心,具有實時作業系統的諸多功能,如任務的排程管理、任務間的同步和通訊、記憶體管理、實時時鐘管理、中斷服務管理、外設驅動程式管理等。如果你有使用上述DSP晶片,建議你使用這款RTOS。之前使用過一段時間,我覺得它最大的優勢在於TI已經將DSP/BIOS整合到了CCS開發環境中了,你可以通過視覺化介面去配置任務,中斷,時鐘,資源分配等,簡單易上手。

RT-Thread

RT-Thread是一款來自中國的開源嵌入式實時作業系統,由國內一些專業開發人員從2006年開始開發、維護,除了類似FreeRTOS和UCOS的實時作業系統核心外,也包括一系列應用元件和驅動框架,如TCP/IP協議棧,虛擬檔案系統,POSIX介面,圖形使用者介面,FreeModbus主從協議棧,CAN框架,動態模組等,因為系統穩定,功能豐富的特性被廣泛用於新能源,電網,風機等高可靠性行業和裝置上,已經被驗證是一款高可靠的實時作業系統。

        RT-Thread實時作業系統遵循GPLv2+許可證,實時作業系統核心及所有開源元件可以免費在商業產品中使用,不需要公佈應用原始碼,沒有任何潛在商業風險。這款RTOS只在若干年前關注過,一直沒親自體驗過,希望這款國人自己開發的RTOS能越走越遠,真正開啟下一代作業系統演化。官網連結:http://www.rt-thread.org/

本期就這樣了。覺得寫得不錯的話,歡迎關注本公眾號。