CMSIS-Core (Cortex-A) implements the basic run-time system for a Cortex-A device and gives the user access to the processor core and the device peripherals. In detail it defines:
- Hardware Abstraction Layer (HAL) for Cortex-A processor registers with standardized definitions for the GIC, FPU, MMU, Cache, and core access functions.
- System exception names to interface to system exceptions without having compatibility issues.
- Methods to organize header files that makes it easy to learn new Cortex-A microcontroller products and improve software portability. This includes naming conventions for device-specific interrupts.
- Methods for system initialization to be used by each MCU vendor. For example, the standardized SystemInit() function is essential for configuring the clock system of the device.
- Intrinsic functions used to generate CPU instructions that are not supported by standard C functions.
- A variable to determine the system clock frequency which simplifies the setup of the system timers.
The following sections provide details about the CMSIS-Core (Cortex-A):
Access to CMSIS-Core (Cortex-A)
CMSIS-Core is actively maintained in CMSIS 6 GitHub repository and released as part of the CMSIS Software Pack.
The following directories and files relevant to CMSIS-Core (Cortex-A) are present in the ARM::CMSIS Pack:
| Directory | Content |
| 📂 CMSIS | CMSIS Base software components folder |
| ┣ 📂 Documentation/html/Core_A | A local copy of this CMSIS-Core (A) documentation |
| ┗ 📂 Core | CMSIS-Core files |
| ┣ 📂 Include | CMSIS-Core Processor Files. |
| ┗ 📂 a-profile | Header files specific for Arm A-Profile. |
| ┗ 📂 Template | Template Files |
Processor Support
CMSIS supports a selected subset of Cortex-A processors.
Cortex-A Technical Reference Manuals
The following Technical Reference Manuals describe the various Arm Cortex-A processors:
Tested and Verified Toolchains
The CMSIS-Core Device Templates supplied by Arm have been tested and verified with the following toolchains:
- Arm: Arm Compiler 5.06 update 7
- Arm: Arm Compiler 6.16
- Arm: Arm Compiler 6.6.4
- GNU: GNU Arm Embedded Toolchain 10-2020-q4-major (10.2.1 20201103)
- IAR: IAR ANSI C/C++ Compiler for Arm 8.20.1.14183