1# Overview {#mainpage} 2 3The **CMSIS-Core (Cortex-M)** component implements the basic run-time system for Arm Cortex-M devices and gives the user access to the processor core and the device peripherals. 4 5In detail it defines: 6 7 - **Hardware Abstraction Layer (HAL)** for Cortex-M processor registers with standardized definitions for the SysTick, NVIC, System Control Block registers, MPU registers, FPU registers, and core access functions. 8 - **System exception names** to interface to system exceptions without having compatibility issues. 9 - **Methods to organize header files** that makes it easy to learn new Cortex-M microcontroller products and improve software portability. This includes naming conventions for device-specific interrupts. 10 - **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. 11 - **Intrinsic functions** used to generate CPU instructions that are not supported by standard C functions. 12 - A variable to determine the **system clock frequency** which simplifies the setup the SysTick timer. 13 14 15The following sections provide details about the CMSIS-Core (Cortex-M): 16 17 - \ref using_pg explains the project setup and shows a simple program example. 18\if ARMv8M 19 - \ref using_TrustZone_pg "Using TrustZone® for Armv8-M" describes how to use the security extensions available in the Armv8-M architecture. 20\endif 21 - \ref cmsis_core_files describes the files of the CMSIS-Core (Cortex-M) in detail and explains how to adapt template files provided by Arm to silicon vendor devices. 22 - \ref coreMISRA_Exceptions_pg describes the violations to the MISRA standard. 23 - [**API Reference**](modules.html) describes the features and functions of the \ref device_h_pg in detail. 24 - [**Data Structures**](annotated.html) describe the data structures of the \ref device_h_pg in detail. 25 26## Access to CMSIS-Core (Cortex-M) 27 28CMSIS-Core is actively maintained in the [**CMSIS 6 GitHub repository**](https://github.com/ARM-software/CMSIS_6) and released as part of the [**CMSIS Software Pack**](../General/cmsis_pack.html). 29 30The following directories and files relevant to CMSIS-Core (Cortex-M) are present in the **ARM::CMSIS** Pack: 31 32Directory | Content 33:---------------------------------|:------------------------------------------------------------------------ 34 CMSIS | CMSIS Base software components folder 35 ┣ Documentation/html/Core | A local copy of this CMSIS-Core (M) documentation 36 ┗ Core | CMSIS-Core files 37   ┣ Include | \ref cmsis_processor_files. 38    ┗ m-profile| Header files specific for Arm M-Profile.<br/> See \ref cmsis_compiler_files and \ref cmsis_feature_files. 39   ┗ Template | \ref cmsis_template_files 40 41## Processor Support {#ref_v6-v8M} 42 43CMSIS-Core supports the complete range of [Cortex-M processors](https://www.arm.com/products/silicon-ip-cpu?families=cortex-m&showall=true). 44 45\anchor ref_man_sec 46**Cortex-M Generic User Guides** 47 48Following Cortex-M Device Generic User Guides contain the programmers model and detailed information about the core peripherals: 49 50 - [Cortex-M0 Devices Generic User Guide (Armv6-M architecture)](https://developer.arm.com/documentation/dui0497/latest/) 51 - [Cortex-M0+ Devices Generic User Guide (Armv6-M architecture)](https://developer.arm.com/documentation/dui0662/latest/) 52 - [Cortex-M3 Devices Generic User Guide (Armv7-M architecture)](https://developer.arm.com/documentation/dui0552/latest/) 53 - [Cortex-M4 Devices Generic User Guide (Armv7-M architecture)](https://developer.arm.com/documentation/dui0553/latest/) 54 - [Cortex-M7 Devices Generic User Guide (Armv7-M architecture)](https://developer.arm.com/documentation/dui0646/latest/) 55 - [Cortex-M23 Devices Generic User Guide (Armv8-M architecture)](https://developer.arm.com/documentation/dui1095/latest/) 56 - [Cortex-M33 Devices Generic User Guide (Armv8-M architecture)](https://developer.arm.com/documentation/100235/latest/) 57 - [Cortex-M52 Devices Generic User Guide (Armv8.1-M architecture)](https://developer.arm.com/documentation/102776/latest/) 58 - [Cortex-M55 Devices Generic User Guide (Armv8.1-M architecture)](https://developer.arm.com/documentation/101273/latest/) 59 - [Cortex-M85 Devices Generic User Guide (Armv8.1-M architecture)](https://developer.arm.com/documentation/101928/latest/) 60 61CMSIS-Core also supports the following Cortex-M processor variants: 62 63 - [Cortex-M1](https://developer.arm.com/Processors/Cortex-M1) is a processor designed specifically for implementation in FPGAs (Armv6-M architecture). 64 - [SecurCore SC000](https://developer.arm.com/Processors/SecurCore%20SC000) is designed specifically for smartcard and security applications (Armv6-M architecture). 65 - [SecurCore SC300](https://developer.arm.com/Processors/SecurCore%20SC300) is designed specifically for smartcard and security applications (Armv7-M architecture). 66 - [Cortex-M35P](https://developer.arm.com/Processors/Cortex-M35P) is a tamper resistant Cortex-M processor with optional software isolation using TrustZone for Armv8-M. 67 - [STAR-MC1](https://www.armchina.com/mountain?infoId=160) is a variant of Armv8-M with TrustZone designed by Arm China. 68 69\anchor ARMv8M 70**Armv8-M and Armv8.1-M Architecture** 71 72Armv8-M introduces two profiles **baseline** (for power and area constrained applications) and **mainline** (full-featured with optional SIMD, floating-point, and co-processor extensions). Both Armv8-M profiles and Armv8.1-M are supported by CMSIS. 73 74The Armv8-M architecture is described in the [Armv8-M Architecture Reference Manual](https://developer.arm.com/documentation/ddi0553/latest/). 75 76The Armv8.1-M architecture further extends Armv8-M with Helium (the so called M-Profile Vector Extension (MVE)), as well as further instruction set and debug extensions. 77 78More information about Armv8.1-M architecture is available under [Arm Helium technology](https://developer.arm.com/Architectures/Helium). 79 80## Tested and Verified Toolchains {#tested_tools_sec} 81 82The \ref cmsis_core_files delivered with this CMSIS-Core release have been tested and verified with the following toolchains: 83 84 - Arm Compiler for Embedded 6.22 85 - IAR C/C++ Compiler for Arm 9.40 86 - GNU Arm Embedded Toolchain 13.2.1 87 - LLVM/Clang 18.3.1 88