]> begriffs open source - cmsis/blob - CMSIS/DoxyGen/Core/src/Overview.txt
CoreValidation: Fix Arm Compiler 6 linker warnings.
[cmsis] / CMSIS / DoxyGen / Core / src / Overview.txt
1 /** \mainpage Overview
2
3 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.
4 In detail it defines:
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.
6  - <b>System exception names</b> to interface to system exceptions without having compatibility issues.
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.
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.
9  - <b>Intrinsic functions</b> used to generate CPU instructions that are not supported by standard C functions.
10  - A variable to determine the <b>system clock frequency</b> which simplifies the setup the SysTick timer.
11
12
13 The following sections provide details about the CMSIS-Core (Cortex-M):
14  - \ref using_pg describes the project setup and shows a simple program example.
15 \if ARMv8M
16  - \ref using_TrustZone_pg "Using TrustZone&reg; for Armv8-M" describes how to use the security extensions available in the Armv8-M architecture.
17 \endif 
18  - \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.
19  - \ref coreMISRA_Exceptions_pg describes the violations to the MISRA standard.
20  - <a href="Modules.html">\b Reference </a> describe the features and functions of the \ref device_h_pg in detail.
21  - <a href="Annotated.html">\b Data \b Structures </a> describe the data structures of the \ref device_h_pg in detail.
22
23 <hr>
24
25 CMSIS-Core (Cortex-M) in ARM::CMSIS Pack
26 -----------------------------
27
28 Files relevant to CMSIS-Core (Cortex-M) are present in the following <b>ARM::CMSIS</b> directories:
29 |File/Folder                   |Content                                                                 |
30 |------------------------------|------------------------------------------------------------------------|
31 |\b CMSIS\\Documentation\\Core | This documentation                                                     |
32 |\b CMSIS\\Core\\Include       | CMSIS-Core (Cortex-M) header files (for example core_cm3.h, core_cmInstr.h, etc.) |
33 |\b Device                     | \ref using_ARM_pg "Arm reference implementations" of Cortex-M devices  |
34 |\b Device\\\_Template_Vendor  | \ref templates_pg for extension by silicon vendors                     |
35
36 <hr>
37
38 \section ref_v6-v8M Processor Support
39
40 CMSIS supports the complete range of <a href="https://developer.arm.com/products/processors/cortex-m" target="_blank"><b>Cortex-M processors</b></a> and 
41 the <a href="https://developer.arm.com/architectures/cpu-architecture/m-profile" target="_blank"><b>Armv8-M/v8.1-M architecture</b></a> including security extensions.
42
43 \subsection ref_man_sec Cortex-M Generic User Guides
44
45 The Cortex-M Device Generic User Guides contain the programmers model and detailed information about the core peripherals and are available for:
46
47 - <a href="https://developer.arm.com/documentation/dui0497a/latest/" target="_blank"><b>Cortex-M0 Devices Generic User Guide</b></a> (Armv6-M architecture)
48 - <a href="https://developer.arm.com/documentation/dui0662/latest/"  target="_blank"><b>Cortex-M0+ Devices Generic User Guide</b></a> (Armv6-M architecture)
49 - <a href="https://developer.arm.com/documentation/dui0552/latest/"  target="_blank"><b>Cortex-M3 Devices Generic User Guide</b></a> (Armv7-M architecture)
50 - <a href="https://developer.arm.com/documentation/dui0553/latest/"  target="_blank"><b>Cortex-M4 Devices Generic User Guide</b></a> (Armv7-M architecture)
51 - <a href="https://developer.arm.com/documentation/dui0646/latest/"  target="_blank"><b>Cortex-M7 Devices Generic User Guide</b></a> (Armv7-M architecture)
52 - <a href="https://developer.arm.com/documentation/dui1095/latest/"  target="_blank"><b>Cortex-M23 Devices Generic User Guide</b></a> (Armv8-M architecture)
53 - <a href="https://developer.arm.com/documentation/100235/latest/"   target="_blank"><b>Cortex-M33 Devices Generic User Guide</b></a> (Armv8-M architecture)
54 - <a href="https://developer.arm.com/documentation/101273/latest/"   target="_blank"><b>Cortex-M55 Devices Generic User Guide</b></a> (Armv8.1-M architecture)
55
56 CMSIS also supports the following Cortex-M processor variants:
57 - <a href="https://developer.arm.com/products/processors/cortex-m/cortex-m1"       target="_blank"><b>Cortex-M1</b></a> is a processor designed specifically for implementation in FPGAs (Armv6-M architecture).
58 - <a href="https://developer.arm.com/products/processors/cortex-m/sc000-processor" target="_blank"><b>SecurCore SC000</b></a> is designed specifically for smartcard and security applications (Armv6-M architecture).
59 - <a href="https://developer.arm.com/products/processors/cortex-m/sc300-processor" target="_blank"><b>SecurCore SC300</b></a> is designed specifically for smartcard and security applications (Armv7-M architecture).
60 - <a href="https://developer.arm.com/products/processors/cortex-m/cortex-m35p"     target="_blank"><b>Cortex-M35P</b></a> is a temper resistant Cortex-M processor with optional software isolation using TrustZone for Armv8-M.  
61
62 \subsection ARMv8M Armv8-M and Armv8.1-M Architecture
63
64 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).
65 Both Armv8-M profiles and Armv8.1-M are supported by CMSIS.
66
67 The Armv8-M architecture is described in the <a href="https://developer.arm.com/documentation/ddi0553/latest/" target="_blank"><b>Armv8-M Architecture Reference Manual</b></a>.
68
69 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. 
70 More information about Armv8.1-M architecture is available under <a href="https://developer.arm.com/technologies/helium" target="_blank"><b>Arm Helium technology</b></a>.
71
72 <hr>
73
74 \section tested_tools_sec Tested and Verified Toolchains
75
76 The \ref templates_pg supplied by Arm have been tested and verified with the following toolchains:
77  - Arm: Arm Compiler 5.06 update 6 (not for Cortex-M23/33/35P/55, Armv8-M, Armv8.1-M)
78  - Arm: Arm Compiler 6.14
79  - Arm: Arm Compiler 6.6.2 (not for Cortex-M0/23/33/35P/55, Armv8-M, Armv8.1-M)
80  - GNU: GNU Arm Embedded Toolchain 10-2020-q4-major (10.2.1 20201103)
81  - IAR: IAR ANSI C/C++ Compiler for Arm 8.20.1.14183
82 */
83 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
84 /**
85
86 \page core_revisionHistory Revision History of CMSIS-Core (Cortex-M)
87
88 <table class="cmtable" summary="Revision History">
89     <tr>
90       <th>Version</th>
91       <th>Description</th>
92     </tr>
93     <tr>
94       <td>V5.4.0</td>
95       <td>
96 \if ARMv8M
97         Added: Cortex-M55 cpu support
98         Enhanced: MVE support for Armv8.1-MML
99 \endif
100         Fixed: Device config define checks
101         Added: L1 Cache functions for Armv7-M and later
102       </td>
103     </tr>
104     <tr>
105       <td>V5.3.0</td>
106       <td>
107         Added: Provisions for compiler-independent C startup code.
108       </td>
109     </tr>
110     <tr>
111       <td>V5.2.1</td>
112       <td>
113         Fixed: Compilation issue in cmsis_armclang_ltm.h introduced in 5.2.0
114       </td>
115     </tr>
116     <tr>
117       <td>V5.2.0</td>
118       <td>
119         Added: Cortex-M35P support.\n
120         Added: Cortex-M1 support.\n
121         Added: Armv8.1 architecture support.\n
122         Added: \ref __RESTRICT and \ref __STATIC_FORCEINLINE compiler control macros.
123       </td>
124     </tr>
125     <tr>
126       <td>V5.1.2</td>
127       <td>
128         Removed using get/set built-ins FPSCR in GCC >= 7.2 due to shortcomings.\n
129         Added __NO_RETURN to __NVIC_SystemReset() to silence compiler warnings.\n
130         Added support for Cortex-M1 (beta). \n
131         Removed usage of register keyword. \n
132         Added defines for EXC_RETURN, FNC_RETURN and integrity signature values. \n
133         Enhanced MPUv7 API with defines for memory access attributes.
134       </td>
135     </tr>
136     <tr>
137       <td>V5.1.1</td>
138       <td>
139         Aligned MSPLIM and PSPLIM access functions along supported compilers.
140       </td>
141     </tr>
142     <tr>
143       <td>V5.1.0</td>
144       <td>
145         Added MPU Functions for ARMv8-M for Cortex-M23/M33.\n
146         Moved __SSAT and __USAT intrinsics to CMSIS-Core.\n
147         Aligned __REV, __REV16 and __REVSH intrinsics along supported compilers.
148       </td>
149     </tr>
150     <tr>
151       <td>V5.0.2</td>
152       <td>
153         Added macros  \ref \__UNALIGNED_UINT16_READ,  \ref \__UNALIGNED_UINT16_WRITE.\n
154         Added macros  \ref \__UNALIGNED_UINT32_READ,  \ref \__UNALIGNED_UINT32_WRITE.\n
155         Deprecated macro  \ref \__UNALIGNED_UINT32.\n
156         Changed \ref version_control_gr macros to be core agnostic. \n
157         Added \ref mpu_functions for Cortex-M0+/M3/M4/M7.
158       </td>
159     </tr>
160     <tr>
161       <td>V5.0.1</td>
162       <td>
163         Added: macro \ref \__PACKED_STRUCT. \n
164         Added: uVisor support. \n
165       </td>
166     </tr>
167     <tr>
168       <td>V5.00</td>
169       <td>
170         Added: Cortex-M23, Cortex-M33 support.\n
171         Added: macro __SAU_PRESENT with __SAU_REGION_PRESENT. \n
172         Replaced: macro __SAU_PRESENT with __SAU_REGION_PRESENT. \n
173         Reworked: SAU register and functions. \n
174         Added: macro \ref \__ALIGNED. \n
175         Updated: function \ref SCB_EnableICache. \n
176         Added: cmsis_compiler.h with compiler specific CMSIS macros, functions, instructions. \n
177         Added: macro \ref \__PACKED. \n
178         Updated: compiler specific include files. \n
179         Updated: core dependant include files. \n
180         Removed: deprecated files core_cmfunc.h, core_cminstr.h, core_cmsimd.h.
181       </td>
182     </tr>
183     <tr>
184       <td>V5.00<br>Beta 6</td>
185       <td>
186         Added: SCB_CFSR register bit definitions. \n
187         Added: function \ref NVIC_GetEnableIRQ. \n
188         Updated: core instruction macros \ref \__NOP, \ref \__WFI, \ref \__WFE, \ref \__SEV for toolchain GCC.
189       </td>
190     </tr>
191     <tr>
192       <td>V5.00<br>Beta 5</td>
193       <td>
194         Moved: DSP libraries from CMSIS/DSP/Lib to CMSIS/Lib. \n
195         Added: DSP libraries build projects to CMSIS pack.
196       </td>
197     </tr>
198     <tr>
199       <td>V5.00<br>Beta 4</td>
200       <td>
201         Updated: ARMv8M device files. \n
202         Corrected: ARMv8MBL interrupts. \n
203         Reworked: NVIC functions.
204       </td>
205     </tr>
206     <tr>
207       <td>V5.00<br>Beta 2</td>
208       <td>
209         Changed: ARMv8M SAU regions to 8. \n
210 \if ARMv8M
211         Changed: moved function \ref TZ_SAU_Setup to file partition_&lt;device&gt;.h. \n
212 \endif
213         Changed: license under Apache-2.0. \n
214         Added: check if macro is defined before use. \n
215         Corrected: function \ref SCB_DisableDCache. \n
216         Corrected: macros \ref \_VAL2FLD, \ref \_FLD2VAL. \n
217         Added: NVIC function virtualization with macros \ref CMSIS_NVIC_VIRTUAL and \ref CMSIS_VECTAB_VIRTUAL.
218       </td>
219     </tr>
220     <tr>
221       <td>V5.00<br>Beta 1</td>
222       <td>
223         Renamed: cmsis_armcc_V6.h to cmsis_armclang.h.\n
224         Renamed: core\_*.h to lower case.\n
225         Added: function \ref SCB_GetFPUType to all CMSIS cores.\n
226         Added: ARMv8-M support.
227       </td>
228     </tr>
229     <tr>
230       <td>V4.30</td>
231       <td>
232         Corrected: DoxyGen function parameter comments.\n
233         Corrected: IAR toolchain: removed for \ref NVIC_SystemReset the attribute(noreturn).\n
234         Corrected: GCC toolchain: suppressed irrelevant compiler warnings.\n
235         Added: Support files for Arm Compiler v6 (cmsis_armcc_v6.h).
236       </td>
237     </tr>
238     <tr>
239       <td>V4.20</td>
240       <td>
241         Corrected: MISRA-C:2004 violations. \n
242         Corrected: predefined macro for TI CCS Compiler. \n
243         Corrected: function \ref __SHADD16 in arm_math.h. \n
244         Updated: cache functions for Cortex-M7. \n
245         Added: macros \ref _VAL2FLD, \ref _FLD2VAL to core\_*.h. \n
246         Updated: functions \ref __QASX, \ref __QSAX, \ref __SHASX, \ref __SHSAX. \n
247      Corrected: potential bug in function \ref __SHADD16.
248     </td>
249     </tr>
250     <tr>
251       <td>V4.10</td>
252       <td>
253         Corrected: MISRA-C:2004 violations. \n
254         Corrected: intrinsic functions \ref __DSB, \ref __DMB, \ref __ISB. \n
255         Corrected: register definitions for ITCMCR register. \n
256         Corrected: register definitions for \ref CONTROL_Type register. \n
257         Added: functions \ref SCB_GetFPUType, \ref SCB_InvalidateDCache_by_Addr to core_cm7.h. \n
258         Added: register definitions for \ref APSR_Type, \ref IPSR_Type, \ref xPSR_Type register. \n
259         Added: \ref __set_BASEPRI_MAX function to core_cmFunc.h. \n
260         Added: intrinsic functions \ref __RBIT, \ref __CLZ  for Cortex-M0/CortexM0+. \n
261       </td>
262     </tr>
263     <tr>
264       <td>V4.00</td>
265       <td>
266         Added: Cortex-M7 support.\n
267         Added: intrinsic functions for \ref __RRX, \ref __LDRBT, \ref __LDRHT, \ref __LDRT, \ref __STRBT, \ref __STRHT, and \ref __STRT  \n
268       </td>
269     </tr>
270     <tr>
271       <td>V3.40</td>
272       <td>Corrected: C++ include guard settings.\n</td>
273     </tr>
274     <tr>
275       <td>V3.30</td>
276       <td>
277         Added: COSMIC tool chain support.\n
278         Corrected: GCC __SMLALDX instruction intrinsic for Cortex-M4.\n
279         Corrected: GCC __SMLALD instruction intrinsic for Cortex-M4.\n
280         Corrected: GCC/CLang warnings.\n
281       </td>
282     </tr>
283     <tr>
284       <td>V3.20</td>
285       <td>
286         Added: \ref __BKPT instruction intrinsic.\n
287         Added: \ref __SMMLA instruction intrinsic for Cortex-M4.\n
288         Corrected: \ref ITM_SendChar.\n
289         Corrected: \ref __enable_irq, \ref __disable_irq and inline assembly for GCC Compiler.\n
290         Corrected: \ref NVIC_GetPriority and VTOR_TBLOFF for Cortex-M0/M0+, SC000. \n
291         Corrected: rework of in-line assembly functions to remove potential compiler warnings.\n
292       </td>
293     </tr>
294     <tr>
295       <td>V3.01</td>
296       <td>Added support for Cortex-M0+ processor.\n</td>
297     </tr>
298     <tr>
299       <td>V3.00</td>
300       <td>
301         Added support for GNU GCC ARM Embedded Compiler. \n
302         Added function \ref __ROR.\n
303         Added \ref regMap_pg for TPIU, DWT. \n
304         Added support for \ref core_config_sect "SC000 and SC300 processors".\n
305         Corrected \ref ITM_SendChar function. \n
306         Corrected the functions \ref __STREXB, \ref __STREXH, \ref __STREXW for the GNU GCC compiler section. \n
307         Documentation restructured.
308       </td>
309     </tr>
310     <tr>
311       <td>V2.10</td>
312       <td>
313         Updated documentation.\n
314         Updated CMSIS core include files.\n
315         Changed CMSIS/Device folder structure.\n
316         Added support for Cortex-M0, Cortex-M4 w/o FPU to CMSIS DSP library.\n
317         Reworked CMSIS DSP library examples.
318       </td>
319     </tr>
320     <tr>
321       <td>V2.00</td>
322       <td>Added support for Cortex-M4 processor.</td>
323     </tr>
324     <tr>
325       <td>V1.30</td>
326       <td>
327         Reworked Startup Concept.\n
328         Added additional Debug Functionality.\n
329         Changed folder structure.\n
330         Added doxygen comments.\n
331         Added definitions for bit.
332       </td>
333     </tr>
334     <tr>
335       <td>V1.01</td>
336       <td>Added support for Cortex-M0 processor.</td>
337     </tr>
338     <tr>
339       <td>V1.01</td>
340       <td>Added intrinsic functions for \ref __LDREXB, \ref __LDREXH, \ref __LDREXW, \ref __STREXB, \ref __STREXH, \ref __STREXW, and \ref __CLREX</td>
341     </tr>
342     <tr>
343       <td>V1.00</td>
344       <td>Initial Release for Cortex-M3 processor.</td>
345     </tr>
346 </table>
347
348 */
349
350