【STM32H7】第3章 ThreadX操作系統介紹


論壇原始地址(持續更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99514

第3章   ThreadX操作系統介紹

本章節介紹 ThreadX 操作系統,讓大家對 ThreadX 有一個整體的了解。

3.1 初學者重要提示

3.2 Express Logic公司介紹

3.3 ThreadX簡介

3.4 ThreadX各行各業應用案例

3.5 ThreadX論壇

3.6 總結

 

 

3.1   初學者重要提示

  1.   ThreadX是小型RTOS的巔峰之作,通過了各行各業的安全認證,並且大部分都是最高安全標准。
  2.   ThreadX為其微內核架構(picokernel™ architecture),搶占閥值調度(preemption-threshold™ scheduling), 事件鏈(event-chaining™)注冊了商標。

3.2   Express Logic公司介紹

ThreadX的作者是William lamie(同樣是Nucleus RTOS的原始作者,於1990年發布)。1996的時候成立了Express Logic,並於1997發布首版ThreadX RTOS。

  •   ThreadX4發布於2001年,ThreadX5發布於2005年,ThreadX6發布於2020年。
  •   FileX – ThreadX的嵌入式文件系統於1999年發布首版。
  •   NetX – ThreadX的嵌入式TCP / IP網絡協議棧於2002年發布首版。
  •   USBX – ThreadX的嵌入式USB協議棧於2004年發布首版。
  •   2009年推出了適用於SMP多核環境的ThreadX。
  •   2011年發布支持動態應用加載的ThreadX Modules。
  •   GUIX – ThreadX的嵌入式UI於2014年發布首版。
  •   Microsoft在2019年4月18日以未公開的價格購買了Express Logic。

3.2.1  FileX文件系統

ThreadX的文件系統非常強勁,通過了各行各業的高等級安全認證。其它文件系統別說安全認證了,安全措施都不多,甚至沒有。

 

規格如下:

 

再看API,一個文件系統竟然提供了230多個,僅異常處理的API就有20個(一個文件一個API)

 

更詳細的介紹看此貼:https://rtos.com/solutions/filex/embedded-file-system/

3.2.2  NetX網絡協議棧

ThreadX的網絡協議棧對其它網絡協議棧幾乎是碾壓性優勢。一張圖,幾乎涵蓋了我們日常項目大部分應用:

 

各個行業的安全認證:

 

物聯網協議方向安全認證:

 

加密庫也做了認證:

 

更多介紹可以看此貼:https://rtos.com/solutions/netx-duo/embedded-network-stack/

3.2.3  USBX協議棧

USB協議棧也不錯,日常用的功能也齊全

 

規格如下:

 

更多介紹可以看此貼:https://rtos.com/solutions/usbx/embedded-usb/

3.2.4  GUIX圖形界面

GUIX用於圖形界面設計,功能強勁,特別是配套的圖形界面開發軟件GUIX Studio,可以添加設置各種主題,各種界面效果,各種字體展示,各種圖片格式設置,真的是一條龍,非常方便。而且GUIX有各種安全認證。

GUIX通過了醫療認證IEC-62304 Class C,汽車認證IEC-61508 ASIL D,工業認證IEC-61508 SIL 4和運輸/鐵路認證EN50128,表明GUIX可用於安全關鍵型系統。

 

規格如下:

 

更詳細的介紹地址:https://rtos.com/solutions/guix/embedded-gui/

3.2.5  LevelX擦寫均衡保護層

LevelX為NAND和NOR型Flash提供擦寫均衡支持,並且對於NAND型,還支持ECC校驗和壞塊管理。

由於NAND和NOR型Flash擦除次數是有限的,因此均勻分配閃存使用至關重要。這通常稱為擦寫均衡,LevelX為此而生。LevelX向用戶提供一個邏輯扇區陣列,這些邏輯扇區映射到LevelX內部的物理閃存。應用程序可以將LevelX與FileX結合使用,也可以直接讀取/寫入邏輯扇區。LevelX專為容錯而設計。Flash更新是分多個步驟進行的,每個步驟都可以中斷。在下一次操作期間,LevelX自動恢復到最佳狀態。

3.3   ThreadX簡介

ThreadX是先進的工業級實時操作系統,專為深度嵌入式,實時應用和IoT應用而設計。ThreadX提供了高級調度,通信,同步,計時器,內存管理和中斷管理功能。此外,ThreadX具有許多高級功能,包括微內核架構(picokernel™ architecture),搶占閥值調度(preemption-threshold™ scheduling), 事件鏈(event-chaining™),執行時性能分析,性能指標以及系統事件跟蹤。結合其易用性,ThreadX是苛刻的嵌入式應用理想選擇。

62億電子設備采用,是其它RTOS無法逾越的高山。ThreadX的產品涵蓋了各種領域,包括NASA的多個太空探測項目,飛機自動駕駛儀系統,火星偵察軌道器等。

 

注:內核技術picokernel™ architecture,preemption-threshold™ scheduling和event-chaining™已經被ThreadX注冊了商標。

3.3.1  內存需求

ThreadX最小空間需要2KB Flash空間和1KB RAM空間。這主要得益於ThreadX內核非分層的Picokernel™微內核架構和可裁剪性。

ThreadX內核各個組件需要的Flash空間如下:

 

3.3.2  API命名規則

ThreadX的函數命名規則是:Noun-verb naming convention (名詞動詞命名約定)。根據這個命名規格,我們實際看下個API,比如:tx_thread_create ,前綴tx,名詞thread_,動詞create。再看下面API截圖(部分函數截圖):

 

基本也都符合這個命名規則。

3.3.3  實時性

ThreadX在大多數流行的處理器上實現了亞微秒的上下文切換時間。除了速度快之外,ThreadX還具有高度確定性。無論准備好200個線程還是僅准備一個線程,它都能實現相同的快速性能。

以下是ThreadX的一些典型性能特征:

  •   快速啟動:

ThreadX的啟動時間少於120個周期。

  •   可選的錯誤檢查機制:

當驗證了應用程序代碼並且不再需要對每個參數進行錯誤檢查時,可以在編譯時跳過ThreadX錯誤檢查,優化性能。

  •   Picokernel™ Design(微內核設計):

服務不會彼此套用,從而消除了不必要的函數調用開銷。

  •   優化的中斷處理:

除非需要搶占,否則僅在ISR進入/退出時才保存/恢復暫存寄存器。

  •   優化的API處理:

 

測試平台:200MHz處理器。

3.3.4  安全認證

ThreadX及其所有中間件的安全認證等級,至今沒有一款小型RTOS可以與其匹敵。這么多安全認證,公司要入大量財力,人力和物力才可以完成,早前Micrium的一篇文章還談過這個問題,投入了太多資金和人力了,還與風河的VxWorks做了簡單對比。

(1)醫療 - FDA510(k),IEC-62304 Class C,IEC-60601,ISO-14971

(2)工業 - UL-1998,IEC-61508 SIL 4

(3)運輸/鐵路 - EN50128 SIL 4,BS50128,  49CFR236,IEC-61508

(4)航空航天設備 - DO-178B,ED-12B,DO-278

(5)汽車 - IEC-61508 ASIL D

(6)核應用 - IEC-61508

(7)家電 - UL/IEC 60730/60335

 

ThreadX的安全認證基本都達到了最高等級,像工業級認證IEC-61508達到了最高等級的SIL4,而uCOS,RTX5,embOS都是SIL3。

除了ThreadX內核有安全認證,中間件GUIX,FileX,NetX,甚至是加密庫都有安全認證。在安全領域,ThreadX基本已經做到了登峰造極。

 

3.3.5  高級特性

ThreadX高級特性里面最具代表性的是搶占式閥值調度Preemption-Threshold™,此功能是ThreadX獨有的功能,並且已成為廣泛學術研究的主題。比如此貼的介紹:

http://www.armbbs.cn/forum.php?mod=viewthread&tid=99801

具體如下:

  •   完善的多任務機制:

線程,定時器組,消息隊列,計數信號量,互斥信號量,事件標志組,塊型內存池和字節型內存池。

  •   支持基於優先級的搶占式調度。
  •   支持1024個優先級設置。
  •   支持合作調度。
  •   Preemption-Threshold™搶占式閥值調度,ThreadX獨有的功能,有助於確保可調度性並減少上下文切換。
  •   內存保護。
  •   完全確定性,確定性是指在在定義的時間內處理事件和中斷,ThreadX提供完全確定性的行為,這意味着在預定義時間內(期限)處理事件和中斷。
  •   事件跟蹤,記錄最近的n個系統/應用程序事件。
  •   Event Chaining™事件鏈,為每個ThreadX通信或同步對象注冊一個專用的應用程序回調函數。
  •   動態應用加載。
  •   運行時性能指標展示:
    •   恢復的任務個數。
    •   掛起的任務個數。
    •   請求的線程搶占次數。
    •   異步線程中斷搶占次數。
    •   線程優先級反轉次數。
    •   線程釋放CPU權次數。
  •   執行配置文件套件(EPK)。
  •   獨立的中斷棧。
  •   運行時堆棧分析。
  •   優化的定時器中斷處理。

3.3.6  簡單易用

ThreadX簡單易用,API既直觀又功能強大,並且所有API都遵循名詞-動詞命名約定。此外,整個API都具有功能一致性。例如,所有掛起的API都有一個可選的超時時間配置,對於API而言,超時的功能相同。

構建ThreadX應用程序也比較簡單。教程的后面章節中,大家會體會到。ThreadX也有官方為其配套的用戶手冊。

3.3.7  多核支持(AMP&SMP)

ThreadX通常以非對稱多處理(Asymmetric Multiprocessing, AMP)方式使用,其中ThreadX和應用程序(或其它系統)的單獨在每個內核上執行,並通過共享內存或處理器間通信機制來相互通信,比如OpenAMP(ThreadX支持OpenAMP)。這是使用ThreadX的最典型多核配置,如果應用程序能夠有效地加載處理器,則它可能是最高效的。

對於處理器高度動態加載的環境,ThreadX對稱多處理(Symetric Multiprocessing,SMP)可用於以下內核:

  •   ARM Cortex-Ax
  •   ARM Cortex-Rx
  •   ARM Cortex-A5x 64位
  •   MIPS 34K,1004K和interAptiv
  •   PowerPC
  •   Synopsys ARC HS
  •   x86

ThreadX SMP在n個處理器之間執行動態負載平衡,並允許任何Core上的任何線程訪問所有ThreadX資源(隊列,信號量,事件標志,內存池等)。ThreadX SMP在所有內核上啟用完整的API,並引入了適用於SMP操作的以下新API:

UINT tx_thread_smp_core_exclude(TX_THREAD *thread_ptr, ULONG exclusion_map);
UINT tx_thread_smp_core_exclude_get(TX_THREAD *thread_ptr, ULONG *exclusion_map_ptr);
UINT tx_thread_smp_core_get(void);
UINT tx_timer_smp_core_exclude(TX_TIMER *timer_ptr, ULONG exclusion_map);
UINT tx_timer_smp_core_exclude_get(TX_TIMER *timer_ptr, ULONG *exclusion_map_ptr);

3.3.8  應用程序動態加載,類似安卓APP

ThreadX MODULES可以使一個或多個應用程序線程可以捆綁到一個“模塊(MODULES)”中,該模塊可以在目標上動態加載和運行(或就地執行)。

ThreadX MODULES啟用現場升級(field upgrade),錯誤修復和程序分區,以允許大型應用程序僅占用活動線程所需的內存。

ThreadX MODULES還具有與ThreadX本身完全獨立的地址空間。這使ThreadX可以在MODULES周圍放置內存保護(通過MPU或MMU),這樣模塊外部的意外訪問將無法破壞任何其他軟件組件。

3.3.9  快速推向市場

ThreadX易於安裝,學習,使用,調試,驗證,認證和維護。因此,根據嵌入式市場預測專家(EMF)的調查, ThreadX在過去七年中一直是領先的上市時間RTOS。調查一致顯示,使用ThreadX的設計中有70%可以按時投放市場-超過了所有其他RTOS。

可以快速推向市場的原因:

  •   高質量文檔。
  •   完整的源代碼。
  •   易於使用的API。
  •   高級特性。
  •   廣泛的第三方工具集成–特別是IAR。

3.3.10        高質量源代碼

從一開始,ThreadX就被設計為工業級RTOS,並附帶完整的C源代碼。ThreadX源代碼在質量和易於理解方面樹立了標桿。此外,一個函數一個源文件的方式,大大方便用戶查閱瀏覽。

ThreadX遵守嚴格的編碼規范,包括要求每行C代碼都必須有有意義的注釋。此外,ThreadX源碼已通過最高標准的認證。

3.3.11        MISRA兼容

ThreadX和ThreadX SMP源代碼符合MISRA-C:2004和MISRA C:2012。MISRA C是C語言編程規范,最初的MISRA C指南主要針對汽車應用。但是,MISRA C現在被廣泛認為適用於任何對安全性要求很高的應用。ThreadX符合MISRA-C:2004和MISRA C:2012的所有必需和強制性規則。

3.3.12        支持的硬件平台

ThreadX在開箱即用,可以在各種主流的32/64位處理器上運行。經過全面測試和完全支持的平台如下:

 

3.4   ThreadX各行各業應用案例

ThreadX官網給出了航空航天,工業,汽車,醫療,消費電子,物聯網,片上系統等方向的具體案例 : https://rtos.com/x-ware-showcase/

 

以消費電子方向為例,三星,NEST,HTC等都是其客戶,對應的產品也非常多。並且這些產品的直接使用ThreadX全套,基本ThreadX有的,就不再使用第三方組件:

 

3.5   ThreadX論壇

針對ThreadX,專門建立了論壇版塊:

http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12

當然,大家也可以上GUIX的官方Github開源地址提交問題:

https://github.com/azure-rtos

3.6   總結

關於ThreadX就跟大家介紹這么多,更詳細的可以上我們的論壇進一步討論。


免責聲明!

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



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