論壇原始地址(持續更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99514
第1章 選擇ThreadX的優勢
初學ThreadX,一般都比較關心這個問題,所以把這個問題放在第一章簡單的說說。 這里分為八個方面跟大家進行說明。
1.1 ThreadX移植的難易程度
1.2 ThreadX上手難用程度
1.3 ThreadX實時性
1.4 ThreadX完整的中間件
1.5 ThreadX高等級安全認證
1.6 ThreadX多核支持
1.7 ThreadX應用程序動態加載
1.8 ThreadX各行各業應用案例
1.9 總結
1.1 ThreadX移植的難易程度
ThreadX內核提供好了各種主流硬件平台和軟件平台的移植文件,如下圖所示:
對於STM32H7來說,使用的是cortex-m7內核的文件,里面已經提供了MDK AC5,MDK AC6,IAR和GCC。
有了提供好的port文件,移植也就比較省事,用戶僅需使能系統時鍾,使能相關宏定義即可使用。
1.2 ThreadX上手難易程度
ThreadX配套的官方手冊在RTOS 基礎知識、 API 函數及其舉例方面都做的不錯,用戶上手比較容易。隨着后面章節的學習,大家會體會到這一點。
1.3 ThreadX 實時性
ThreadX在大多數流行的處理器上實現了亞微秒的上下文切換時間。除了速度快之外,ThreadX還具有高度確定性。無論准備好200個線程還是僅准備一個線程,它都能實現相同的快速性能。
以下是ThreadX的一些典型性能特征:
- 快速啟動:
ThreadX的啟動時間少於120個周期。
- 可選的錯誤檢查機制:
當驗證了應用程序代碼並且不再需要對每個參數進行錯誤檢查時,可以在編譯時跳過ThreadX錯誤檢查,優化性能。
- Picokernel™ Design(微內核設計):
服務不會彼此套用,從而消 除了不必要的函數調用開銷。
- 優化的中斷處理:
除非需要搶占,否則僅在ISR進入/退出時才保存/恢復暫存寄存器。
- 優化的API處理:
測試平台:200MHz處理器。
1.4 ThreadX完善的中間件
ThreadX有自己完善的中間件,我們稱之為ThreadX全家桶:
包括文件系統FileX,GUI圖形設計GUIX,網絡協議棧NetX,USB協議棧USBX,GUIX上位機調試軟件GUIX Studio,跟蹤調試軟件TraceX等。
使用全家桶方案,最大的優勢是用戶無需倒騰各種組件與內核的兼容性,而且后期升級維護也非常方便。實際項目中,這種全家桶方式還是非常推薦的。
1.5 ThreadX高等級安全認證
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基本已經做到了登峰造極。
1.6 ThreadX多核支持(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。
1.7 ThreadX應用程序動態加載
(注:類似安卓APP)
ThreadX MODULES可以使一個或多個應用程序線程捆綁到一個“模塊(MODULES)”中,該模塊可以在目標上動態加載和運行(或就地執行)。
ThreadX MODULES啟用現場升級(field upgrade),錯誤修復和程序分區,以允許大型應用程序僅占用活動線程所需的內存。
ThreadX MODULES還具有與ThreadX本身完全獨立的地址空間。這使ThreadX可以在MODULES周圍放置內存保護(通過MPU或MMU),這樣模塊外部的意外訪問將無法破壞任何其他軟件組件。
1.8 ThreadX各行各業應用案例
62億電子設備采用,是其它RTOS無法逾越的高山。ThreadX的產品涵蓋了各種領域,包括NASA的多個太空探測項目,飛機自動駕駛儀系統,火星偵察軌道器等。
對此,ThreadX官網給出了航空航天,工業,汽車,醫療,消費電子,物聯網,片上系統等方向的具體案例 : https://rtos.com/x-ware-showcase/
以消費電子方向為例,三星,NEST,HTC等都是其客戶,對應的產品也非常多。並且這些產品的直接使用ThreadX全套,基本ThreadX有的,就不再使用第三方組件:
1.9 總結
本章節就為大家介紹這么多,更多相關介紹,大家可以到ThreadX官網看看。