簡介
uC/OS-III(Micro C OS Three 微型的C 語言編寫的操作系統第3版)是一個可升級的,可固化的,基於優先級的實時內核。它對任務的個數無限制。uC/OS-III 是一個第3 代的系統內核,支持現代的實時內核所期待的大部分功能。例如資源管理,同步,任務間的通信等等。然而,uC/OS-III 提供的特色功能在其它的實時內核中是找不到的,比如說完備的運行時間測量性能,直接地發送信號或者消息到任務,任務可以同時等待多個內核對象等。uC/OS-III 是一個可擴展的,可固化的,搶占式的實時內核,它管理的任務個數不受限制。它是第三代內核,提供了現代實時內核所期望的所有功能包括資源管理、同步、內部任務交流等。
uC/OS-III 也提供了很多特性是在其他實時內核中所沒有的。比如能在運行時測量運行性能,直接得發送信號或消息給任務,任務能同時等待多個信號量和消息隊列。
相關參考書籍:
uC/OS-III 也提供了很多特性是在其他實時內核中所沒有的。比如能在運行時測量運行性能,直接得發送信號或消息給任務,任務能同時等待多個信號量和消息隊列。
相關參考書籍:
uC/OS系列的發展歷史
uC/OS (Micro-Controller Operating System)是一個可以基於ROM運行的、可裁剪的、搶占式、實時多任務操作系統,具有高度可移植性,特別適合於微處理器和控制器,是目前應用最廣泛的實時操作系統(RTOS)。
uC/OS最早出自於1992年美國嵌入式系統專家Jean J.Labrosse在《嵌入式系統編程》雜誌的5月和6月刊上刊登的文章連載,Jean J.Labrosse同時把uC/OS 的源碼發布在了該雜誌的B B S 上。
1998年Jean J.Labrosse創建了Micriu公司,並推出了改進版本的uC/OSII。主要增加了堆檢查、勾子函數以及安全的動態內存分配機制等功能。由於安全可靠、移植性好、安全性高,uC/OSII獲得了極大的關注和成功,使其成為比較流行的嵌入式實時操作系統之一。1999年11月推出了uC/OSII的第二個版本,主要增加了事件標誌、互斥信號量兩個重要的任務間通信功能。
2009年推出了改進版本的uC/OSIII。uC/OSII經過多年的使用和大量開發者的反饋,一些很少使用的功能被刪除或者更新,添加了更高效的功能和服務,由此便形成了uC/OSIII。uC/OSIII和uC/OSII相比具有脫胎換骨的改變,在很多方面都有重大改進,最主要的改變應該是增加了時間片輪轉法(round robin)。特別的,uC/OSIII被設計用於32位處理器,但是它也能在16位或者8位處理器中很好的工作。
目前uC/OS已經擁有比較良好的開發生態環境。Micriu公司不僅開發uC/OS內核,還在uC/OS基礎上開發了一系列針對專門應用場合的軟體產品,比較有名的有以下這些:
通信協議棧:uC/CAN、uC/TCP-IP、uC/USB-Device、uC/USB-Host
網絡應用:uC/DHCPc、uC/HTTPs、uC/Modbus
顯示系統:uC/GUI
文件系統:uC/FS
程序模塊:uC/Clk、uC/LCD、uC/Shell
系統調試工具:uC/Probe、uC/Trace
這些專用軟體程序模塊使uC/OS的功能變的越來越強大。同時Micriu公司還針對市面上的主流處理器進行了uC/OS移植,並提供源代碼。可以從官方網站下載移植後的工程源代碼。
uC/OS的3個版本的特性對比
uC/OSIII的新特性介紹
uC/OSIII是一個可裁剪、可固化、可剝奪的多任務系統,沒有任務數目的限制。相比於uC/OSII增加了很多新的特性。
同優先級任務的時間片輪轉調度
這個是uC/OSIII和uC/OSII相比一個重大的改變。uC/OSIII允許一個任務優先級被多個任務使用,當這個優先級處於最高就緒態的時候,uC/OSIII就會輪流調度處於這個優先級的所有任務,讓每一個任務運行一段由用戶指定的時間長度(時間片)。每一個任務可以定義不同的時間片。當任務用不完時間片時可以讓出CPU給另一個任務。
極短的關中斷時間
uC/OSIII可以採用鎖定內核調度的方式而不是關中斷的方式來保護臨界段代碼,這樣就可以將關中斷的時間降到最低,使得uC/OSIII能夠非常快速的響應中斷請求。
同時等待多個內核對象
uC/OSIII允許一個任務同時等待多個事件。也就是說,一個任務能夠掛起在多個信號量或消息隊列上,當其中任何一個等待的事件發生時,等待任務就會被喚醒。
直接向任務發送信號
uC/OSIII允許中斷或者任務直接給另一個任務發送信號,避免創建和使用諸如信號量或事件標誌等內核對象作為向其他任務發送信號的中介,該特性有效地提高了系統性能。
直接向任務發送消息
uC/OSIII允許中斷或者任務直接給另一個任務發送消息,避免創建和使用消息隊列作為中介。
任務級時鐘節拍處理
uC/OSIII的時鐘節拍是通過一個專門任務完成的,定時中斷僅觸發該任務。將延遲處理和超時判斷放在任務級代碼完成,能極大地減少中斷延遲時間。
用匯編語言優化的調度器
uC/OSIII的調度器採用了匯編語言進行了優化,執行速度更快。
任務數目不受限制
uC/OSIII本身是沒有任務數目限制的,但是從實際應用角度考慮,任何數目都會受到CPU所使用的存儲空間的限制,包括代碼空間和數據空間。
優先級數量不受限制
uC/OSIII支持無限多的任務優先級。
內核對象數目不受限制
uC/OSIII允許定義任意數目的內核對象。內核對象指任務、信號量、互斥信號量、事件標誌組、消息隊列、定時器和存儲快等。
運行時可配置
uC/OSIII允許用戶在運行時配置內核。特別的,所有的內核對象如任務、堆棧、信號量、事件標誌組、消息隊列、消息、互斥信號量、內存分區、軟體定時器等都是在運行時分配的,以免在編譯時過度分配。
內置的性能測量(增強)
uC/OSIII相比uC/OSII強化了內置性能測量。能夠測量每一個任務的執行時間、每個任務的堆棧使用情況、任務的執行次數、CPU的使用情況、ISR到任務的切換時間、任務到任務的切換時間、列表中的峰值數、關中斷或鎖調度器的時間。
防止死鎖:所有uC/OSIII的“等待”功能都提供了超時檢測機制,有效避免了死鎖。
以上這些新特性歸納起來就三大點改進:
第一:增加了同優先級任務的時間片輪轉調度。
第二:提高系統的任務調度及切換速度,以系統的實時性進一步提高。
第三:解除了任務、優先級和內核對象的一些限制。
uC/OSII和uC/OSIII的應用場合
uC/OSII和uC/OSIII的應用場合基本是一致的,那就是資源受限制的嵌入式系統,特別是單片機、DSP、ARM7、cortex-M等小型嵌入式系統。
uC/OSIII相對於uC/OSII有重大提升,因此在設計時優先選擇uC/OSIII。
當然了如果設計的系統功能很簡單,那麼選擇哪一個都無所謂了。
如果設計的系統功能簡單,但是對可靠性要求很高,可以優先考慮採用uC/OSII。因為uC/OSII系統功能簡單,開發難度略低,而且經過多年的實踐改進,所以安全性更高。
如果希望系統中每一個任務都完整執行不被其他任務打斷,那麼採用uC/OSIII正合適。
類uC/OS免費實時操作系統簡介
uC/OS開放源代碼,但已經完全免費的。
隨著嵌入式技術的發展,也出現了許多類uC/OS的實時操作系統。其中有很多是完全免費的。這其中比較有代表性的當屬FreeRTOS、RT-Thread。
FreeRTOS是一個迷你的實時操作系統內核。作為一個輕量級的操作系統,功能包括:任務管理、時間管理、信號量、消息隊列、內存管理、記錄功能、軟體定時器、協程等,可基本滿足較小系統的需要。
由於RTOS需占用一定的系統資源(尤其是RAM資源),只有μC/OS-II、embOS、salvo、FreeRTOS等少數實時操作系統能在小RAM單片機上運行。相對μC/OS-II、embOS等商業操作系統,FreeRTOS操作系統是完全免費的操作系統,具有源碼公開、可移植、可裁減、調度策略靈活的特點,可以方便地移植到各種單片機上運行,其最新版本為10.0.1版。
RT-Thread是一個集實時操作系統(RTOS)內核、中間件組件和開發者社區於一體的技術平台,由熊譜翔先生帶領並集合開源社區力量開發而成,RT-Thread也是一個組件完整豐富、高度可伸縮、簡易開發、超低功耗、高安全性的物聯網操作系統。RT-Thread具備一個IoT OS平台所需的所有關鍵組件,例如GUI、網絡協議棧、安全傳輸、低功耗組件等等。經過11年的累積發展,RT-Thread已經擁有一個國內最大的嵌入式開源社區,同時被廣泛應用於能源、車載、醫療、消費電子等多個行業,累積裝機量超過兩千萬台,成為國人自主開發、國內最成熟穩定和裝機量最大的開源RTOS。
RT-Thread擁有良好的軟體生態,支持市面上所有主流的編譯工具如GCC、Keil、IAR等,工具鏈完善、友好,支持各類標準接口,如POSIX、CMSIS、C++應用環境、Javascript執行環境等,方便開發者移植各類應用程序。商用支持所有主流MCU架構,如ARM Cortex-M/R/A, MIPS, X86, Xtensa, C-Sky, RISC-V,幾乎支持市場上所有主流的MCU和Wi-Fi晶片。
評論