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.

6 Note: Time slicing

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: