本文主要对流行的3种开源rtos从以下纬度进行技术对比。
- 应用层的标准化API
- 成熟度
- 支持的硬件
- 调度支持
- IO 支持(需要本地或特定于供应商的模块)
- 网络堆栈
- 存储和显示
- 内存占用
- 安全认证
- License
- POSIX兼容性
1. POSIX兼容性
OS | NuttX | FreeRTOS | Zephyr |
---|---|---|---|
Feature | |||
Standardization | |||
POSIX | yes | partial | partial |
POSIX.1 1 | yes | wrapper | partial |
POSIX.1b 2 | yes | partial | partial |
POSIX.1c 3 | yes | yes | partial |
2. 成熟度
成熟度 | NuttX | FreeRTOS | Zephyr |
---|---|---|---|
First release | 2007 | 2003 | 2016 |
Last release | 2019 | 2020 | 2019 |
Update rate | about 3 months | irregular | 3 months |
Community | open-source | open-source | Linux Foundation Collaboration Project, (Intel, Linaro (ARM), nordic, NXP, Synopsys) |
3. 调度
调度支持 | NuttX | FreeRTOS | Zephyr |
---|---|---|---|
Priority-based | FIFO | yes | yes |
Round-Robin 4 | yes | yes 6 | co-operative |
Sporadic Server | yes | no | no |
Reservation Based Scheduling (RBS) | no | no | no |
Rate Monotonic Scheduling (RMS) | ? | yes 10 | yes 10 |
Semaphore /Mutex Management | yes (Priority Inheritance) | yes | yes |
| |
4. IO
IO | NuttX | FreeRTOS | Zephyr |
---|---|---|---|
I2C | yes | yes 8 | yes |
SPI | yes | yes 8 | yes |
UART | hw-specific | yes 8 | yes |
USB | yes | vendor-specific | yes |
CAN | yes | vendor-specific | yes |
CAnopen | no | vendor-specific | yes |
Modbus | yes | vendor-specific | ? |
5. 网络
Networking | NuttX | FreeRTOS | Zephyr |
---|---|---|---|
BLE-Stack | unclear | yes | yes |
6LoWPAN | yes | no | yes |
TLS | yes | yes | |
Thread | no | ? | |
Ethernet | yes | yes | yes |
Wifi | yes | yes | yes |
NFC | unclear | no | yes |
RFID | yes | no | yes |
6. 存储与显示
存储与显示 | NuttX | FreeRTOS | Zephyr |
---|---|---|---|
File System | yes | yes | yes |
Graphical User Interface | vendor-specific | ? |
7. 内存引脚、安全认证、证书
内存引脚 | NuttX | FreeRTOS | Zephyr |
---|---|---|---|
RAM | “small footprint” | 236 B scheduler 64 B / task | “small footprint” |
ROM | “small footprint” | 5 - 10 kB | “small footprint” |
安全认证 | NuttX | FreeRTOS | Zephyr |
Software Development Process DO178B Level A / EUROCAE ED-12B | no | SafeRTOS: DO178C (Aerspace) by Wittenstein | no |
Functional Safety IEC-61508 | no | SafeRTOS (SIL 3) | soon |
License | BSD | MIT and Commercial | Apache 2 |
* 参考(https://micro.ros.org/docs/concepts/rtos/comparison/)