Cmsis-rtos vs mbedOS vs keil rtx differences?

I’ve been doing some digging into rtos for 32-bit arm controllers after falling in love with freertos. However I am a bit confused regarding cmsis-rtos, mbedOS and keil rtx.

The way I understand it and do correct me if I am wrong is;

Keil rtx is the actual rtos kernel built for arm cortex that is equipped with a scheduler and other rtos components (such as mutexes, semaphores, mailboxes etc)

cmsis-rtos is ajust an rtos interface for ARM cortex-m devices that provides APIs built on top of other rtos kernels. The kernel can be any available rtos like freertos or keil rtx.

mbedOS is also an rtos but unlike cmsis-rtos it is built solely on top of keil-rtx. It is meant purposely for IoT applications as there are readily available APIs to make use of the IoT sensors.

I get why keil-rtx would exist but why have two different rtos APIs?


the best option is find a layer diagram where this is graphycali visible for easy understanding.
Architecture - Introduction to Mbed OS 6 | Mbed OS 6 Documentation

From my understanding you have two option how implement RTOS. Implement any RTOS directly or via CMSIS-RTOS.
CMSIS-RTOS is here for a standard and that allow you easily switch between different RTOS. So theoretically thanks to it should be easy to move MbedOS from RTX to FreeRTOS.

BR, Jan

1 Like