CMSIS RTOS API
The user interface between an RTOS and the user application is called RTOS API (application programming interface). The API defines the function names and the parameter. For example the embOS API defines the function name OS_TASK_Delay(t). If an application software wants to delay a task it has to call OS_TASK_Delay() and pass the delay as the parameter. For embOS the RTOS API is always 100% compatible which means an application which was built with an older embOS version always builds with the latest embOS version. Once a company has decided to use embOS they will never have to change any RTOS API call in the application independent of which hardware they might use in the future.
The CMSIS RTOS API is designed to abstract a vendor specific RTOS API. This has the advantage that the RTOS can be replaced by another RTOS without the need to modify anything in the application. The application calls the CMSIS RTOS API which is implemented in an RTOS Layer. This RTOS Layer calls then the actual vendor specific RTOS API function.
Unfortunately using the CMSIS RTOS API has also some disadvantages:
- CMSIS RTOS provides basic API only but embOS offers much more API which is not abstracted. This embOS API can therefore not be used with CMSIS RTOS API
- Using the embOS API directly is more efficient because there is no layer in between.
- An additional layer is unnecessary since the embOS API is a de-facto standard. The same embOS API can be used with any core and compiler.
The CMSIS RTOS Layer for embOS can be purchased from SEGGER.