Comparison between RTOSes
In this section, we present a techincal comparison between the three RTOSes supported by micro-ROS:
The comparison regards the features listed below:
- Standardized API to application level
- Maturity
- Supported hardware
- Scheduling options
- IO Support (native or vendor-specific module needed)
- Networking stack
- Storage and Display
- Memory Footprint
- Safety Certification
- License
- POSIX level support
Key questions:
- Evaluation POSIX-compliance of RTOS.
- What is the effort in providing an additional layer for non-POSIX RTOS regarding micro-ROS or ROS 2?
- Support of RTOS for specific HW platforms
Table of Comparisons
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 |
OSEK/VDX | no | no | no |
Maturity | |||
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) |
Supported Hardware | |||
Olimex STM32-E407 (Cortex-M4) | yes | yes | yes, explicitly |
Bosch XDK 5 | not explicitly, but similar 6 | yes | no5 |
MPC57xx | no | no | no |
Scheduling | |||
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 |
IO | |||
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 | ? |
Networking 7 | |||
BLE-Stack | unclear | yes 8 | yes |
6LoWPAN | yes | no | yes |
TLS | yes 8 | yes | |
Thread | no | ? | |
Ethernet | yes | yes 8 | yes |
Wifi | yes | yes 8 | yes |
NFC | unclear | no | yes |
RFID | yes | no | yes |
Storage & Display 7 | |||
File System | yes | yes | yes |
Graphical User Interface | vendor-specific | ? | |
Memory Footprint | |||
RAM | “small footprint” | 236 B scheduler + 64 B / task | “small footprint” |
ROM | “small footprint” | 5 - 10 kB | “small footprint” |
Safety Certification | |||
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 |
1 Processes, signals, fpe, segmentation, bus errors, timers, file and directory ops, pipes, c library, IO Port Interface
2 Real-time, clocks, semaphores, messages, shared mem, async io, memory locking.
3 Threads.
4 Executing every task in round-robin fashion but only for a pre-defined time slice.
5 XDK is based on a microcontroller of the ARM Cortex M3 EFM32GG390F1024 Giant Gecko family by Silicon Labs. Note that the version used in the XDK is not fully supported by Zephyr.
7 Hardware-support for Networking and Storage often depends on the platform and sometimes packages of hardware-vendors are available, which work for a particular operating system. But it is in general difficult to determine the harware-support of a given RTOS.
8 FreeRTOS interfaces that are provided through the FreeRTOS reference distribution repository at https://github.com/aws/amazon-freertos
9 FreeRTOS ethernet support is provided through the FreeRTOS+TCP stack.
10 Rate Monotonic Scheduling can be achieved by assigning the priorities of threads with the so-called rate-monotonic policy. That is, the thread with the highest rate has the highest priority and the thread with the lowest rate the lowest priority. It is assumed that all threads are activated periodically with fixed rates.
Some Related Work:
- Choosing the right RTOS for IoT platform, Milinkovic et al, INFOTEH-JAHORINA Vol. 14, 2015: comparison of FreeRTOS, ChibiOS/RT, Erika, RIOT
- FreeRTOS Architecture
- Previous
- Next