/**
\page templates_pg CMSIS-Core Device Templates
\details
Arm supplies CMSIS-Core device template files for the all supported Cortex-A processors and various compiler vendors.
Refer to the list of \ref tested_tools_sec for compliance.
These CMSIS-Core device template files include the following:
- Register names of the Core Peripherals and names of the Core Exception Vectors.
- Functions to access core peripherals, cache, MMU and special CPU instructions
- Generic startup code and system configuration code.
The detailed file structure of the CMSIS-Core device templates is shown in the following picture.
\section CMSIS_Processor_files CMSIS-Core Processor Files
The CMSIS-Core processor files provided by Arm are in the directory .\\CMSIS\\Core_A\\Include. These header files define all processor specific attributes do not need any modifications.
The core_<cpu>.h defines the core peripherals and provides helper functions that access the core registers. One file is available for each supported Cortex-A processor:
Header File | Processor
:----------------|:------------------------------
core_ca.h | generics for all supported Cortex-A processors
\section device_examples Device Examples
The CMSIS Software Pack defines several devices that are based on the various processors. The device related CMSIS-Core files are in the directory .\\Device\\ARM
and include CMSIS-Core processor file explained before. The following sample devices are defined in the CMSIS-Pack description file ARM.CMSIS.pdsc:
Family | Device | Description
:------------------|:------------------|:---------------------------------
ARM Cortex-A5 | ARMCA5 | Cortex-A5 based device
ARM Cortex-A7 | ARMCA7 | Cortex-A7 based device
ARM Cortex-A9 | ARMCA9 | Cortex-A9 based device
\section template_files_sec Template Files
To simplify the creation of CMSIS-Core device files, the following template files are provided that should be extended by the silicon vendor to reflect the actual device and device peripherals.
Silicon vendors 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 |
| .\\Device\\\_Template_Vendor\\Vendor\\Device_A\\Source\\ARM\\startup_Device.c |
Startup file template for Arm C/C++ Compiler. |
| .\\Device\\\_Template_Vendor\\Vendor\\Device_A\\Source\\ARM\\Device.sct |
Linker scatter file template for Arm C/C++ Compiler. |
| .\\Device\\\_Template_Vendor\\Vendor\\Device_A\\Source\\system_Device.c |
Generic system_Device.c file for system configuration (i.e. processor clock and memory bus system). |
| .\\Device\\\_Template_Vendor\\Vendor\\Device_A\\Source\\mmu_Device.c |
Sample mmu_Device.c file with memory map description for Memory Management Unit (MMU) configuration. |
| .\\Device\\\_Template_Vendor\\Vendor\\Device_A\\Include\\Device.h |
Generic device header file. Needs to be extended with the device-specific peripheral registers. Optionally functions that access the peripherals
can be part of that file. |
| .\\Device\\\_Template_Vendor\\Vendor\\Device_A\\Include\\system_Device.h |
Generic system device configuration include file. |
| .\\Device\\\_Template_Vendor\\Vendor\\Device_A\\Include\\mem_Device.h |
Generic memory base address and size definitions used in scatter file. Settable via Configuration Wizard. |