| CMSIS-RTOS RTX Version 4.75 CMSIS-RTOS RTX: Real-Time Operating System for Cortex-M processor-based devices

- RTX

- Main Page
- Usage and Description
- Reference

CMSIS-RTOS RTX Documentation

This manual describes the CMSIS-RTOS implementation based on the Keil RTX Real-Time Operating System which is designed for Cortex-M processor-based devices. The RTX kernel can be used for creating applications that perform multiple tasks simultaneously. These tasks are executed by threads that operate in a quasi-parallel fashion.

While it is certainly possible to create real-time applications without an RTOS (by executing one or more tasks in a loop), there are numerous scheduling, maintenance, and timing issues that can be solved better with an RTOS. For example, an RTOS enables flexible scheduling of system resources like CPU and memory, and offers methods to communicate between threads.

CMSIS-RTOS RTX programs are written using standard C/C++ constructs and are compiled with the ARMCC, GCC, or IAR Compiler. The cmsis_os.h header file defines the RTX functions and macros that allow declaring tasks and accessing all RTOS features easily.

This manual contains the following sections:

- Overview: Provides an overview about the CMSIS-RTOS RTX and technical specifications.
- Configuration of CMSIS-RTOS RTX : Describes configuration parameters of CMSIS-RTOS RTX.
- Using CMSIS-RTOS RTX : Provides instructions for writing and debugging applications with CMSIS-RTOS RTX.
- Function Overview : Describes the RTX functions that are defined by the CMSIS-RTOS API.

## Revision History of CMSIS-RTOS RTX

Version | Description
--- | ---
V4.75 | Corrected: Service calls for Cortex-M4 with Floating Point for GCC. Corrected: osSignalClear returns 0x80000000 when called from interrupt service routines. Corrected: C standard library memory functions (malloc, free, ...) can be called between calls to osKernelInitialize and osKernelStart. Corrected: Interrupt Priority Group can be configured between calls to osKernelInitialize and osKernelStart.
V4.74 | Corrected: osKernelInitialize and osKernelStart when called from main which is already a thread.
V4.73 | Corrected: mutex priority inversion when thread owns more than one mutex. Added: RTX extensions os_suspend and os_resume. Added: RTX os_error template.
V4.72 | Corrected: object initialization when defined inside function (allocated on stack and not as static memory).
V4.71 | Corrected: osMailFree behaviour when osMailAlloc timed out.
V4.70 | Added: New control functions for short timeouts in microsecond resolution osKernelSysTick, osKernelSysTickFrequency, osKernelSysTickMicroSec. Removed: osSignalGet.
V4.61 | Enhanced: osTimerCreate can now be called after osKernelInitialize (before only after osKernelStart). Corrected: Initialization of alternative kernel timer for Cortex-M0/M0+/M1 (when SysTick timer is not used). Corrected: Message/Mail Queue behavior when timeout expires.
V4.51 | Corrected: problem with osKernelInitialize when after the call high priority threads are defined.
V4.50 | Based on CMSIS-RTOS API Version 1.01 and the classic RTX V4.50 Kernel. Added: osTimerDelete, osMutexDelete, osSemaphoreDelete. Added: osKernelInitialize that prepares the Kernel for object creation. Added: support for Low Power Cortex-M applications based on new configuration functions: os_suspend, os_resume. Added: support for peripheral timer to be used as OS tick timer instead of Core SysTick timer. Corrected: stack checking did not work for os_tsk_delete_self function Preview Release.
V4.20 | Initial CMSIS-RTOS adaption of the RTX Kernel.