【STM32F429】第1章 选择ThreadX的优势

2021-03-04 10:10:29 浏览数 (1)

论坛原始地址(持续更新):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内核提供好了各种主流硬件平台和软件平台的移植文件,如下图所示:

对于STM32F4来说,使用的是cortex-m4内核的文件,里面已经提供了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)汽车 – I EC-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官网看看。

0 人点赞