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?