The CMSIS-Core Device Files implement CMSIS-Core support for a specific microcontroller device or family of devices. These files are typically provided by the device vendor and use CMSIS-Core Standard Files via #include directives.
CMSIS-Core specifies the organization of CMSIS-Core Device Files, defines their functionalities, and provides unified naming conventions. This brings following benefits:
Following CMSIS-Core Device Files are defined:
Delivery in CMSIS-Packs explains how to distribute CMSIS-Core Device Files in CMSIS-Pack format.
CMSIS-Core includes the template files that simplify the creation of CMSIS-Core Device Files for a specific device variant.
Silicon vendors typically need to add to these template files the following information:
| Template File | Description | 
|---|---|
| 📂 CMSIS/Core/Template/Device_M | Folder with CMSIS-Core device file templates (See on GitHub) | 
| ┣ 📂 Config | Template configuration files | 
| ┣ 📄 Device_ac6.sct | Scatter-Loading description file <device>_ac6.sct template | 
| ┣ 📄 Device_gcc.ld | Linker description file for GNU GCC Arm Embedded Compiler | 
| ┗ 📄 partition_Device.h | TrustZone setup: partition_<Device>.h template | 
| ┣ 📂 Include | Template header files | 
| ┣ 📄 Device.h | Device Header File <Device.h> template | 
| ┗ 📄 system_Device.h | system_Device Template Files | 
| ┗ 📂 Source | Template C files | 
| ┣ 📄 startup_Device.c | Startup File startup_<Device>.c template | 
| ┗ 📄 system_Device.c | system_Device Template Files | 
Adapt Template Files to a Device
Each template file contains comments that start with ToDo: and describe required modifications.
The templates contain several placeholders that need to be replaced when creating CMSIS-Core device files:
| Placeholder | To be replaced with | 
|---|---|
<Device>    | The specific device name or device family name, for example LPC17xx     | 
<DeviceInterrupt>    | The specific interrupt name of the device, for example TIM1 for Timer 1 interrupt     | 
<DeviceAbbreviation>    | Short name or abbreviation of the device family, for example LPC     | 
Cortex-M#    | The specific Cortex-M processor name, for example Cortex-M3    | 
Device files for the Device Examples can be also a good reference point for implementing CMSIS-Core support for specific devices.