CMSIS-Driver specifies generic driver interfaces for peripherals commonly used in embedded systems with Armยฎ Cortexยฎ processors.
User applications and middleware components can control such peripherals using the CMSIS-Driver API and so achieve better code reuse and simpler integration in various ecosystems. The API is designed to be generic and independent of a specific RTOS making it reusable across a wide range of supported microcontroller devices.
The following block diagram shows an exemplary set up for various drivers.
The standard CMSIS-Driver interfaces connect microcontroller peripherals with middleware that implements communication stacks, file system and graphic user interfaces.
Using CMSIS-Driver provides great benefits to the embedded developers and software vendors:
CMSIS-Driver APIs are defined for the following driver interfaces:
A list of current CMSIS-Driver implementations is available here.
CMSIS-Driver intefaces are actively maintained in the CMSIS 6 GitHub repository and released as part of the CMSIS Software Pack.
The CMSIS Software Pack publishes the API Interface under the Component Class CMSIS Driver with header files and a documentation. These header files are the reference for the implementation of the standardized peripheral driver interfaces.
These implementations are published typically in the Device Family Pack of a related microcontroller family under the Component Class CMSIS Driver. A Device Family Pack may contain additional interfaces in the Component Class Device to extend the standard Peripheral Drivers covered by this CMSIS-Driver specification with additional device specific interfaces for example for Memory BUS, GPIO, or DMA.
The following directories and files relevant to CMSIS-Driver are present in the ARM::CMSIS Pack:
Directory | Content |
---|---|
๐ CMSIS | CMSIS Base software components folder |
โฃ ๐ Documentation/html/Driver | A local copy of this CMSIS-Driver documentation |
โฃ ๐ Driver | Directory with CMSIS-Driver component, see CMSIS-Driver Files |
โฃ ๐ DriverTemplates | Driver Template files (Driver_interface.c) |
โฃ ๐ Include | API header files (Driver_interface.h, Driver_Common.h) |
โ ๐ VIO | Implementation of virtual Input/Output interface (VIO) |