Keil Logo


Learning Platform

The Cortex Microcontroller Software Interface Standard (CMSIS) provides a software framework for embedded applications that run on Cortex-M based microcontrollers and Cortex-A5/A7/A9 based processors. CMSIS was started in 2008. It is a close cooperation with various silicon and software vendors.

CMSIS enables consistent and simple software interfaces to the processor and the peripherals, simplifying software reuse, reducing the learning curve for microcontroller developers.

CMSIS Version 5.3

Benefits of CMSIS

CMSIS-RTOS: Deterministic real-time software execution

A super-loop concept is only adequate for simple embedded applications. Cortex-M microcontrollers are designed for real-time operating systems that give you resource and time control.

CMSIS-RTOS is an API that enables consistent software layers with middleware and library components. Keil RTX5 is based on CMSIS-RTOS and runs on every Cortex-M device. It is the proven reference implementation that is easy to learn and use. A FreeRTOS adaptation using the CMSIS-RTOS API is available on GitHub.

CMSIS-NN: Collection of efficient neural network kernels

Neural networks and machine learning are functions that are being pushed into the end node if IoT applications.

The neural network kernels of the CMSIS-NN library help to maximize the performance and minimize the memory footprint of neural networks on Cortex-M processor cores.

CMSIS-DSP: Fast implementation of digital signal processing

Developing a real-time digital signal processing (DSP) system is not trivial as the DSP algorithms heavily rely on complex mathematical operations that are even time-critical.

CMSIS-DSP library is a rich collection of DSP functions that are optimized by ARM for the various Cortex-M processor cores. CMSIS-DSP is widely used in the industry and enables also optimized C code generation from MATLAB®. The ASN Filter Designer generates CMSIS-DSP code that you can directly use in your application.

CMSIS-Driver: Generic peripheral interfaces for middleware and application code

Interfacing microcontroller peripherals with middleware or generic application code can be challenging as each device is different.

Ready-to use CMSIS-Driver interfaces are today available for many microcontroller families and avoid cumbersome and time consuming driver porting. Refer to the CMSIS Workshop for more information.

CMSIS-CORE: Consistent system startup and peripheral access

System startup, processor core access, and peripheral definitions are essential for every embedded application.

The standardized CMSIS-CORE is implemented for Cortex-A and Cortex-M based devices and makes it easy to get started with a new device or migrate software across devices. Refer to "Using CMSIS in Embedded Applications" for more information.

CMSIS-Pack: Easy access to reusable software components

Previously, software modules were hard to integrate as the source and header files had unclear requirements, inconsistent documentation, or missing license information.

CMSIS-Pack simplifies software reuse as it defines the structure of a Software Pack. This file collection includes source, header, and library files along with documentation, dependencies to other software or hardware, source code templates, and example projects.

CMSIS-SVD: Consistent view to device and peripherals

The µVision Debugger offers for every supported microcontroller detailed views to the device peripherals which display the current register state.

These views are enabled by CMSIS-SVD files that are provided by the silicon vendors. These files ensure that the debugger view matches the actual implementation of the device peripherals.

CMSIS-DAP: Connectivity to low-cost evaluation hardware

Inexpensive development boards are available from many microcontroller vendors. Frequently, a low-cost debug unit is included, but different interfaces need a specific tool setup.

CMSIS-DAP is a standardized interface to the Cortex debug access port (DAP) and is used by many starter kits and supported by various debuggers. The µVision Debugger includes an easy-to-use CMSIS-DAP interface to support flash programming and run-control debugging.

CMSIS-Zone: Simplify the configuration of modern embedded systems

Today, many microcontrollers offer multiple cores and additional MPUs. Modern Armv8-M based microcontrollers allow great flexibility in handling secure and non-secure programming. Thus, System partitioning can become a complex task.

CMSIS-Zone defines methods to describe system resources and to partition these resources into multiple projects and execution areas.

  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.