1 /** \mainpage Overview
\r
3 CMSIS-CORE implements the basic run-time system for a Cortex-M device and gives the user access to the processor core and the device peripherals.
\r
4 In detail it defines:
\r
5 - <b>Hardware Abstraction Layer (HAL)</b> for Cortex-M processor registers with standardized definitions for the SysTick, NVIC, System Control Block registers, MPU registers, FPU registers, and core access functions.
\r
6 - <b>System exception names</b> to interface to system exceptions without having compatibility issues.
\r
7 - <b>Methods to organize header files</b> that makes it easy to learn new Cortex-M microcontroller products and improve software portability. This includes naming conventions for device-specific interrupts.
\r
8 - <b>Methods for system initialization</b> to be used by each MCU vendor. For example, the standardized SystemInit() function is essential for configuring the clock system of the device.
\r
9 - <b>Intrinsic functions</b> used to generate CPU instructions that are not supported by standard C functions.
\r
10 - A variable to determine the <b>system clock frequency</b> which simplifies the setup the SysTick timer.
\r
13 The following sections provide details about the CMSIS-CORE:
\r
14 - \ref Using_pg describes the project setup and shows a simple program example.
\r
15 - \ref Using_TrustZone_pg "Using TrustZone® for ARMv8-M" describes how to use the security extensions available in the ARMv8-M architecture.
\r
16 - \ref Templates_pg describes the files of the CMSIS-CORE in detail and explains how to adapt template files provided by ARM to silicon vendor devices.
\r
17 - \ref CORE_MISRA_Exceptions_pg describes the violations to the MISRA standard.
\r
18 - <a href="Modules.html">\b Reference </a> describe the features and functions of the \ref device_h_pg in detail.
\r
19 - <a href="Annotated.html">\b Data \b Structures </a> describe the data structures of the \ref device_h_pg in detail.
\r
23 CMSIS-CORE in ARM::CMSIS Pack
\r
24 -----------------------------
\r
26 Files relevant to CMSIS-CORE are present in the following <b>ARM::CMSIS</b> directories:
\r
27 |File/Folder |Content |
\r
28 |------------------------------|------------------------------------------------------------------------|
\r
29 |\b CMSIS\\Documentation\\Core | This documentation |
\r
30 |\b CMSIS\\Include | CMSIS-CORE header files (for example core_cm3.h, core_cmInstr.h, etc.) |
\r
31 |\b Device | \ref Using_ARM_pg "ARM reference implementations" of Cortex-M devices |
\r
32 |\b Device\\\_Template_Vendor | \ref Templates_pg for extension by silicon vendors |
\r
36 \section ref_v6-v8M Cortex-M and ARMv8-M
\r
38 CMSIS supports the complete range of <a href="http://www.arm.com/products/processors/cortex-m/index.php" target="_blank"><b>Cortex-M processors</b></a> (with exception of Cortex-M1) and
\r
39 the <a href="http://www.arm.com/products/processors/instruction-set-architectures/armv8-m-architecture.php" target="_blank"><b>ARMv8-M architecture</b></a> including security extensions.
\r
40 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).
\r
41 Both ARMv8-M profiles are supported by CMSIS.
\r
43 \subsection ref_man_sec Cortex-M Reference Manuals
\r
45 The Cortex-M Reference Manuals are generic user guides for devices that implement the various ARM Cortex-M processors.
\r
46 These manuals contain the programmers model and detailed information about the core peripherals.
\r
48 - <a href="http://infocenter.arm.com/help/topic/com.arm.doc.dui0497a/DUI0497A_cortex_m0_r0p0_generic_ug.pdf" target="_blank"><b>Cortex-M0 Devices Generic User Guide</b></a> (ARMv6-M architecture)
\r
49 - <a href="http://infocenter.arm.com/help/topic/com.arm.doc.dui0662b/DUI0662B_cortex_m0p_r0p1_dgug.pdf" target="_blank"><b>Cortex-M0+ Devices Generic User Guide</b></a> (ARMv6-M architecture)
\r
50 - <a href="http://infocenter.arm.com/help/topic/com.arm.doc.dui0552a/DUI0552A_cortex_m3_dgug.pdf" target="_blank"><b>Cortex-M3 Devices Generic User Guide</b></a> (ARMv7-M architecture)
\r
51 - <a href="http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/DUI0553A_cortex_m4_dgug.pdf" target="_blank"><b>Cortex-M4 Devices Generic User Guide</b></a> (ARMv7-M architecture)
\r
52 - <a href="http://infocenter.arm.com/help/topic/com.arm.doc.dui0646a/DUI0646A_cortex_m7_dgug.pdf" target="_blank"><b>Cortex-M7 Devices Generic User Guide</b></a> (ARMv7-M architecture)
\r
57 \section tested_tools_sec Tested and Verified Toolchains
\r
59 The CMSIS-CORE \ref Templates_pg supplied by ARM have been tested and verified with the following toolchains:
\r
60 \todo add version information for ARMCC compilers, verify compiler versions
\r
61 - ARM: MDK-ARM Version 5.16
\r
62 - GNU: GNU Tools ARM Embedded 4.9 2015.q2
\r
63 - IAR: IAR Embedded Workbench Kickstart Edition V6.10
\r
67 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
\r
70 \page core_revisionHistory Revision History of CMSIS-CORE
\r
72 <table class="cmtable" summary="Core Exception Name">
\r
75 <th>Description</th>
\r
78 <td>V5.00 - Beta 2</td>
\r
80 Changed: ARMv8M SAU regions to 8. \n
\r
81 Changed: moved function \ref TZ_SAU_Setup to file partition_<device>.h. \n
\r
82 Changed: license under Apache-2.0. \n
\r
83 Added: check if macro is defined before use. \n
\r
84 Corrected: function \ref SCB_DisableDCache. \n
\r
85 Corrected: macros \ref \_VAL2FLD, \ref \_FLD2VAL.
\r
86 Added: NVIC function virtualization with macros \ref CMSIS_NVIC_VIRTUAL and \ref CMSIS_VECTAB_VIRTUAL.
\r
90 <td>V5.00 - Beta</td>
\r
92 Renamed: cmsis_armcc_V6.h to cmsis_armclang.h.\n
\r
93 Renamed: core\_*.h to lower case.\n
\r
94 Added: function \ref SCB_GetFPUType to all CMSIS cores.\n
\r
95 Added: ARMv8-M support.
\r
101 Corrected: DoxyGen function parameter comments.\n
\r
102 Corrected: IAR toolchain: removed for \ref NVIC_SystemReset the attribute(noreturn).\n
\r
103 Corrected: GCC toolchain: suppressed irrelevant compiler warnings.\n
\r
104 Added: Support files for ARM Compiler v6 (cmsis_armcc_v6.h).
\r
110 Corrected: MISRA-C:2004 violations. \n
\r
111 Corrected: predefined macro for TI CCS Compiler. \n
\r
112 Corrected: function \ref __SHADD16 in arm_math.h. \n
\r
113 Updated: cache functions for Cortex-M7. \n
\r
114 Added: macros \ref _VAL2FLD, \ref _FLD2VAL to core\_*.h. \n
\r
115 Updated: functions \ref __QASX, \ref __QSAX, \ref __SHASX, \ref __SHSAX. \n
\r
116 Corrected: potential bug in function \ref __SHADD16.
\r
122 Corrected: MISRA-C:2004 violations. \n
\r
123 Corrected: intrinsic functions \ref __DSB, \ref __DMB, \ref __ISB. \n
\r
124 Corrected: register definitions for ITCMCR register. \n
\r
125 Corrected: register definitions for \ref CONTROL_Type register. \n
\r
126 Added: functions \ref SCB_GetFPUType, \ref SCB_InvalidateDCache_by_Addr to core_cm7.h. \n
\r
127 Added: register definitions for \ref APSR_Type, \ref IPSR_Type, \ref xPSR_Type register. \n
\r
128 Added: \ref __set_BASEPRI_MAX function to core_cmFunc.h. \n
\r
129 Added: intrinsic functions \ref __RBIT, \ref __CLZ for Cortex-M0/CortexM0+. \n
\r
135 Added: Cortex-M7 support.\n
\r
136 Added: intrinsic functions for \ref __RRX, \ref __LDRBT, \ref __LDRHT, \ref __LDRT, \ref __STRBT, \ref __STRHT, and \ref __STRT \n
\r
141 <td>Corrected: C++ include guard settings.\n
\r
146 <td>Added: COSMIC tool chain support.\n
\r
147 Corrected: GCC __SMLALDX instruction intrinsic for Cortex-M4.\n
\r
148 Corrected: GCC __SMLALD instruction intrinsic for Cortex-M4.\n
\r
149 Corrected: GCC/CLang warnings.\n
\r
154 <td>Added: \ref __BKPT instruction intrinsic.\n
\r
155 Added: \ref __SMMLA instruction intrinsic for Cortex-M4.\n
\r
156 Corrected: \ref ITM_SendChar.\n
\r
157 Corrected: \ref __enable_irq, \ref __disable_irq and inline assembly for GCC Compiler.\n
\r
158 Corrected: \ref NVIC_GetPriority and VTOR_TBLOFF for Cortex-M0/M0+, SC000. \n
\r
159 Corrected: rework of in-line assembly functions to remove potential compiler warnings.\n
\r
164 <td>Added support for Cortex-M0+ processor. \n
\r
169 <td>Added support for GNU GCC ARM Embedded Compiler. \n
\r
170 Added function \ref __ROR.\n
\r
171 Added \ref RegMap_pg for TPIU, DWT. \n
\r
172 Added support for \ref core_config_sect "SC000 and SC300 processors".\n
\r
173 Corrected \ref ITM_SendChar function. \n
\r
174 Corrected the functions \ref __STREXB, \ref __STREXH, \ref __STREXW for the GNU GCC compiler section. \n
\r
175 Documentation restructured.
\r
180 <td>Updated documentation.\n
\r
181 Updated CMSIS core include files.\n
\r
182 Changed CMSIS/Device folder structure.\n
\r
183 Added support for Cortex-M0, Cortex-M4 w/o FPU to CMSIS DSP library.\n
\r
184 Reworked CMSIS DSP library examples.
\r
189 <td>Added support for Cortex-M4 processor.</td>
\r
193 <td>Reworked Startup Concept.\n
\r
194 Added additional Debug Functionality.\n
\r
195 Changed folder structure.\n
\r
196 Added doxygen comments.\n
\r
197 Added definitions for bit.
\r
202 <td>Added support for Cortex-M0 processor.</td>
\r
206 <td>Added intrinsic functions for \ref __LDREXB, \ref __LDREXH, \ref __LDREXW, \ref __STREXB, \ref __STREXH, \ref __STREXW, and \ref __CLREX</td>
\r
210 <td>Initial Release for Cortex-M3 processor.</td>
\r