]> begriffs open source - cmsis/blob - CMSIS/DoxyGen/Core/src/Overview.txt
RTX5: Fixed potential corruption of terminated threads list (updated previous commit).
[cmsis] / CMSIS / DoxyGen / Core / src / Overview.txt
1 /** \mainpage Overview
2
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.
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:
14  - \ref using_pg describes the project setup and shows a simple program example.
15  - \ref using_TrustZone_pg "Using TrustZone&reg; for ARMv8-M" describes how to use the security extensions available in the ARMv8-M architecture.
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.
17  - \ref coreMISRA_Exceptions_pg describes the violations to the MISRA standard.
18  - <a href="Modules.html">\b Reference </a> describe the features and functions of the \ref device_h_pg in detail.
19  - <a href="Annotated.html">\b Data \b Structures </a> describe the data structures of the \ref device_h_pg in detail.
20     
21 <hr>
22
23 CMSIS-CORE in ARM::CMSIS Pack
24 -----------------------------
25
26 Files relevant to CMSIS-CORE are present in the following <b>ARM::CMSIS</b> directories:
27 |File/Folder                   |Content                                                                 |
28 |------------------------------|------------------------------------------------------------------------|
29 |\b CMSIS\\Documentation\\Core | This documentation                                                     |
30 |\b CMSIS\\Include             | CMSIS-CORE header files (for example core_cm3.h, core_cmInstr.h, etc.) |
31 |\b Device                     | \ref using_ARM_pg "ARM reference implementations" of Cortex-M devices  |
32 |\b Device\\\_Template_Vendor  | \ref templates_pg for extension by silicon vendors                     |
33
34 <hr>
35
36 \section ref_v6-v8M Processor Support
37
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 
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.
40
41 \subsection ref_man_sec Cortex-M Reference Manuals
42
43 The Cortex-M Reference Manuals are generic user guides for devices that implement the various ARM Cortex-M processors. 
44 These manuals contain the programmers model and detailed information about the core peripherals.
45
46 - <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)
47 - <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)
48 - <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)
49 - <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)
50 - <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)
51
52 Reference manuals for \b Cortex-M23 and \b Cortex-M33 where not available at the time of release.
53
54 \subsection ARMv8M ARMv8-M Architecture 
55
56 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).
57 Both ARMv8-M profiles are supported by CMSIS.
58
59 The ARMv8-M Architecture is described in the <a href="http://developer.arm.com/products/architecture/m-profile/docs/ddi0553/latest/armv8-m-architecture-reference-manual" target="_blank"><b>ARMv8-M Architecture Reference Manual</b></a>.
60     
61 <hr>
62
63 \section tested_tools_sec Tested and Verified Toolchains
64
65 The CMSIS-CORE \ref templates_pg supplied by ARM have been tested and verified with the following toolchains:
66  - ARM: ARM Compiler V5.6
67  - ARM: ARM Compiler V6.6 (for Cortex-M23, Cortex-M33, ARMv8-M)
68  - GNU: GNU Tools ARM Embedded 5.4 2016q3
69  - IAR: IAR Embedded Workbench Kickstart Edition V6.10
70
71 <hr>
72 */
73 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
74 /**
75
76 \page core_revisionHistory Revision History of CMSIS-CORE
77
78 <table class="cmtable" summary="Core Exception Name">
79     <tr>
80       <th>Version</th>
81       <th>Description</th>
82     </tr>
83     <tr>
84       <td>V5.0.1</td>
85       <td>
86          Added: macro \ref \__PACKED_STRUCT. \n
87          Added: uVisor support. \n
88       </td>
89     </tr>
90     <tr>
91       <td>V5.00</td>
92       <td>
93              Added: Cortex-M23, Cortex-M33 support.\n    
94          Added: macro __SAU_PRESENT with __SAU_REGION_PRESENT. \n
95          Replaced: macro __SAU_PRESENT with __SAU_REGION_PRESENT. \n
96          Reworked: SAU register and functions. \n
97          Added: macro \ref \__ALIGNED. \n
98          Updated: function \ref SCB_EnableICache. \n
99          Added: cmsis_compiler.h with compiler specific CMSIS macros, functions, instructions. \n
100          Added: macro \ref \__PACKED. \n
101          Updated: compiler specific include files. \n
102          Updated: core dependant include files. \n
103          Removed: deprecated files core_cmfunc.h, core_cminstr.h, core_cmsimd.h.
104       </td>
105     </tr>
106     <tr>
107       <td>V5.00<br>Beta 6</td>
108       <td>
109          Added: SCB_CFSR register bit definitions. \n
110          Added: function \ref NVIC_GetEnableIRQ. \n
111          Updated: core instruction macros \ref \__NOP, \ref \__WFI, \ref \__WFE, \ref \__SEV for toolchain GCC.
112       </td>
113     </tr>
114     <tr>
115       <td>V5.00<br>Beta 5</td>
116       <td>
117          Moved: DSP libraries from CMSIS/DSP/Lib to CMSIS/Lib. \n
118          Added: DSP libraries build projects to CMSIS pack.
119       </td>
120     </tr>
121     <tr>
122       <td>V5.00<br>Beta 4</td>
123       <td>
124          Updated: ARMv8M device files. \n
125          Corrected: ARMv8MBL interrupts. \n
126          Reworked: NVIC functions.
127       </td>
128     </tr>
129     <tr>
130       <td>V5.00<br>Beta 2</td>
131       <td>
132          Changed: ARMv8M SAU regions to 8. \n
133          Changed: moved function \ref TZ_SAU_Setup to file partition_&lt;device&gt;.h. \n
134          Changed: license under Apache-2.0. \n
135          Added: check if macro is defined before use. \n
136          Corrected: function \ref SCB_DisableDCache. \n
137          Corrected: macros \ref \_VAL2FLD, \ref \_FLD2VAL. \n
138                  Added: NVIC function virtualization with macros \ref CMSIS_NVIC_VIRTUAL and \ref CMSIS_VECTAB_VIRTUAL.
139       </td>
140     </tr>
141     <tr>
142       <td>V5.00<br>Beta 1</td>
143       <td>
144          Renamed: cmsis_armcc_V6.h to cmsis_armclang.h.\n
145          Renamed: core\_*.h to lower case.\n
146          Added: function \ref SCB_GetFPUType to all CMSIS cores.\n
147          Added: ARMv8-M support.
148        </td>
149     </tr>
150     <tr>
151       <td>V4.30</td>
152       <td>
153          Corrected: DoxyGen function parameter comments.\n
154          Corrected: IAR toolchain: removed for \ref NVIC_SystemReset the attribute(noreturn).\n
155          Corrected: GCC toolchain: suppressed irrelevant compiler warnings.\n
156          Added: Support files for ARM Compiler v6 (cmsis_armcc_v6.h).
157       </td>
158     </tr>
159     <tr>
160       <td>V4.20</td>
161       <td>
162          Corrected: MISRA-C:2004 violations. \n   
163          Corrected: predefined macro for TI CCS Compiler. \n
164          Corrected: function \ref __SHADD16 in arm_math.h. \n
165          Updated: cache functions for Cortex-M7. \n
166          Added: macros \ref _VAL2FLD, \ref _FLD2VAL to core\_*.h. \n
167          Updated: functions \ref __QASX, \ref __QSAX, \ref __SHASX, \ref __SHSAX. \n
168                  Corrected: potential bug in function \ref __SHADD16.
169           </td>
170     </tr>
171     <tr>
172       <td>V4.10</td>
173       <td>
174          Corrected: MISRA-C:2004 violations. \n   
175          Corrected: intrinsic functions \ref __DSB, \ref __DMB, \ref __ISB. \n
176          Corrected: register definitions for ITCMCR register. \n
177          Corrected: register definitions for \ref CONTROL_Type register. \n
178          Added: functions \ref SCB_GetFPUType, \ref SCB_InvalidateDCache_by_Addr to core_cm7.h. \n
179          Added: register definitions for \ref APSR_Type, \ref IPSR_Type, \ref xPSR_Type register. \n
180          Added: \ref __set_BASEPRI_MAX function to core_cmFunc.h. \n
181          Added: intrinsic functions \ref __RBIT, \ref __CLZ  for Cortex-M0/CortexM0+. \n
182           </td>
183     </tr>
184     <tr>
185       <td>V4.00</td>
186       <td>
187              Added: Cortex-M7 support.\n         
188          Added: intrinsic functions for \ref __RRX, \ref __LDRBT, \ref __LDRHT, \ref __LDRT, \ref __STRBT, \ref __STRHT, and \ref __STRT  \n
189           </td>
190     </tr>
191     <tr>
192       <td>V3.40</td>
193       <td>Corrected: C++ include guard settings.\n        
194           </td>
195     </tr>
196     <tr>
197       <td>V3.30</td>
198       <td>Added: COSMIC tool chain support.\n
199           Corrected: GCC __SMLALDX instruction intrinsic for Cortex-M4.\n
200           Corrected: GCC __SMLALD instruction intrinsic for Cortex-M4.\n
201           Corrected: GCC/CLang warnings.\n        
202           </td>
203     </tr>
204     <tr>
205       <td>V3.20</td>
206       <td>Added: \ref __BKPT instruction intrinsic.\n
207           Added: \ref __SMMLA instruction intrinsic for Cortex-M4.\n
208           Corrected: \ref ITM_SendChar.\n         
209           Corrected: \ref __enable_irq, \ref __disable_irq and inline assembly for GCC Compiler.\n        
210           Corrected: \ref NVIC_GetPriority and VTOR_TBLOFF for Cortex-M0/M0+, SC000. \n
211           Corrected: rework of in-line assembly functions to remove potential compiler warnings.\n        
212       </td>
213     </tr>
214     <tr>
215       <td>V3.01</td>
216       <td>Added support for Cortex-M0+ processor. \n
217           </td>
218     </tr>
219     <tr>
220       <td>V3.00</td>
221       <td>Added support for GNU GCC ARM Embedded Compiler. \n
222                   Added function \ref __ROR.\n
223                   Added \ref regMap_pg for TPIU, DWT. \n
224                   Added support for \ref core_config_sect "SC000 and SC300 processors".\n
225                   Corrected \ref ITM_SendChar function. \n
226                   Corrected the functions \ref __STREXB, \ref __STREXH, \ref __STREXW for the GNU GCC compiler section. \n
227                   Documentation restructured.
228           </td>
229     </tr>
230     <tr>
231       <td>V2.10</td>
232       <td>Updated documentation.\n
233           Updated CMSIS core include files.\n
234           Changed CMSIS/Device folder structure.\n
235           Added support for Cortex-M0, Cortex-M4 w/o FPU to CMSIS DSP library.\n
236           Reworked CMSIS DSP library examples.
237       </td>
238     </tr>
239     <tr>
240       <td>V2.00</td>
241       <td>Added support for Cortex-M4 processor.</td>
242     </tr>
243     <tr>
244       <td>V1.30</td>
245       <td>Reworked Startup Concept.\n
246           Added additional Debug Functionality.\n
247           Changed folder structure.\n
248           Added doxygen comments.\n
249           Added definitions for bit.
250       </td>
251     </tr>
252     <tr>
253       <td>V1.01</td>
254       <td>Added support for Cortex-M0 processor.</td>
255     </tr>
256     <tr>
257       <td>V1.01</td>
258       <td>Added intrinsic functions for \ref __LDREXB, \ref __LDREXH, \ref __LDREXW, \ref __STREXB, \ref __STREXH, \ref __STREXW, and \ref __CLREX</td>
259     </tr>
260     <tr>
261       <td>V1.00</td>
262       <td>Initial Release for Cortex-M3 processor.</td>
263     </tr>
264 </table>
265
266 */
267
268