]> begriffs open source - cmsis/blob - CMSIS/DoxyGen/Core/src/Overview.txt
Add new compiler macros:
[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/dui0497/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 - <a href="https://developer.arm.com/documentation/101928/latest"   target="_blank"><b>Cortex-M85 Devices Generic User Guide</b></a> (Armv8.1-M architecture)
56
57 CMSIS also supports the following Cortex-M processor variants:
58 - <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).
59 - <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).
60 - <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).
61 - <a href="https://developer.arm.com/products/processors/cortex-m/cortex-m35p"     target="_blank"><b>Cortex-M35P</b></a> is a tamper resistant Cortex-M processor with optional software isolation using TrustZone for Armv8-M.
62 - <a href="https://www.armchina.com/mountain?infoId=160"                           target="_blank"><b>STAR-MC1</b></a> is a variant of Armv8-M with TrustZone designed by Arm China.
63
64
65 \subsection ARMv8M Armv8-M and Armv8.1-M Architecture
66
67 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).
68 Both Armv8-M profiles and Armv8.1-M are supported by CMSIS.
69
70 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>.
71
72 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.
73 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>.
74
75 <hr>
76
77 \section tested_tools_sec Tested and Verified Toolchains
78
79 The \ref templates_pg supplied by Arm have been tested and verified with the following toolchains:
80  - Arm: Arm Compiler 5.06 update 7 (not for Cortex-M23/33/35P/55/85, Armv8-M, Armv8.1-M)
81  - Arm: Arm Compiler 6.16
82  - Arm: Arm Compiler 6.6.4 (not for Cortex-M0/23/33/35P/55/85, Armv8-M, Armv8.1-M)
83  - GNU: GNU Arm Embedded Toolchain 10-2020-q4-major (10.2.1 20201103)
84  - IAR: IAR ANSI C/C++ Compiler for Arm 8.20.1.14183
85 */
86 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
87 /**
88
89 \page core_revisionHistory Revision History of CMSIS-Core (Cortex-M)
90
91 <table class="cmtable" summary="Revision History">
92     <tr>
93       <th>Version</th>
94       <th>Description</th>
95     </tr>
96     <tr>
97       <td>V5.7.0</td>
98       <td>
99         <ul>
100           <li>Added: Added new compiler macros __ALIAS and __NO_INIT</li>
101         </ul>
102       </td>
103     </tr>
104     <tr>
105       <td>V5.6.0</td>
106       <td>
107         <ul>
108           <li>Added: Arm Cortex-M85 cpu support</li>
109           <li>Added: Arm China Star-MC1 cpu support</li>
110           <li>Updated: system_ARMCM55.c</li>
111         </ul>
112       </td>
113     </tr>
114     <tr>
115       <td>V5.5.0</td>
116       <td>
117         <ul>
118           <li>Updated GCC LinkerDescription, GCC Assembler startup</li>
119           <li>Added ARMv8-M Stack Sealing (to linker, startup) for toolchain ARM, GCC</li>
120           <li>Changed C-Startup to default Startup.</li>
121           </li>
122             Updated Armv8-M Assembler startup to use GAS syntax<br>
123             Note: Updating existing projects may need manual user interaction!
124           </li>
125         </ul>
126       </td>
127     </tr>
128     <tr>
129       <td>V5.4.0</td>
130       <td>
131         <ul>
132 \if ARMv8M
133           <li>Added: Cortex-M55 cpu support</li>
134           <li>Enhanced: MVE support for Armv8.1-MML</li>
135 \endif
136           <li>Fixed: Device config define checks</li>
137           <li>Added: L1 Cache functions for Armv7-M and later</li>
138         </ul>
139       </td>
140     </tr>
141     <tr>
142       <td>V5.3.0</td>
143       <td>
144         <ul>
145           <li>Added: Provisions for compiler-independent C startup code.</li>
146         </ul>
147       </td>
148     </tr>
149     <tr>
150       <td>V5.2.1</td>
151       <td>
152         <ul>
153           <li>Fixed: Compilation issue in cmsis_armclang_ltm.h introduced in 5.2.0</li>
154         </ul>
155       </td>
156     </tr>
157     <tr>
158       <td>V5.2.0</td>
159       <td>
160         <ul>
161           <li>Added: Cortex-M35P support.</li>
162           <li>Added: Cortex-M1 support.
163           <li>Added: Armv8.1 architecture support.
164           <li>Added: \ref __RESTRICT and \ref __STATIC_FORCEINLINE compiler control macros.
165         </ul>
166       </td>
167     </tr>
168     <tr>
169       <td>V5.1.2</td>
170       <td>
171         <ul>
172           <li>Removed using get/set built-ins FPSCR in GCC >= 7.2 due to shortcomings.</li>
173           <li>Added __NO_RETURN to __NVIC_SystemReset() to silence compiler warnings.</li>
174           <li>Added support for Cortex-M1 (beta).</li>
175           <li>Removed usage of register keyword.</li>
176           <li>Added defines for EXC_RETURN, FNC_RETURN and integrity signature values.</li>
177           <li>Enhanced MPUv7 API with defines for memory access attributes.</li>
178         </ul>
179       </td>
180     </tr>
181     <tr>
182       <td>V5.1.1</td>
183       <td>
184         <ul>
185           <li>Aligned MSPLIM and PSPLIM access functions along supported compilers.</li>
186         </ul>
187       </td>
188     </tr>
189     <tr>
190       <td>V5.1.0</td>
191       <td>
192         <ul>
193           <li>Added MPU Functions for ARMv8-M for Cortex-M23/M33.</li>
194           <li>Moved __SSAT and __USAT intrinsics to CMSIS-Core.</li>
195           <li>Aligned __REV, __REV16 and __REVSH intrinsics along supported compilers.</li>
196         </ul>
197       </td>
198     </tr>
199     <tr>
200       <td>V5.0.2</td>
201       <td>
202         <ul>
203           <li>Added macros  \ref \__UNALIGNED_UINT16_READ,  \ref \__UNALIGNED_UINT16_WRITE.</li>
204           <li>Added macros  \ref \__UNALIGNED_UINT32_READ,  \ref \__UNALIGNED_UINT32_WRITE.</li>
205           <li>Deprecated macro  \ref \__UNALIGNED_UINT32.</li>
206           <li>Changed \ref version_control_gr macros to be core agnostic.</li>
207           <li>Added \ref mpu_functions for Cortex-M0+/M3/M4/M7.</li>
208         </ul>
209       </td>
210     </tr>
211     <tr>
212       <td>V5.0.1</td>
213       <td>
214         <ul>
215           <li>Added: macro \ref \__PACKED_STRUCT.</li>
216           <li>Added: uVisor support.</li>
217         </ul>
218       </td>
219     </tr>
220     <tr>
221       <td>V5.00</td>
222       <td>
223         <ul>
224           <li>Added: Cortex-M23, Cortex-M33 support.</li>
225           <li>Added: macro __SAU_PRESENT with __SAU_REGION_PRESENT.</li>
226           <li>Replaced: macro __SAU_PRESENT with __SAU_REGION_PRESENT.</li>
227           <li>Reworked: SAU register and functions.</li>
228           <li>Added: macro \ref \__ALIGNED.</li>
229           <li>Updated: function \ref SCB_EnableICache.</li>
230           <li>Added: cmsis_compiler.h with compiler specific CMSIS macros, functions, instructions.</li>
231           <li>Added: macro \ref \__PACKED.</li>
232           <li>Updated: compiler specific include files.</li>
233           <li>Updated: core dependant include files.</li>
234           <li>Removed: deprecated files core_cmfunc.h, core_cminstr.h, core_cmsimd.h.</li>
235         </ul>
236       </td>
237     </tr>
238     <tr>
239       <td>V5.00<br>Beta 6</td>
240       <td>
241         <ul>
242           <li>Added: SCB_CFSR register bit definitions.</li>
243           <li>Added: function \ref NVIC_GetEnableIRQ.</li>
244           <li>Updated: core instruction macros \ref \__NOP, \ref \__WFI, \ref \__WFE, \ref \__SEV for toolchain GCC.</li>
245         </ul>
246       </td>
247     </tr>
248     <tr>
249       <td>V5.00<br>Beta 5</td>
250       <td>
251         <ul>
252           <li>Moved: DSP libraries from CMSIS/DSP/Lib to CMSIS/Lib.</li>
253           <li>Added: DSP libraries build projects to CMSIS pack.</li>
254         </ul>
255       </td>
256     </tr>
257     <tr>
258       <td>V5.00<br>Beta 4</td>
259       <td>
260         <ul>
261           <li>Updated: ARMv8M device files.</li>
262           <li>Corrected: ARMv8MBL interrupts.</li>
263           <li>Reworked: NVIC functions.</li>
264         </ul>
265       </td>
266     </tr>
267     <tr>
268       <td>V5.00<br>Beta 2</td>
269       <td>
270         <ul>
271 \if ARMv8M
272           <li>Changed: ARMv8M SAU regions to 8.</li>
273           <li>Changed: moved function \ref TZ_SAU_Setup to file partition_&lt;device&gt;.h.</li>
274 \endif
275           <li>Changed: license under Apache-2.0.</li>
276           <li>Added: check if macro is defined before use.</li>
277           <li>Corrected: function \ref SCB_DisableDCache.</li>
278           <li>Corrected: macros \ref \_VAL2FLD, \ref \_FLD2VAL.</li>
279           <li>Added: NVIC function virtualization with macros \ref CMSIS_NVIC_VIRTUAL and \ref CMSIS_VECTAB_VIRTUAL.</li>
280         </ul>
281       </td>
282     </tr>
283     <tr>
284       <td>V5.00<br>Beta 1</td>
285       <td>
286         <ul>
287           <li>Renamed: cmsis_armcc_V6.h to cmsis_armclang.h.</li>
288           <li>Renamed: core\_*.h to lower case.</li>
289           <li>Added: function \ref SCB_GetFPUType to all CMSIS cores.</li>
290           <li>Added: ARMv8-M support.</li>
291         </ul>
292       </td>
293     </tr>
294     <tr>
295       <td>V4.30</td>
296       <td>
297         <ul>
298           <li>Corrected: DoxyGen function parameter comments.</li>
299           <li>Corrected: IAR toolchain: removed for \ref NVIC_SystemReset the attribute(noreturn).</li>
300           <li>Corrected: GCC toolchain: suppressed irrelevant compiler warnings.</li>
301           <li>Added: Support files for Arm Compiler v6 (cmsis_armcc_v6.h).</li>
302         </ul>
303       </td>
304     </tr>
305     <tr>
306       <td>V4.20</td>
307       <td>
308         <ul>
309           <li>Corrected: MISRA-C:2004 violations.</li>
310           <li>Corrected: predefined macro for TI CCS Compiler.</li>
311           <li>Corrected: function \ref __SHADD16 in arm_math.h.</li>
312           <li>Updated: cache functions for Cortex-M7.</li>
313           <li>Added: macros \ref _VAL2FLD, \ref _FLD2VAL to core\_*.h.</li>
314           <li>Updated: functions \ref __QASX, \ref __QSAX, \ref __SHASX, \ref __SHSAX.</li>
315           <li>Corrected: potential bug in function \ref __SHADD16.</li>
316         </ul>
317       </td>
318     </tr>
319     <tr>
320       <td>V4.10</td>
321       <td>
322         <ul>
323           <li>Corrected: MISRA-C:2004 violations.</li>
324           <li>Corrected: intrinsic functions \ref __DSB, \ref __DMB, \ref __ISB.</li>
325           <li>Corrected: register definitions for ITCMCR register.</li>
326           <li>Corrected: register definitions for \ref CONTROL_Type register.</li>
327           <li>Added: functions \ref SCB_GetFPUType, \ref SCB_InvalidateDCache_by_Addr to core_cm7.h.</li>
328           <li>Added: register definitions for \ref APSR_Type, \ref IPSR_Type, \ref xPSR_Type register.</li>
329           <li>Added: \ref __set_BASEPRI_MAX function to core_cmFunc.h.</li>
330           <li>Added: intrinsic functions \ref __RBIT, \ref __CLZ  for Cortex-M0/CortexM0+.</li>
331         </ul>
332       </td>
333     </tr>
334     <tr>
335       <td>V4.00</td>
336       <td>
337         <ul>
338           <li>Added: Cortex-M7 support.</li>
339           <li>Added: intrinsic functions for \ref __RRX, \ref __LDRBT, \ref __LDRHT, \ref __LDRT, \ref __STRBT, \ref __STRHT, and \ref __STRT</li>
340         </ul>
341       </td>
342     </tr>
343     <tr>
344       <td>V3.40</td>
345       <td>
346        <ul>
347          <li>Corrected: C++ include guard settings.</li>
348        </ul>
349      </td>
350     </tr>
351     <tr>
352       <td>V3.30</td>
353       <td>
354         <ul>
355           <li>Added: COSMIC tool chain support.</li>
356           <li>Corrected: GCC __SMLALDX instruction intrinsic for Cortex-M4.</li>
357           <li>Corrected: GCC __SMLALD instruction intrinsic for Cortex-M4.</li>
358           <li>Corrected: GCC/CLang warnings.</li>
359         </ul>
360       </td>
361     </tr>
362     <tr>
363       <td>V3.20</td>
364       <td>
365         <ul>
366           <li>Added: \ref __BKPT instruction intrinsic.</li>
367           <li>Added: \ref __SMMLA instruction intrinsic for Cortex-M4.</li>
368           <li>Corrected: \ref ITM_SendChar.</li>
369           <li>Corrected: \ref __enable_irq, \ref __disable_irq and inline assembly for GCC Compiler.</li>
370           <li>Corrected: \ref NVIC_GetPriority and VTOR_TBLOFF for Cortex-M0/M0+, SC000.</li>
371           <li>Corrected: rework of in-line assembly functions to remove potential compiler warnings.</li>
372         </ul>
373       </td>
374     </tr>
375     <tr>
376       <td>V3.01</td>
377       <td>
378        <ul>
379          <li>Added support for Cortex-M0+ processor.</li>
380        </ul>
381      </td>
382     </tr>
383     <tr>
384       <td>V3.00</td>
385       <td>
386         <ul>
387           <li>Added support for GNU GCC ARM Embedded Compiler.</li>
388           <li>Added function \ref __ROR.</li>
389           <li>Added \ref regMap_pg for TPIU, DWT.</li>
390           <li>Added support for \ref core_config_sect "SC000 and SC300 processors".</li>
391           <li>Corrected \ref ITM_SendChar function.</li>
392           <li>Corrected the functions \ref __STREXB, \ref __STREXH, \ref __STREXW for the GNU GCC compiler section.</li>
393           <li>Documentation restructured.</li>
394         </ul>
395       </td>
396     </tr>
397     <tr>
398       <td>V2.10</td>
399       <td>
400         <ul>
401           <li>Updated documentation.</li>
402           <li>Updated CMSIS core include files.</li>
403           <li>Changed CMSIS/Device folder structure.</li>
404           <li>Added support for Cortex-M0, Cortex-M4 w/o FPU to CMSIS DSP library.</li>
405           <li>Reworked CMSIS DSP library examples.</li>
406         </ul>
407       </td>
408     </tr>
409     <tr>
410       <td>V2.00</td>
411       <td>
412        <ul>
413          <li>Added support for Cortex-M4 processor.</li>
414        </ul>
415      </td>
416     </tr>
417     <tr>
418       <td>V1.30</td>
419       <td>
420         <ul>
421           <li>Reworked Startup Concept.</li>
422           <li>Added additional Debug Functionality.</li>
423           <li>Changed folder structure.</li>
424           <li>Added doxygen comments.</li>
425           <li>Added definitions for bit.</li>
426         </ul>
427       </td>
428     </tr>
429     <tr>
430       <td>V1.01</td>
431       <td>
432        <ul>
433          <li>Added support for Cortex-M0 processor.</li>
434        </ul>
435       </td>
436     </tr>
437     <tr>
438       <td>V1.01</td>
439       <td>
440        <ul>
441          <li>Added intrinsic functions for \ref __LDREXB, \ref __LDREXH, \ref __LDREXW, \ref __STREXB, \ref __STREXH, \ref __STREXW, and \ref __CLREX</li>
442        </ul>
443      </td>
444     </tr>
445     <tr>
446       <td>V1.00</td>
447       <td>
448        <ul>
449          <li>Initial Release for Cortex-M3 processor.</li>
450        </ul>
451      </td>
452     </tr>
453 </table>
454
455 */
456
457