/*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/ /** \mainpage The CMSIS-RTOS 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-RTOS v2 compliant kernel as it provides a standardized interface. Applications frequently require several concurrent activities. CMSIS-RTOS 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-RTOS 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-RTOS 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 POSIX translation layer and a C++ interface. \todo Investigate into a flexible C++ interface and potential POSIX translation
| Version | Description |
|---|---|
| V2.00 Alpha | - Kernel:\n -- added: osKernelGetInfo, osKernelGetState.\n -- added: osKernelLock, osKernelUnlock.\n -- added: osKernelSuspend, osKernelResume.\n -- added: osKernelGetTime.\n -- renamed osKernelSysTick to osKernelGetSysTick.\n - Thread:\n -- extended number of thread priorities.\n -- changed thread return value.\n -- replaced osThreadCreate with osThreadNew.\n -- added: osThreadGetState.\n -- added: osThreadSuspend, osThreadResume.\n -- added: osThreadJoin, osThreadDetach, 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: osThreadFlagsGet.\n - Event Flags: added new independent object for handling Event Flags.\n - Delay and Wait functions:\n -- added: osDelayUntil.\n -- deprecated: osWait.\n - Timer:\n -- replaced osTimerCreate with osTimerNew.\n -- added: osTimerIsRunning.\n - Mutex:\n -- extended: attributes (Recursive, Priority Inherit, Robust).\n -- replaced osMutexCreate with osMutexNew.\n -- renamed osMutexWait to osMutexAcquire.\n -- added: osMutexGetOwner.\n - Semaphore:\n -- extended: maximum and initial token count.\n -- replaced osSemaphoreCreate with osSemaphoreNew.\n -- renamed osSemaphoreWait to osSemaphoreAcquire (changed return value).\n -- added: osSemaphoreGetCount.\n - Memory Pool:\n -- using osMemoryPool prefix instead of osPool.\n -- replaced osPoolCreate with osMemoryPoolNew.\n -- extended: osMemoryPoolAlloc (timeout).\n -- added: osMemoryPoolGetCapacity, osMemoryPoolGetBlockSize.\n -- added: osMemoryPoolGetCount, osMemoryPoolGetSpace.\n -- added: 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 osMessageQueueNew.\n -- updated: osMessageQueuePut, osMessageQueueGet.\n -- added: osMessageQueueGetCapacity, osMessageQueueGetMsgSize.\n -- added: osMessageQueueGetCount, osMessageQueueGetSpace.\n -- added: osMessageQueueReset, 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. |