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:

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.