/*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/ /** \mainpage The CMSIS-RTOS v2 (CMSIS-RTOS2) provides generic RTOS interfaces for Arm® Cortex® processor-based devices. It provides a standardized API for software components that require RTOS functionality and gives therefore serious benefits to the users and the software industry: - CMSIS-RTOS2 provides basic features that are required in many applications. - The unified feature set of the CMSIS-RTOS2 reduces learning efforts and simplifies sharing of software components. - Middleware components that use the CMSIS-RTOS2 are RTOS agnostic and are easier to adapt. - Standard project templates of the CMSIS-RTOS2 may be shipped with freely available CMSIS-RTOS2 implementations. \note The CMSIS-RTOS API Version 2 defines a minimum feature set. Implementations with extended features may be provided by the RTOS vendors. The CMSIS-RTOS2 manages the resources of the microcontroller system and implements the concept of parallel threads that run concurrently. 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 a 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-RTOS2 addresses the following new requirements: - Dynamic object creation no longer requires static memory, static memory buffers are now optional. \if ARMv8M - Support for Armv8-M architecture that provides a secure and non-secure state of code execution. \endif - 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-RTOS2 has the following fundamental modifications: - The functions osXxxxNew replace osXxxxCreate functions; osXxxxNew and osXxxxDelete create and destroy objects. - The C function \c main is no longer started as a thread (this was an optional feature in CMSIS-RTOS v1). - Functions that return osEvent have been replaced. CMSIS-RTOS2 provides an translation layer to CMSIS-RTOS v1. It is possible to intermix \ref rtos_api2 and CMSIS-RTOS C API v1 within the same application. Over time, you may migrate to the new API as explained in \ref os2Migration. CMSIS-RTOS2 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-RTOS v2 and RTX v5. - \subpage genRTOS2IF provides an overview about the APIs available with CMSIS-RTOS v2. - \subpage functionOverview lists the CMSIS-RTOS2 API functions and the header file %cmsis_os2.h. \ifnot FuSaRTS - \subpage rtosValidation describes the validation suite that is publicly available. - \subpage os2Migration shows how to use CMSIS-RTOS2 in existing projects and lists function differences to CMSIS-RTOS v1. \endif - \subpage rtx5_impl provides general information about the operation and usage of RTX v5. \if FuSaRTS - \subpage rtx_safety provides comprehensive instructions for highly reliable applications. \endif