zoukankan      html  css  js  c++  java
  • 【STM32H7】第1章 选择ThreadX的优势

    论坛原始地址(持续更新):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官网看看。

     

    微信公众号:armfly_com 安富莱论坛:www.armbbs.cn 安富莱淘宝:https://armfly.taobao.com
  • 相关阅读:
    机器学习:特征选择方法简介
    VS快捷键
    非常适用的Sourceinsight插件,提高效率【强力推荐】
    Linux静态库和共享库
    C/C++ 位域知识小结
    __BEGIN_DECLS 和 __END_DECLS
    C语言可变参数va_list
    mac的terminal快捷键
    linux进程、线程与cpu的亲和性(affinity)
    C++ Singleton (单例) 模式最优实现
  • 原文地址:https://www.cnblogs.com/armfly/p/14448031.html
Copyright © 2011-2022 走看看