Azure RTOS(ThreadX) 是专门为嵌入式应用程序设计的高性能实时操作系统 (RTOS)。
那么,何为实时操作系统:实时操作系统是指面向实时运行对象,并为其服务的操作系统,英文名称为real-time operating system,简写为RTOS。面向MCU或微控制器的RTOS一般也称为嵌入式实时操作系统(embedded real-time operating system)。RTOS是一种系统软件,可以为应用程序提供服务并管理微控制器硬件资源,这些硬件资源包括内存、外设和中断等。实时操作系统的主要目的是给需要执行的各种任务分配处理时间。实时操作系统很多,再进一步细分,还可以分为面向MPU(或者和x86统称为称为CPU)的RTOS,面向MCU的RTOS。
MPU实时操作系统常见有:VxWorks, QNX, 嵌入式Linux 等
MCU实时操作系统常见有:FreeRTOS,ThreadX, RT-Thread, MbedOS,Huawei Lite OS, Zephyr等
随着MCU产品性价比不断提升,MCU与CPU产品不再是泾渭分明,异构集成将是一个新的产品发展特点。
铺垫这么多,Threadx在RTOS中处于什么位置?是不是C位?
先看一张“引用”来的图,(图片不是很清楚)。该图列出了2019年,各主流RTOS的市场份额。图中可以看到,在MCU RTOS中FreeRTOS份额最大,Threadx只占到3%,该报告是2019年的,因此图片中仍然写的是ExpressLogic(Threadx)。
我们看一下Azure RTOS 近几年的发展:
2019年,微软重金收购 ThreadX 嵌入式实时操作系统,然后,紧接着在 2020 年,开源了Azure RTOS ThreadX。
2021年12月,微软发布了基于 VS 2022 的支持嵌入式RTOS、MCU软件开发的IDE。
2022年3月,微软发布了基于 VS Code(去年是VS 2022)的插件Embedded Tools嵌入式开发工具,支持Azure RTOS、FreeRTOS操作系统。
Azure RTOS VS FreeRTOS
FreeRTOS免费开源,早期很多嵌入式软件工程师都拥抱FreeRTOS, 凭借着开源免费FreeRTOS获得了一大批用户。AzureRTOS虽然开源了,但并没有完全免费,见下面其“Liccense"申明中的一段描述,基于给出的"hardware"列表中MCU是可以免费商用开发的。不过这个"hardware"列表已经包括了一些主流的MCU。
DISTRIBUTION AND PRODUCTION USE. If you have obtained and/or are developing on
microprocessor(s) and/or microcontroller(s) (“hardware”) listed in the file
named “LICENSED-HARDWARE.txt” included in the repository and/or distributed with
the software you have the following rights in and to the software solely when
used in combination with the hardware. In the event hardware is not listed in
the LICENSED-HARDWARE.txt file, you do not have the rights in this Section 2.
STMicroelectronics:
STM32 MCUs
STM32 MPUs
MediaTek:
MT3620 MCU (Azure Sphere)
Microchip:
PIC 32-bit MCUs
SAM 32-bit MCUs
SAM 32-bit MPUs
NXP:
RT10xx and RT116x/7x series crossover MCUs
LPC5500 series
Renesas:
Synergy Platform
RX Family of MCUs
RA Family of MCUs
RZ Family of MPUs
相对FreeRTOS而言,Azure RTOS组件更丰富,号称全家桶。虽然FreeRTOS被亚马逊收购之后,丰富了其中的组件,但和Azure RTOS相比,还是缺少很多组件。Azure RTOS的组件几乎涵盖了嵌入式RTOS常规的组件:
* Azure RTOS ThreadX
* Azure RTOS NetX
* Azure RTOS NetX Duo
* Azure RTOS FileX
* Azure RTOS GUIX
* Azure RTOS GUIX Studio
* Azure RTOS USBX
* Azure RTOS TraceX
* ······
ThreadX 技术亮点
下面是 ThreadX 高级技术的亮点。简单的 picokernel 体系结构
自动扩展(占用空间少)
确定性处理
快速实时性能
抢先式和协作式计划
灵活的线程优先级支持
动态系统对象创建
无限量的系统对象
经过优化的中断处理
抢占阈值 (Preemption-threshold™)
优先级继承
事件链接 (Event-chaining™)
快速软件计时器
运行时内存管理
运行时性能监视
运行时堆栈分析
内置系统跟踪
广泛的处理器支持
广泛的开发工具支持
字节顺序完全中性
ThreadX Modules
ThreadX 模块组件为应用程序提供了一种基础结构,用于动态地加载独立于应用程序常驻部分构建的模块。在应用程序代码大小超过可用内存的情况下,此功能尤其有用。当部署核心映像后需要添加新功能时,它也可以提供帮助。此外,在需要部分固件更新时,可以使用动态加载模块。
下一篇,学习ThreadX的动态加载库是如何实现的。