| CMSIS-Core (Cortex-M) CMSIS-Core support for Cortex-M processor-based devices |

Loading...
Searching...
No Matches
CMSIS-Core Device Files

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:

- Simplified device support for vendors with fast scaling for device families and variants on all Arm Cortex-M cores.
- Uniform workflows and experience for application developers.

Following CMSIS-Core Device Files are defined:

- System Configuration Files system_<Device>.c and system_<Device>.h
- Device Header File <Device.h>
- Startup File startup_<Device>.c
- Scatter-Loading description file <device>_ac6.sct
- TrustZone setup: partition_<Device>.h
- Region/ISR setup: partition_gen.h

Delivery in CMSIS-Packs explains how to distribute CMSIS-Core Device Files in CMSIS-Pack format.

# Device Template Files

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:

- Device Peripheral Access Layer that provides definitions for device-specific peripherals.
- Access Functions for Peripherals (optional) that provides additional helper functions to access device-specific peripherals.
- Interrupt vectors in the startup file that are device specific.

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.