最近正好又重新回顧了一下這幾款OS,心裏一直有個疑問,明明這幾款RTOS是這麼像,爲什麼還要搞出這麼多個來呢,最後的結論就是,管他呢,反正哪個用的順手用哪個。
本篇博客就來細數這幾個RTOS的特點。
以下內容均來自官方網站或者官方手冊Feature的Google翻譯的加了我的一些調整,沒有任何主觀成分。
未經同意禁止轉載,尊重別人的勞動成果!!!https://blog.csdn.net/wangyijieonline/article/details/77584726
1. FreeRTOS
FreeRTOS是專爲小型嵌入式系統設計的可擴展的實時內核。
亮點包括:
- 微小的封裝形式。
- 免費的RTOS調度程序
- 免費嵌入式軟件源代碼。
- 免版稅。
- 搶佔式,協作式和混合配置選項,可選時間分片。
- SafeRTOS衍生產品對代碼完整性提供了高度的信心。
- 包括一個爲低功耗應用設計的tickless模式。
- 可以使用動態或靜態分配的RAM來創建RTOS對象(任務,隊列,信號量,軟件定時器,互斥體和事件組)。
- 官方支持>30個嵌入式系統架構(以ARM7和ARM Cortex-M3爲一體架構)。
- FreeRTOS-MPU支持ARM Cortex-M3內存保護單元(MPU)。
- 設計小巧,簡單易用。通常,RTOS內核二進制映像將在4K到9K字節的區域內。
- 可移植性非常好的源代碼結構,主要用C.
- 支持實時任務和協同程序。
- 直接到任務通知,隊列,二進制信號量,計數信號量,遞歸信號量和互斥體,用於任務之間的通信和同步,或實時任務和中斷之間。
- 創新事件組(或事件標誌)實施。
- 具有優先級繼承的互斥體。
- 高效的軟件定時器。
- 強大的執行跟蹤功能。
- 堆棧溢出檢測選項。
- 免費監控的論壇支持或可選的商業支持和許可。
- 對可創建的實時任務數量沒有軟件限制。
- 對可以使用的任務優先級的數量沒有軟件限制。
- 對任務優先級分配沒有限制 - 可以爲多個實時任務分配相同的優先級。
- 許多支持的架構的免費開發工具。
- 從標準的Windows主機開發。
2. uCOS家族(I/II/III)
μC/ OS-II和μC/ OS-III是搶佔式,高度便攜式和可擴展的實時內核。這些內核旨在便於在大量CPU架構上使用,這些內核是μC/ OS實時操作系統的關鍵組件。
關鍵價值(Key Values):
- 可移植性。 提供前所未有的易用性,μC/OS內核提供完整的源代碼和深入的文檔。 μC/ OS內核運行在大量處理器架構上,端口可供下載。
- 可擴展性。 μC/ OS內核允許無限制的任務和內核對象。內核的內存佔用可以縮小,僅包含應用程序所需的功能,通常爲6-24 KB的代碼空間和1KB的數據空間。
- 可靠。 μC/ OS內核包括減少開發時間的調試功能。內核提供廣泛的範圍檢查,包括檢查API調用中傳遞的指針,來自ISR的任務級服務,允許範圍內的參數以及有效的指定選項。
- 高效。 Micrium的內核還包括有價值的運行時統計信息,使您的應用程序的內部可視化。 識別性能瓶頸,並在開發週期的早期優化電源使用。
μC/ OS內核的特性包括以下亮點(Highlights):
- 搶佔式多任務實時內核,可選擇循環調度
- 提供完整,乾淨,一致的源代碼,具有深入的文檔。
- 高可擴展性:無限數量的任務,優先級和內核對象
- 同時等待多個內核對象
- 直接向任務發送信號/消息
- 資源高效:6K至24K字節代碼空間,1K +字節數據空間)
- 非常低的中斷禁用時間
- 廣泛的性能測量指標(可配置)
- 可用於關注安全型應用
下表顯示了µC/OS 多年來的演變, 比較了每個版本中可用的功能。
特點(Features) | µC/OS | µC/OSII | µC/OSIII |
---|---|---|---|
發佈年份 | 1992 | 1998 | 2009 |
提供源代碼 | √ | √ | √ |
書(Book) | √ | √ | √ |
搶佔式多任務 | √ | √ | √ |
最大任務量 | 64 | 255 | 無限 |
每個優先級別的任務數 | 1 | 1 | 無限 |
時間片輪轉調度 | × | × | √ |
信號量 | √ | √ | √ |
互斥信號量 | × | √ | √(可嵌套) |
事件標誌組 | × | √ | √ |
消息郵箱 | √ | √ | ×(不需要) |
消息隊列 | √ | √ | √ |
固定大小的內存管理 | × | √ | √ |
直接向任務發送信號量 | × | × | √ |
無需調度的信號發送選項 | × | × | √ |
直接向任務發送消息 | × | × | √ |
軟件定時器 | × | √ | √ |
任務掛起/恢復 | × | √ | √(可嵌套) |
防止死鎖 | √ | √ | √ |
可裁剪 | √ | √ | √ |
代碼量 | 3K-8K | 6K-26K | 6K-24K |
數據量 | 1K+ | 1K+ | 1K+ |
代碼可固化 | √ | √ | √ |
運行時可配置 | × | × | √ |
編譯時可配置 | √ | √ | √ |
支持內核對象的 ASCII 命名 | × | √ | √ |
同時等待多個內核對象 | × | √ | √ |
任務寄存器 | × | √ | √ |
內置性能測試 | × | 基本 | 增強 |
內置追蹤點 | × | × | √ |
用戶可定義的鉤子函數 | × | √ | √ |
POST 操作可加時間戳 | × | × | √ |
內核察覺式調試 | × | √ | √ |
用匯編語言優化的調度器 | × | × | √ |
捕獲退出的任務 | × | × | √ |
任務級時鐘節拍處理 | × | √ | √ |
系統服務函數的數目 | ~20 | ~90 | ~75 |
3. RT-Thread
Tips:在markdown中實現段落縮進
半方大的空白 或 
全方大的空白 或 
不斷行的空白格 或 
RT-Thread是一款來自中國的開源嵌入式實時操作系統,由國內一些專業開發人員從2006年開始開發、維護,除了類似FreeRTOS和UCOS的實時操作系統內核外,也包括一系列應用組件和驅動框架,如TCP/IP協議棧,虛擬文件系統,POSIX接口,圖形用戶界面,FreeModbus主從協議棧,CAN框架,動態模塊等,因爲系統穩定,功能豐富的特性被廣泛用於新能源,電網,風機等高可靠性行業和設備上,已經被驗證是一款高可靠的實時操作系統。
RT-Thread實時操作系統遵循GPLv2+許可證,實時操作系統內核及所有開源組件可以免費在商業產品中使用,不需要公佈應用源碼,沒有任何潛在商業風險。
RT-Thread實時操作系統核心是一個高效的硬實時核心,它具備非常優異的實時性、穩定性、可剪裁性,當進行最小配置時,內核體積可以到 3k ROM 佔用、1k RAM 佔用。
- 任務/線程調度
在RT-Thread中線程是最小的調度單位,線程調度算法是基於優先級的全搶佔式多線程調度算法,支持256個線程優先級(也能通過配置文件更改爲最大支持32個或8個線程優先級),0優先級代表最高優先級,255優先級留給空閒線程使用;支持創建相同優先級線程,相同優先級的線程採用可設置時間片的輪轉調度算法;調度器尋找下一個最高優先級就緒線程的時間是恆定的(時間複雜度是1,即O(1))。系統不限制線程數量的多少,只和硬件平臺的具體內存相關。
- 任務同步機制
系統支持semaphore(信號量)、mutex(互斥鎖)作爲線程間同步機制。mutex採用優先級繼存方式以解決優先級翻轉問題。semaphore的釋放動作可安全用於中斷服務例程中。同步機制支持線程按優先級等待或按先進先出方式獲取信號量或互斥鎖。
- 任務間通信機制
系統支持event(事件)、mbox(郵箱)和MessageQueue(消息隊列)等通信機制。event支持多事件”或觸發”及”與觸發”,適合於線程等待多個事件情況。mbox中一封郵件的長度固定爲4字節,效率較MessageQueue更爲高效。通信設施中的發送動作可安全用於中斷服務例程中。通信機制支持線程按優先級等待或按先進先出方式獲取。
- 時間管理
系統使用時鐘節拍來完成同優先級任務的時間片輪轉調度;線程對內核對象的時間敏感性是通過系統定時器來實現的;定時器支持軟定時器及硬定時器(軟定時器的處理在系統線程的上下文中,硬定時器的處理在中斷的上下文中);定時器支持一次性超時及週期性超時。
- 內存管理
系統支持靜態內存池管理及動態內存堆管理。從靜態內存池中獲取內存塊時間恆定,當內存池爲空時,可把申請內存塊的線程阻塞(或立刻返回,或等待一段時間後仍未獲得內存塊返回。這取決於內存塊申請時設置的等待時間),當其他線程釋內存塊到內存池時,將把相應阻塞線程喚醒。動態堆內存管理對於不同的系統資源情況,提供了面向小內存系統的小內存管理算法及大內存系統的SLAB內存管理算法。
- 設備管理
系統實現了按名稱訪問的設備管理子系統,可按照統一的API界面訪問硬件設備。在設備驅動接口上,根據嵌入式系統的特點,對不同的設備可以掛接相應的事件,當設備事件觸發時,通知給上層的應用程序。
其他文檔信息參見:
RT-Thread 文檔中心
RT-Thread這個系統還是有很多自己的想法在裏面的,比如Finish,設備樹等都是參照Linux的思想來設計的。
4. RTX
Keil RTX是爲ARM和Cortex-M設備設計的免版稅,確定性的實時操作系統。它允許您創建同時執行多個功能的程序,並幫助創建更好的結構和更容易維護的應用程序。
特徵
- 具有源代碼的免版權,確定性RTOS
- 靈活的調度:循環,搶佔和協作
- 具有低中斷延遲的高速實時操作
- 爲資源有限的系統提供小封裝
- 無限數量的任務每個具有254個優先級
- 無限數量的郵箱,信號量,互斥量和計時器
- 支持多線程和線程安全操作
- 內核感知調試支持MDK-ARM
- 使用μVision配置嚮導的基於對話框的設置
優點
儘管無需實時操作系統(通過在超級循環中執行一個或多個功能)就可以創建實時程序,但KeilRTX爲您解決的RTOS有許多調度,維護和計時問題。
注意事項
所有MDK-ARM版本都包含RTX源代碼。
這個系統我只是用過一次,感覺最大的特點就是用起來簡單,不需要那麼多的注意事項,拿來就用的感覺,還有就是沒有關中斷的操作,所以你懂的~
最後說一下我的感受吧,其實uCOS和FreeRTOS差不多(複雜度和功能),RT-Thread挺好用的,但是說實話我沒有深入去研究過,感覺上手好用度一般,RTX這個東西太簡單了,我有點不放心,不過據說效率上Very Good.
所以呢,其實我比較推薦FreeRTOS,其次是RT-Thread(次要推薦其實還是資料不多的原因,不過RT-Thread有一個丘丘羣可以加一下,87088566,創始人就是羣主),畢竟uCOS這玩意萬一要真跟你談談版權的事,那估計就被牽着鼻子走了,尤其是自己創業的還是要注意的。
附上幾篇我當時學習時用到的資料,感覺挺好的,分享給大家,其實大家要是願意自己找,也都能在網上找到。