论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99514
第1章 选择ThreadX的优势
初学ThreadX,一般都比较关心这个问题,所以把这个问题放在第一章简单的说说。 这里分为八个方面跟大家进行说明。
目录
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官网看看。