大家好,欢迎来到IT知识分享网。
学习参考:
- 《Real-Time Embedded Multithreading: Using ThreadX and ARM》
(链接:https://pan.baidu.com/s/1GMScXSlHq13yS4AVxP_zPw 提取码:ysuw ) - 安富莱_STM32-V7开发板ThreadX内核教程(V0.7)——硬汉嵌入式论坛
- ThreadX SMP user guide 官方
ThreadX
ThreadX已被微软收购,改名为azure-rtos,但这里仍用原名。
源代码下载地址:https://github.com/azure-rtos
实时性
ThreadX 在大多数流行的处理器上实现了亚微秒的上下文切换时间。除了速度快之外,ThreadX 还具有高度确定性。无论准备好 200 个线程还是仅准备一个线程,它都能实现相同的快速性能。
以下是 ThreadX 的一些典型性能特征:
-
快速启动:ThreadX 的启动时间少于 120 个周期。
-
可选的错误检查机制:当验证了应用程序代码并且不再需要对每个参数进行错误检查时,可以在编译时跳过 ThreadX 错误检查,优化性能。
-
Picokernel™ Design(微内核设计):服务不会彼此套用,从而消除了不必要的函数调用开销。
-
优化的中断处理:除非需要抢占,否则仅在 ISR 进入/退出时才保存/恢复暂存寄存器。
-
优化的 API 处理:
服务 | 执行时间,单位微妙 |
---|---|
Thread Suspend | 0.6 |
Thread Resume | 0.6 |
Queue Send | 0.3 |
Queue Receive | 0.3 |
Get Semaphore | 0.2 |
Put Semaphore | 0.2 |
Context Switch | 0.4 |
Interrupt Response | 0.0-0.6 |
测试平台:200MHz 处理器。
完善的中间件
ThreadX 有自己完善的中间件,称为 ThreadX 全家桶:
- 文件系统 FileX
- GUI 图形设计 GUIX
- 网络协议栈 NetX
- USB 协议栈 USBX
- GUIX 上位机调试软件 GUIX Studio
- 跟踪调试软件 TraceX
中间件下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=103554&extra=page%3D1%26filter%3Dtypeid%26typeid%3D304
高等级安全认证
ThreadX及其所有中间件的安全认证等级,至今没有一款小型RTOS可以与其匹敌。
这么多安全认证,公司要入大量财力,人力和物力才可以完成。早前 Micrium 的一篇文章还谈过这个问题,投入了太多资金和人力了,还与风河的 VxWorks 做了简单对比。
- 医疗 – FDA510(k),IEC-62304 Class C,IEC-60601,ISO-14971
- 工业 – UL-1998,IEC-61508 SIL 4
- 运输/铁路 – EN50128 SIL 4,BS50128, 49CFR236,IEC-61508
- 航空航天设备 – DO-178B,ED-12B,DO-278
- 汽车 – IEC-61508 ASIL D
- 核应用 – IEC-61508
- 家电 – UL/IEC 60730/60335
ThreadX 的安全认证基本都达到了最高等级,像工业级认证 IEC-61508 达到了最高等级的 SIL4,而uCOS,RTX5,embOS 都是 SIL3。
除了 ThreadX 内核有安全认证,中间件 GUIX,FileX,NetX,甚至是加密库都有安全认证。在安全领域,ThreadX 基本已经做到了登峰造极。
源码组成
ThreadX的源码两个最主要的部分:common
和port
两个文件夹。
虽然微软提供了ARM诸多芯片的接口,但目前被大部分人成功使用的只有M系列的部分芯片。
除此之外,ThreadX还能在WIN和Linux下运行。
port
port是对于不同芯片的接口,对ARM的基本都是汇编写的,包括线程调度、上下文保存和恢复、中断控制和定时器等。
这些接口都是直接对芯片进行操作,对于关注操作系统本身的开发者其实不需要太多关注。
common
common包含了系统初始化函数和所有的API函数,用C语言编写。
系统初始化函数最终还是会进入port提供的接口中。
而API函数包含以下九大类:
对于API的名字上,用户见到是的没有前缀的正常名字,如 tx_[module]_[func]
, 而其实它是经过宏定义的,可能是原型是 _tx_[module]_[func]
或者_txe_[module]_[func]
。
若是_txe_[module]_[func]
,那么它会先进行一些异常状态的判定,若有异常直接返回,若无异常则调用 _tx_[module]_[func]
。
多核
AMP
ThreadX 通常以非对称多处理(Asymmetric Multiprocessing, AMP)方式使用,其中 ThreadX 和应用程序(或其它系统)单独在每个内核上执行,并通过共享内存或处理器间通信机制来相互通信。
SMP
对于处理器高度动态加载的环境,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。
对于SMP,ThreadX提供了common_smp
和port_smp
。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11194.html