Follow+Star Public Account, don’t miss the exciting content
Author | strongerHuang
WeChat Official Account | strongerHuang
CMSIS: Cortex Microcontroller Software Interface Standard. It contains a lot of content:
-
CMSIS-RTOS: Mainly used for RTOS API, providing a consistent software layer that can work with middleware and library components.
-
CMSIS-DSP: A rich set of DSP functions optimized by Arm for various Cortex-M processor cores.
-
CMSIS-Driver: Interfaces available for many microcontroller families.
-
CMSIS-Pack: Defines packages containing software components.
-
CMSIS-SVD: Provides a detailed view of device peripherals through the current register state.
-
CMSIS-DAP: A standardized interface for Cortex Debug Access Port (DAP).
-
CMSIS-NN: A collection of efficient neural network kernels.
When using STM32CubeMX to configure FreeRTOS, there are options for CMSIS_V1 and CMSIS_V2. Do you know the difference between CMSIS_V1 and CMSIS_V2?
Next, let’s briefly share some information about CMSIS-RTOS.
Cortex Microcontroller Software Interface Standard is a set of standards jointly followed by ARM and some compiler manufacturers and semiconductor manufacturers, specifically proposed by ARM for the CORTEX-M series.
Under this standard, ARM and chip manufacturers provide some common API interfaces to access Cortex cores and some dedicated peripherals, reducing the time and cost associated with porting when changing chips and development tools.
As long as the chips are based on Cortex, the code can be reused. CMSIS is a vendor-independent hardware abstraction layer for the Cortex-M processor series. Using CMSIS allows for a consistent and simple software interface for processors and peripherals, simplifying software reuse, shortening the learning curve for new microcontroller developers, and accelerating time-to-market for new devices.
The main content of CMSIS is as previously shared in the Cortex-M content:
-
CMSIS-RTOS: Mainly used for RTOS API, providing a consistent software layer that can work with middleware and library components.
-
CMSIS-DSP: A rich set of DSP functions optimized by Arm for various Cortex-M processor cores.
-
CMSIS-Driver: Interfaces available for many microcontroller families.
-
CMSIS-Pack: Defines packages containing software components.
-
CMSIS-SVD: Provides a detailed view of device peripherals through the current register state.
-
CMSIS-DAP: A standardized interface for Cortex Debug Access Port (DAP).
-
CMSIS-NN: A collection of efficient neural network kernels.
For more related introductions, you can refer to the article: Cortex-M Software Interface Standard CMSIS
As we know, real-time operating systems are the cornerstone of the embedded field, and there are many optional embedded operating systems, such as FreeRTOS, μCOS, RT-Thread, RTX, ThreadX, uLinux, etc.
CMSIS-RTOS is an operating system standard software interface released by ARM to unify operating systems and lower the embedded threshold. In simple terms, CMSIS-RTOS masks the operating system (whether it is FreeRTOS or RTX, etc.) and provides CMSIS-RTOS interface functions for end users to call.
As a result, end users only need to learn CMSIS-RTOS, thus lowering the learning threshold. (Currently, FreeRTOS and RTX can support CMSIS-RTOS well, while some other RTOS have not yet been adapted).
CMSIS-RTOS is a universal API for real-time operating systems. It provides a standardized programming interface; it simply encapsulates RTX/Embos, and may later encapsulate μCOS, ThreadX, and other third-party RTOS.
As mentioned at the beginning, when configuring FreeRTOS in STM32CubeMX, there is an option for CMSIS_V1 and CMSIS_V2:
At the same time, CMSIS-RTOS also provides good support for Keil’s RTX. If you have installed Keil MDK, you will find the RTX source code in the CMSIS directory:
By the way: RTX, like μCOS, ThreadX, and other RTOS, is also free and open-source (the source code is in the CMSIS directory, you can check it yourself), following the Apache 2.0 open-source license.
CMSIS RTOS is the foundation of ARM’s currently popular IoT operating system mbedOS. Understanding this RTOS API is beneficial for engaging in RTOS low-level and IC low-level software development.
Here’s a recommended tutorial on creating threads using CMSIS-RTOS:
https://blog.csdn.net/ichamber/article/details/53116253
It can be portable to many RTOS, allowing software templates, middleware, libraries, and other components to work on supported RTOS systems (ST has done CMSIS-RTOS low-level support specifically for FreeRTOS, so you will see options for CMSIS_V1 and CMSIS_V2 in STM32CubeMX).
For more content about CMSIS-RTOS, you can refer to the official tutorial:
https://www.keil.com/pack/doc/CMSIS/RTOS2/html/rtos_api2.html
(The public account does not support external links, please copy the link to your browser to open)
———— END ————
● Column “Embedded Tools”
● Column “Embedded Development”
● Column “Keil Tutorial”
● Selected Tutorials in Embedded Column
Follow the public account reply “Join Group” to join the technical exchange group according to the rules, reply “1024” to see more content.


Click “Read Original” to see more shares.