/** \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 Reference Manuals 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) \if ARMv8M The \b Cortex-M23 and \b Cortex-M33 are described with Technical Reference Manuals that are available here: - Cortex-M23 Technical Reference Manual (Armv8-M baseline architecture) - Cortex-M33 Technical Reference Manual (Armv8-M mainline 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 temper resistant Cortex-M processor with optional software isolation using TrustZone for Armv8-M. \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.1M 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, an Microcontroller Vector Extension (MVE) and further instruction set and debug extensions. More information about Armv8.1-M Architecture is available under Arm Helium technology. \endif
\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 6 (not for Cortex-M23/33/35P, Armv8-M, Armv8.1-M) - Arm: Arm Compiler 6.12 - Arm: Arm Compiler 6.6.2 (not for Cortex-M0/23/33/35P, Armv8-M, Armv8.1-M) - GNU: GNU Tools for Arm Embedded 8.2.1 2018q4 - 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.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.\n Added: Cortex-M1 support.\n Added: Armv8.1 architecture support.\n 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.\n Added __NO_RETURN to __NVIC_SystemReset() to silence compiler warnings.\n Added support for Cortex-M1 (beta). \n Removed usage of register keyword. \n Added defines for EXC_RETURN, FNC_RETURN and integrity signature values. \n 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.\n Moved __SSAT and __USAT intrinsics to CMSIS-Core.\n Aligned __REV, __REV16 and __REVSH intrinsics along supported compilers.
V5.0.2 Added macros \ref \__UNALIGNED_UINT16_READ, \ref \__UNALIGNED_UINT16_WRITE.\n Added macros \ref \__UNALIGNED_UINT32_READ, \ref \__UNALIGNED_UINT32_WRITE.\n Deprecated macro \ref \__UNALIGNED_UINT32.\n Changed \ref version_control_gr macros to be core agnostic. \n Added \ref mpu_functions for Cortex-M0+/M3/M4/M7.
V5.0.1 Added: macro \ref \__PACKED_STRUCT. \n Added: uVisor support. \n
V5.00 Added: Cortex-M23, Cortex-M33 support.\n Added: macro __SAU_PRESENT with __SAU_REGION_PRESENT. \n Replaced: macro __SAU_PRESENT with __SAU_REGION_PRESENT. \n Reworked: SAU register and functions. \n Added: macro \ref \__ALIGNED. \n Updated: function \ref SCB_EnableICache. \n Added: cmsis_compiler.h with compiler specific CMSIS macros, functions, instructions. \n Added: macro \ref \__PACKED. \n Updated: compiler specific include files. \n Updated: core dependant include files. \n Removed: deprecated files core_cmfunc.h, core_cminstr.h, core_cmsimd.h.
V5.00
Beta 6
Added: SCB_CFSR register bit definitions. \n Added: function \ref NVIC_GetEnableIRQ. \n 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. \n Added: DSP libraries build projects to CMSIS pack.
V5.00
Beta 4
Updated: ARMv8M device files. \n Corrected: ARMv8MBL interrupts. \n Reworked: NVIC functions.
V5.00
Beta 2
Changed: ARMv8M SAU regions to 8. \n Changed: moved function \ref TZ_SAU_Setup to file partition_<device>.h. \n Changed: license under Apache-2.0. \n Added: check if macro is defined before use. \n Corrected: function \ref SCB_DisableDCache. \n Corrected: macros \ref \_VAL2FLD, \ref \_FLD2VAL. \n 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.\n Renamed: core\_*.h to lower case.\n Added: function \ref SCB_GetFPUType to all CMSIS cores.\n Added: ARMv8-M support.
V4.30 Corrected: DoxyGen function parameter comments.\n Corrected: IAR toolchain: removed for \ref NVIC_SystemReset the attribute(noreturn).\n Corrected: GCC toolchain: suppressed irrelevant compiler warnings.\n Added: Support files for Arm Compiler v6 (cmsis_armcc_v6.h).
V4.20 Corrected: MISRA-C:2004 violations. \n Corrected: predefined macro for TI CCS Compiler. \n Corrected: function \ref __SHADD16 in arm_math.h. \n Updated: cache functions for Cortex-M7. \n Added: macros \ref _VAL2FLD, \ref _FLD2VAL to core\_*.h. \n Updated: functions \ref __QASX, \ref __QSAX, \ref __SHASX, \ref __SHSAX. \n Corrected: potential bug in function \ref __SHADD16.
V4.10 Corrected: MISRA-C:2004 violations. \n Corrected: intrinsic functions \ref __DSB, \ref __DMB, \ref __ISB. \n Corrected: register definitions for ITCMCR register. \n Corrected: register definitions for \ref CONTROL_Type register. \n Added: functions \ref SCB_GetFPUType, \ref SCB_InvalidateDCache_by_Addr to core_cm7.h. \n Added: register definitions for \ref APSR_Type, \ref IPSR_Type, \ref xPSR_Type register. \n Added: \ref __set_BASEPRI_MAX function to core_cmFunc.h. \n Added: intrinsic functions \ref __RBIT, \ref __CLZ for Cortex-M0/CortexM0+. \n
V4.00 Added: Cortex-M7 support.\n Added: intrinsic functions for \ref __RRX, \ref __LDRBT, \ref __LDRHT, \ref __LDRT, \ref __STRBT, \ref __STRHT, and \ref __STRT \n
V3.40 Corrected: C++ include guard settings.\n
V3.30 Added: COSMIC tool chain support.\n Corrected: GCC __SMLALDX instruction intrinsic for Cortex-M4.\n Corrected: GCC __SMLALD instruction intrinsic for Cortex-M4.\n Corrected: GCC/CLang warnings.\n
V3.20 Added: \ref __BKPT instruction intrinsic.\n Added: \ref __SMMLA instruction intrinsic for Cortex-M4.\n Corrected: \ref ITM_SendChar.\n Corrected: \ref __enable_irq, \ref __disable_irq and inline assembly for GCC Compiler.\n Corrected: \ref NVIC_GetPriority and VTOR_TBLOFF for Cortex-M0/M0+, SC000. \n Corrected: rework of in-line assembly functions to remove potential compiler warnings.\n
V3.01 Added support for Cortex-M0+ processor.\n
V3.00 Added support for GNU GCC ARM Embedded Compiler. \n Added function \ref __ROR.\n Added \ref regMap_pg for TPIU, DWT. \n Added support for \ref core_config_sect "SC000 and SC300 processors".\n Corrected \ref ITM_SendChar function. \n Corrected the functions \ref __STREXB, \ref __STREXH, \ref __STREXW for the GNU GCC compiler section. \n Documentation restructured.
V2.10 Updated documentation.\n Updated CMSIS core include files.\n Changed CMSIS/Device folder structure.\n Added support for Cortex-M0, Cortex-M4 w/o FPU to CMSIS DSP library.\n Reworked CMSIS DSP library examples.
V2.00 Added support for Cortex-M4 processor.
V1.30 Reworked Startup Concept.\n Added additional Debug Functionality.\n Changed folder structure.\n Added doxygen comments.\n 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.
*/