]> begriffs open source - cmsis/blob - CMSIS/DoxyGen/RTOS2/src/mainpage.md
Doc: various improvements in documentation.
[cmsis] / CMSIS / DoxyGen / RTOS2 / src / mainpage.md
1 # Overview {#mainpage}
2
3 Modern embedded applications often need to concurrently execute multiple activities such as sensor readings, connectivity, machine-learning algorithms, graphics display and others. A real-time operating system (RTOS) equips users with necessary mechanisms that simplify implementation of complex programs and ensure their reliable operation with deterministic timing.
4
5 The **CMSIS-RTOS2** specifies a generic RTOS interface over real-time OS kernels running on Arm® Cortex® processor-based devices. Applications and middleware components can \ref usingOS2 "use CMSIS_RTOS2 API" for better code reuse and simpler integration in various software ecosystems.
6
7 CMSIS-RTOS2 also specifies a standard \ref CMSIS_RTOS_TickAPI "OS Tick interface" for use by RTOS kernels. It provides several OS tick implementations for simple kernel porting to different Cortex-M and Cortex-A processors.
8
9 ![CMSIS-RTOS2 interface](./images/cmsis_rtos2_overview.png)
10
11 ## Benefits {#rtos2_benefits}
12
13 CMSIS-RTOS2 provides great benefits to the embedded developers and software vendors:
14
15  - The CMSIS-RTOS2 API covers all common services expected from a modern RTOS kernel for efficient thread management, inter-thread communication, timing control and others. See \ref rtos2_functionalities for details.
16  - The unified API increases developers' productivity and reduces learning efforts. It makes the software components reusable across different software stacks.
17  - The API enables use of advanced CPU features by RTOS and application, such as secure/non-secure execution with TrustZone, multi-core operation, access protection with MPU, and others.
18  - The C interface is binary compliant with the [Application Binary Interface (ABI) for Arm architecture](https://github.com/ARM-software/abi-aa/) and enables inter-operation between various toolchains.
19  - \ref rtosValidation "RTOS Validation Suite" provides a set of tests to verify compatibility to CMSIS-RTOS2 API definitions.
20  - CMSIS-RTOS2 is well adopted by the industry, has many years of continuous improvements and commitment for future developments.
21
22 \note The CMSIS-RTOS2 defines a minimum feature set. It's architecture allows to use advanced vendor-specific features directly as well.
23
24 ## Supported RTOS kernels {#rtos2_kernels}
25
26 Several popular RTOS kernels include support for CMSIS-RTOS2 API:
27
28 **CMSIS-RTX** (or Keil RTX5): provides most complete support for CMSIS-RTOS2 API and uses it as native interface. For more information see:
29  - [CMSIS-RTX GitHub repository](https://github.com/ARM-software/CMSIS-RTX)
30  - [CMSIS-RTX Documentation](https://arm-software.github.io/CMSIS-RTX/)
31
32 **FreeRTOS** : this popular RTOS kernel is enabled with CMSIS-RTOS2 API in the *CMSIS-FreeRTOS* variant. To learn more see:
33  - [CMSIS-FreeRTOS GitHub repository](https://github.com/ARM-software/CMSIS-FreeRTOS)
34  - [CMSIS-FreeRTOS Documentation](https://arm-software.github.io/CMSIS-FreeRTOS/)
35
36 **Zephyr RTOS**: is developed under governance of Linux Foundation and includes CMSIS-RTOS2 support. See more at:
37  - [Zephyr GitHub repository](https://github.com/zephyrproject-rtos/zephyr), see folder *subsys/portability/cmsis_rtos_v2/*
38  - [Zephyr documentation about CMSIS-RTOS2 support](https://docs.zephyrproject.org/latest/services/portability/cmsis_rtos_v2.html)
39
40 ## Access to CMSIS-RTOS2 {#rtos2_access}
41
42 CMSIS-RTOS2 and OS Tick intefaces are actively maintained in [**CMSIS 6 GitHub repository**](https://github.com/ARM-software/CMSIS_6) and provided as part of the [CMSIS Software Pack](../../General/html/cmsis_pack.html).
43
44 The following files relevant to CMSIS-RTOS2 are present in the **ARM::CMSIS** Pack directories:
45
46 File/Directory                        | Content
47 :-------------------------------------|:----------------------------------------------------
48 📂 CMSIS                              | CMSIS Base software components folder 
49  ┣ 📂 Documentation/RTOS2             | A local copy of this CMSIS-RTOS2 documentation
50  ┗ 📂 RTOS2                           | CMSIS-RTOS2 API header files and OS tick implementations
51    ┣ 📂 Include             | API header files
52     ┣ 📄 cmsis_os2.h    | \ref cmsis_os2_h
53     ┗ 📄 os_tick.h      | \ref CMSIS_RTOS_TickAPI header file
54    ┗ 📂 Source               | OS tick implementations
55     ┣ 📄 os_systick.c   | OS tick implementation using Cortex-M SysTick timer
56     ┣ 📄 os_tick_gtim.c | OS tick implementation using Cortex-A Generic Timer
57     ┗ 📄 os_tick_ptim.c | OS tick implementation using Cortex-A Private Timer
58