/** \mainpage Overview CMSIS-Core (Cortex-M) implements the basic run-time system for a Cortex-M device and gives the user access to the processor core and the device peripherals. In detail it defines: - 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. - 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-M 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 the SysTick timer. The following sections provide details about the CMSIS-Core (Cortex-M): - \ref using_pg describes the project setup and shows a simple program example. \if ARMv8M - \ref using_TrustZone_pg "Using TrustZone® for Armv8-M" describes how to use the security extensions available in the Armv8-M architecture. \endif - \ref templates_pg 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. - \ref coreMISRA_Exceptions_pg describes the violations to the MISRA standard. - \b Reference describe the features and functions of the \ref device_h_pg in detail. - \b Data \b Structures describe the data structures of the \ref device_h_pg in detail.
CMSIS-Core (Cortex-M) in ARM::CMSIS Pack ----------------------------- Files relevant to CMSIS-Core (Cortex-M) are present in the following ARM::CMSIS directories: |File/Folder |Content | |------------------------------|------------------------------------------------------------------------| |\b CMSIS\\Documentation\\Core | This documentation | |\b CMSIS\\Core\\Include | CMSIS-Core (Cortex-M) header files (for example core_cm3.h, core_cmInstr.h, etc.) | |\b Device | \ref using_ARM_pg "Arm reference implementations" of Cortex-M devices | |\b Device\\\_Template_Vendor | \ref templates_pg for extension by silicon vendors |
\section ref_v6-v8M Processor Support CMSIS supports the complete range of Cortex-M processors and the Armv8-M/v8.1-M architecture including security extensions. \subsection ref_man_sec Cortex-M Generic User Guides The Cortex-M Device Generic User Guides contain the programmers model and detailed information about the core peripherals and are available for: - Cortex-M0 Devices Generic User Guide (Armv6-M architecture) - Cortex-M0+ Devices Generic User Guide (Armv6-M architecture) - Cortex-M3 Devices Generic User Guide (Armv7-M architecture) - Cortex-M4 Devices Generic User Guide (Armv7-M architecture) - Cortex-M7 Devices Generic User Guide (Armv7-M architecture) - Cortex-M23 Devices Generic User Guide (Armv8-M architecture) - Cortex-M33 Devices Generic User Guide (Armv8-M architecture) - Cortex-M55 Devices Generic User Guide (Armv8.1-M architecture) - Cortex-M85 Devices Generic User Guide (Armv8.1-M architecture) CMSIS also supports the following Cortex-M processor variants: - Cortex-M1 is a processor designed specifically for implementation in FPGAs (Armv6-M architecture). - SecurCore SC000 is designed specifically for smartcard and security applications (Armv6-M architecture). - SecurCore SC300 is designed specifically for smartcard and security applications (Armv7-M architecture). - Cortex-M35P is a tamper resistant Cortex-M processor with optional software isolation using TrustZone for Armv8-M. - STAR-MC1 is a variant of Armv8-M with TrustZone designed by Arm China. \subsection ARMv8M Armv8-M and Armv8.1-M Architecture Armv8-M introduces two profiles \b baseline (for power and area constrained applications) and \b mainline (full-featured with optional SIMD, floating-point, and co-processor extensions). Both Armv8-M profiles and Armv8.1-M are supported by CMSIS. The Armv8-M architecture is described in the Armv8-M Architecture Reference Manual. The 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. More information about Armv8.1-M architecture is available under Arm Helium technology.
\section tested_tools_sec Tested and Verified Toolchains The \ref templates_pg supplied by Arm have been tested and verified with the following toolchains: - Arm: Arm Compiler 5.06 update 7 (not for Cortex-M23/33/35P/55/85, Armv8-M, Armv8.1-M) - Arm: Arm Compiler 6.16 - Arm: Arm Compiler 6.6.4 (not for Cortex-M0/23/33/35P/55/85, Armv8-M, Armv8.1-M) - 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 */ /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/ /** \page core_revisionHistory Revision History of CMSIS-Core (Cortex-M)
Version Description
V5.7.0
  • Added: Added new compiler macros __ALIAS and __NO_INIT
V5.6.0
  • Added: Arm Cortex-M85 cpu support
  • Added: Arm China Star-MC1 cpu support
  • Updated: system_ARMCM55.c
V5.5.0
  • Updated GCC LinkerDescription, GCC Assembler startup
  • Added ARMv8-M Stack Sealing (to linker, startup) for toolchain ARM, GCC
  • Changed C-Startup to default Startup.
  • Updated Armv8-M Assembler startup to use GAS syntax
    Note: Updating existing projects may need manual user interaction!
V5.4.0
    \if ARMv8M
  • Added: Cortex-M55 cpu support
  • Enhanced: MVE support for Armv8.1-MML
  • \endif
  • Fixed: Device config define checks
  • Added: L1 Cache functions for Armv7-M and later
V5.3.0
  • Added: Provisions for compiler-independent C startup code.
V5.2.1
  • Fixed: Compilation issue in cmsis_armclang_ltm.h introduced in 5.2.0
V5.2.0
  • Added: Cortex-M35P support.
  • Added: Cortex-M1 support.
  • Added: Armv8.1 architecture support.
  • Added: \ref __RESTRICT and \ref __STATIC_FORCEINLINE compiler control macros.
V5.1.2
  • Removed using get/set built-ins FPSCR in GCC >= 7.2 due to shortcomings.
  • Added __NO_RETURN to __NVIC_SystemReset() to silence compiler warnings.
  • Added support for Cortex-M1 (beta).
  • Removed usage of register keyword.
  • Added defines for EXC_RETURN, FNC_RETURN and integrity signature values.
  • Enhanced MPUv7 API with defines for memory access attributes.
V5.1.1
  • Aligned MSPLIM and PSPLIM access functions along supported compilers.
V5.1.0
  • Added MPU Functions for ARMv8-M for Cortex-M23/M33.
  • Moved __SSAT and __USAT intrinsics to CMSIS-Core.
  • Aligned __REV, __REV16 and __REVSH intrinsics along supported compilers.
V5.0.2
  • Added macros \ref \__UNALIGNED_UINT16_READ, \ref \__UNALIGNED_UINT16_WRITE.
  • Added macros \ref \__UNALIGNED_UINT32_READ, \ref \__UNALIGNED_UINT32_WRITE.
  • Deprecated macro \ref \__UNALIGNED_UINT32.
  • Changed \ref version_control_gr macros to be core agnostic.
  • Added \ref mpu_functions for Cortex-M0+/M3/M4/M7.
V5.0.1
  • Added: macro \ref \__PACKED_STRUCT.
  • Added: uVisor support.
V5.00
  • Added: Cortex-M23, Cortex-M33 support.
  • Added: macro __SAU_PRESENT with __SAU_REGION_PRESENT.
  • Replaced: macro __SAU_PRESENT with __SAU_REGION_PRESENT.
  • Reworked: SAU register and functions.
  • Added: macro \ref \__ALIGNED.
  • Updated: function \ref SCB_EnableICache.
  • Added: cmsis_compiler.h with compiler specific CMSIS macros, functions, instructions.
  • Added: macro \ref \__PACKED.
  • Updated: compiler specific include files.
  • Updated: core dependant include files.
  • Removed: deprecated files core_cmfunc.h, core_cminstr.h, core_cmsimd.h.
V5.00
Beta 6
  • Added: SCB_CFSR register bit definitions.
  • Added: function \ref NVIC_GetEnableIRQ.
  • Updated: core instruction macros \ref \__NOP, \ref \__WFI, \ref \__WFE, \ref \__SEV for toolchain GCC.
V5.00
Beta 5
  • Moved: DSP libraries from CMSIS/DSP/Lib to CMSIS/Lib.
  • Added: DSP libraries build projects to CMSIS pack.
V5.00
Beta 4
  • Updated: ARMv8M device files.
  • Corrected: ARMv8MBL interrupts.
  • Reworked: NVIC functions.
V5.00
Beta 2
    \if ARMv8M
  • Changed: ARMv8M SAU regions to 8.
  • Changed: moved function \ref TZ_SAU_Setup to file partition_<device>.h.
  • \endif
  • Changed: license under Apache-2.0.
  • Added: check if macro is defined before use.
  • Corrected: function \ref SCB_DisableDCache.
  • Corrected: macros \ref \_VAL2FLD, \ref \_FLD2VAL.
  • Added: NVIC function virtualization with macros \ref CMSIS_NVIC_VIRTUAL and \ref CMSIS_VECTAB_VIRTUAL.
V5.00
Beta 1
  • Renamed: cmsis_armcc_V6.h to cmsis_armclang.h.
  • Renamed: core\_*.h to lower case.
  • Added: function \ref SCB_GetFPUType to all CMSIS cores.
  • Added: ARMv8-M support.
V4.30
  • Corrected: DoxyGen function parameter comments.
  • Corrected: IAR toolchain: removed for \ref NVIC_SystemReset the attribute(noreturn).
  • Corrected: GCC toolchain: suppressed irrelevant compiler warnings.
  • Added: Support files for Arm Compiler v6 (cmsis_armcc_v6.h).
V4.20
  • Corrected: MISRA-C:2004 violations.
  • Corrected: predefined macro for TI CCS Compiler.
  • Corrected: function \ref __SHADD16 in arm_math.h.
  • Updated: cache functions for Cortex-M7.
  • Added: macros \ref _VAL2FLD, \ref _FLD2VAL to core\_*.h.
  • Updated: functions \ref __QASX, \ref __QSAX, \ref __SHASX, \ref __SHSAX.
  • Corrected: potential bug in function \ref __SHADD16.
V4.10
  • Corrected: MISRA-C:2004 violations.
  • Corrected: intrinsic functions \ref __DSB, \ref __DMB, \ref __ISB.
  • Corrected: register definitions for ITCMCR register.
  • Corrected: register definitions for \ref CONTROL_Type register.
  • Added: functions \ref SCB_GetFPUType, \ref SCB_InvalidateDCache_by_Addr to core_cm7.h.
  • Added: register definitions for \ref APSR_Type, \ref IPSR_Type, \ref xPSR_Type register.
  • Added: \ref __set_BASEPRI_MAX function to core_cmFunc.h.
  • Added: intrinsic functions \ref __RBIT, \ref __CLZ for Cortex-M0/CortexM0+.
V4.00
  • Added: Cortex-M7 support.
  • Added: intrinsic functions for \ref __RRX, \ref __LDRBT, \ref __LDRHT, \ref __LDRT, \ref __STRBT, \ref __STRHT, and \ref __STRT
V3.40
  • Corrected: C++ include guard settings.
V3.30
  • Added: COSMIC tool chain support.
  • Corrected: GCC __SMLALDX instruction intrinsic for Cortex-M4.
  • Corrected: GCC __SMLALD instruction intrinsic for Cortex-M4.
  • Corrected: GCC/CLang warnings.
V3.20
  • Added: \ref __BKPT instruction intrinsic.
  • Added: \ref __SMMLA instruction intrinsic for Cortex-M4.
  • Corrected: \ref ITM_SendChar.
  • Corrected: \ref __enable_irq, \ref __disable_irq and inline assembly for GCC Compiler.
  • Corrected: \ref NVIC_GetPriority and VTOR_TBLOFF for Cortex-M0/M0+, SC000.
  • Corrected: rework of in-line assembly functions to remove potential compiler warnings.
V3.01
  • Added support for Cortex-M0+ processor.
V3.00
  • Added support for GNU GCC ARM Embedded Compiler.
  • Added function \ref __ROR.
  • Added \ref regMap_pg for TPIU, DWT.
  • Added support for \ref core_config_sect "SC000 and SC300 processors".
  • Corrected \ref ITM_SendChar function.
  • Corrected the functions \ref __STREXB, \ref __STREXH, \ref __STREXW for the GNU GCC compiler section.
  • Documentation restructured.
V2.10
  • Updated documentation.
  • Updated CMSIS core include files.
  • Changed CMSIS/Device folder structure.
  • Added support for Cortex-M0, Cortex-M4 w/o FPU to CMSIS DSP library.
  • Reworked CMSIS DSP library examples.
V2.00
  • Added support for Cortex-M4 processor.
V1.30
  • Reworked Startup Concept.
  • Added additional Debug Functionality.
  • Changed folder structure.
  • Added doxygen comments.
  • Added definitions for bit.
V1.01
  • Added support for Cortex-M0 processor.
V1.01
  • Added intrinsic functions for \ref __LDREXB, \ref __LDREXH, \ref __LDREXW, \ref __STREXB, \ref __STREXH, \ref __STREXW, and \ref __CLREX
V1.00
  • Initial Release for Cortex-M3 processor.
*/