Efficient Software Development

The Cortex Microcontroller Software Interface Standard goes a long way to streamlining interfaces and other software.


In the past few years, the cost of developing software for embedded systems has exploded. Previously, hardware was the biggest chunk of that cost. These days software stresses the engineering budget. Why is that?

For the past 20 years or so, of the many thoroughly standardized hardware interfaces, some have been integrated into the silicon of the micro controller thereby reducing the bill of materials and the complexity of the hardware layout. However, it comes at a cost: someone has to implement interfaces for all of the software stacks into software as implementation is not standardized.

We thought about how to standardize widely used software components in ARM Cortex-M based microcontrollers in order to make dramatic reductions to the end user’s effort. The resulting Cortex Microcontroller Software Interface Standard (CMSIS) enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reduces the learning curve for new microcontroller developers and is meant to give time-to-market advantages while cutting application development costs.

CMSIS has been widely adopted by our silicon partners, as well as other tool vendors and third party developers of software components.

Specifications for the current version, CMSIS 4, include:

  • CMSIS-CORE, an API for the Cortex-M processor and its peripherals. A Hardware Abstraction Layer (HAL) for the processor registers provides standardized definitions for the SysTick, NVIC, peripherals, and core access functions.
  • CMSIS-SVD formalizes the description of the whole system, especially the memory mapped registers of peripherals, which ensure consistency between the device header file and the debugger display.
  • CMSIS-DAP firmware that runs on an external microcontroller to connect the debug access port of a target device to a debugger.
  • CMSIS-RTOS API, a generic RTOS interface for Cortex-M processor-based devices. The API enables software developers to switch between different real-time operating systems without the need of re-writing the application code.
  • CMSIS-DSP, a software library consisting of over 60 common signal-processing functions optimized for usage on Cortex-M based processors.
  • CMSIS-Driver, a software API that describes peripheral driver interfaces for middleware stacks and user applications including USART, SPI, I2C, NAND and NOR Flash memory, MCI, Ethernet and USB.
  • CMSIS-Pack, a delivery mechanism for software components, device parameters, and evaluation board support that may include source code, header files, and software libraries; documentation and source code templates; device parameters along with startup code and programming algorithms; and example projects.



Additional resources:

–Upcoming webinar, “Efficient software development with the ARM Cortex Microcontroller Software Interface Standard v4.” Click here to register.

Read what other developers and engineers are saying about CMSIS in the ARM Connected Community.