Cortex Microcontroller Software Interface Standard (CMSIS) technology is dedicated to help software engineers creating program codes for any Cortex-M based microcontroller in the fastest and most reliable way. As soon as all drivers, libraries and middleware are carefully created by ARM and silicon vendors and verified by ARM, it can guarantee that startup code and MCU peripheral configuration code will be generated correctly.
As microcontroller unit’s (MCU) peripherals became more and more complex and configuration process took more and more time, the microcontroller’s peripheral control registers configuration process was a real source of potential problems. Back to the 8-bit microcontrollers era then this process usually could be done by software design engineers in a few minutes or at least hours. But at the same time, it was easy to make minor or hidden mistakes that might lead to serious problems during final code debugging. Moreover, every MCU vendor had its own peripheral configuration process description style and it was a real challenge to change MCU vendor. This situation caused a never-ending conflict between economic time-to-market factors and designer skills’ aspects.
A few years later, 32-bit microcontrollers with rich peripherals were introduced and MCU’s peripheral control registers configuration was a hassle for software design engineers. In 2008, the Keil company therefore introduced the new revolutionary technology Cortex Microcontroller Software Interface Standard (CMSIS). CMSIS offers a very simple configuration interface between microcontroller core and peripheral units. This technology allows to speed-up both the peripherals configuration process and the time-to-market for commercial success. It also avoids configuration errors. Moreover, this universal technology can be used in any ARM Cortex-M and Cortex-A microcontrollers.
CMSIs in details
CMSIS has a modular structure and each module can be used or updated independently. Some of the modules are device specific, thus for every ARM Cortex microcontrollers family a collection of CMSIS modules is created, the device family pack (DFP).
Fig. 1 General peripherals block-scheme of typical ARM Cortex-M microcontroller
CMSIS modules (ordered by frequency of use)
CMSIS-RTOS offers deterministic real-time software execution control for simple embedded applications. Every ARM software product includes it, starting from free Keil Microcontroller Development Kit (MDK Lite) to most featured ARM Design Studio products as part of MDK. In fact, CMSIS-RTOS is an application programming interface (API) that enables consistent software layers with middleware and library components.
CMSIS-Driver offers a software API that describes peripheral driver interfaces for middleware stacks and user applications. The CMSIS-Driver API describes API interface by header files and documentation. The CMSIS-Driver API covers a wide range of the supported peripheral units for most of potential cases.
Fig. 2 Shows a typical structure of relations between software components and hardware units
CMSIS-CORE – possibly the most important part – manages system startup, processor core access, and peripheral definitions for use in every embedded application. ARM offers a generic CMSIS-CORE system files, so-called templates. Based on this template every MCU vendor creates and offers its own device family pack (DFP). Software engineers are free to use generic resources or specific ones.
CMSIS-Pack is an XML-based file describing the content of a software pack that includes source codes, header files, software libraries, source code templates, and device parameters along with startup code and programming algorithms. It includes example projects for microcontrollers and development boards. The complete file collection is shipped in *.pack (ZIP-format archive). After installing the software pack, all software components included are available to the development tools.
CMSIS-DSP allows to develop a real-time digital signal processing (DSP) system being not trivial as the DSP algorithms. The CMSIS-DSP library is a rich collection of DSP functions that are optimized for the various Cortex-M processor cores. CMSIS-DSP is widely used in the industry and also enables optimized C code generation from MATLAB®.
CMSIS-SVD is included in CMSIS-Pack. It supports microcontroller detailed views to the device peripherals which displays the current register state with system view description (SVD) format.
CMSIS-DAP is an integrated tool that uses standardized interface to the Cortex debug access port (DAP) and is also used by several starter and development kits. Therefore, engineers do not need special debug units like ULINK, J-Link or similar ones for basic board evaluation.
CMSIS packages include many other modern and specific libraries and middleware such as CMSIS-NN (neural networks and machine learning functions especially for IoT applications), and CMSIS-Zone (supports multiple cores MCUs, secured and non-secured programming) for most modern Cortex-M cores.
For more information about our Keil products, visit our website.
Leave a Reply