/*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/ /** \mainpage The CMSIS-RTOS2 manages the resources of the microcontroller system and implements the concept of parallel threads that run concurrently. There are many advantages of using an CMSIS-RTOS2 compliant kernel as it provides a standardized interface. Applications frequently require several concurrent activities. CMSIS-RTOS2 can manage multiple concurrent activities at the time when they are needed. Each activity gets a separate thread which executes a specific task and this simplifies the overall program structure. The CMSIS-RTOS2 system is scalable and additional threads can be added easily at a later time. Threads have a priority allowing faster execution of time-critical parts of an user application. The CMSIS-RTOS2 offers services needed in many real-time applications, for example, periodical activation of timer functions, memory management, and message exchange between threads with time limits. The CMSIS-RTOS API v2 addresses the following new requirements: - Dynamic object creation no longer requires static memory, static memory buffers are now optional. - Support for ARMv8-M architecture that provides a Secure and Non-Secure state of code execution. - Provisions for message passing in multi-core systems. - Full support of C++ run-time environments. - C interface which is binary compatible across ABI compatible compilers. As a consequence of these requirements the CMSIS-RTOS API v2 has the following fundamental modifications: - The functions osXxxxNew replace osXxxxCreate functions; osXxxxNew and osXxxxDelete create and destroy objects. - The C function main is not longer started as a thread (this was an optional feature in CMSIS-RTOS v1). - Functions that return osEvent have been replaced. CMSIS-RTOS API v2 provides an translation layer for the CMSIS-RTOS API v1. It is possible to intermix CMSIS-RTOS API v2 and CMSIS-RTOS API v1 within the same application. You may migrate overtime to the new API as explained in \ref os2Migration. CMSIS-RTOS API v2 is not POSIX compliant, but has provisions to enable a C++11/C++14 interface. The following sections provide further details about CMSIS-RTOS2 and the RTX reference implementation. - \subpage rtos_revisionHistory documents changes made in each version for CMSIS-RTOS2 and RTX version 5. - \subpage rtx5_impl provides general information about the operation of RTX version 5. - \subpage config_rtx explains the configuration options of RTX version 5. - \subpage cre_rtx_proj describes how to create projects using RTX version 5. - \subpage os2Migration shows how to use CMSIS-RTOS2 in existing projects and lists function differences to CMSIS-RTOS v1. - \subpage rtosValidation describes the validation suite that is public available. - \subpage functionOverview lists the CMSIS-RTOS2 API functions and the header file cmsis_os2.h.
| Version | Description |
|---|---|
| V2.0.0 | - Kernel:\n -- added: \ref osKernelGetInfo, \ref osKernelGetState.\n -- added: \ref osKernelLock, \ref osKernelUnlock.\n -- added: \ref osKernelSuspend, \ref osKernelResume.\n -- added: \ref osKernelGetTickCount.\n -- renamed osKernelSysTick to \ref osKernelGetSysTimerCount.\n - Thread:\n -- extended number of thread priorities.\n -- changed thread return value.\n -- replaced osThreadCreate with \ref osThreadNew.\n -- added: \ref osThreadGetState.\n -- added: \ref osThreadSuspend, \ref osThreadResume.\n -- added: \ref osThreadJoin, \ref osThreadDetach, \ref osThreadExit.\n - Signals:\n -- renamed osSignals to osThreadFlags.\n -- changed return value of Set/Clear/Wait functions.\n -- Clear function limited to current running thread.\n -- extended Wait function (options).\n -- added: \ref osThreadFlagsGet.\n - Event Flags: added new independent object for handling Event Flags.\n - Delay and Wait functions:\n -- added: \ref osDelayUntil.\n -- deprecated: osWait.\n - Timer:\n -- replaced osTimerCreate with \ref osTimerNew.\n -- added: \ref osTimerIsRunning.\n - Mutex:\n -- extended: attributes (Recursive, Priority Inherit, Robust).\n -- replaced osMutexCreate with \ref osMutexNew.\n -- renamed osMutexWait to \ref osMutexAcquire.\n -- added: \ref osMutexGetOwner.\n - Semaphore:\n -- extended: maximum and initial token count.\n -- replaced osSemaphoreCreate with \ref osSemaphoreNew.\n -- renamed osSemaphoreWait to \ref osSemaphoreAcquire (changed return value).\n -- added: \ref osSemaphoreGetCount.\n - Memory Pool:\n -- using osMemoryPool prefix instead of osPool.\n -- replaced osPoolCreate with \ref osMemoryPoolNew.\n -- extended: \ref osMemoryPoolAlloc (timeout).\n -- added: \ref osMemoryPoolGetCapacity, \ref osMemoryPoolGetBlockSize.\n -- added: \ref osMemoryPoolGetCount, \ref osMemoryPoolGetSpace.\n -- added: \ref osMemoryPoolDelete.\n -- deprecated: osPoolCAlloc.\n - Message Queue:\n -- fixed size messages instead of a single 32-bit values.\n -- using osMessageQueue prefix instead of osMessage.\n -- replaced osMessageCreate with \ref osMessageQueueNew.\n -- updated: \ref osMessageQueuePut, \ref osMessageQueueGet.\n -- added: \ref osMessageQueueGetCapacity, \ref osMessageQueueGetMsgSize.\n -- added: \ref osMessageQueueGetCount, \ref osMessageQueueGetSpace.\n -- added: \ref osMessageQueueReset, \ref osMessageQueueDelete.\n - Mail Queue: deprecated (superseded by extended Message Queue functionality).\n |
| V1.02 - only documentation changes | Added: Overview of the \ref rtosValidation "CMSIS-RTOS Validation" Software Pack.\n Clarified: Behavior of \ref CMSIS_RTOS_TimeOutValue. |
| V1.02 | Added: New control functions for short timeouts in microsecond resolution \b osKernelSysTick, \b osKernelSysTickFrequency, \b osKernelSysTickMicroSec.\n Removed: osSignalGet. |
| V1.01 | Added capabilities for C++, kernel initialization and object deletion.\n Prepared for C++ class interface. In this context to \em const attribute has been moved from osXxxxDef_t typedefs to the osXxxxDef macros.\n Added: \ref osTimerDelete, \ref osMutexDelete, \ref osSemaphoreDelete.\n Added: \ref osKernelInitialize that prepares the Kernel for object creation.\n |
| V1.00 | First official Release.\n Added: \ref osKernelStart; starting 'main' as a thread is now an optional feature.\n Semaphores have now the standard behavior.\n \b osTimerCreate does no longer start the timer. Added: \ref osTimerStart (replaces osTimerRestart).\n Changed: osThreadPass is renamed to \ref osThreadYield. |
| V0.02 | Preview Release. |