]> begriffs open source - cmsis/blob - CMSIS/Documentation/Doxygen/Core/src/history.md
Doc: Added info about backward incompatibilities in CMSIS-Core
[cmsis] / CMSIS / Documentation / Doxygen / Core / src / history.md
1 # Revision History {#core_revisionHistory}
2
3 CMSIS-Core (M) component is maintained with its own versioning that gets offically updated upon releases of the [CMSIS Software Pack](../General/cmsis_pack.html).
4
5 The table below provides information about the changes delivered with specific versions of CMSIS-Core (M).
6
7 <table class="cmtable" summary="Revision History">
8     <tr>
9       <th>Version</th>
10       <th>Description</th>
11     </tr>
12     <tr>
13       <td>V6.0.0</td>
14       <td>
15         <ul>
16           <li>Core(M) and Core(A) joined into single Core component</li>
17           <li>Core header files reworked, aligned with Cortex-M Technical Reference Manuals (TRMs).
18               <br/>See \ref core6_changes "Breaking changes in CMSIS-Core v6 header files" for details, and [GitHub issue #122](https://github.com/ARM-software/CMSIS_6/issues/122).</li>
19           <li>Previously deprecated features removed</li>
20           <li>Dropped support for Arm Compiler 5</li>
21         </ul>
22       </td>
23     </tr>
24     <tr>
25       <td>V5.6.0</td>
26       <td>
27         <ul>
28           <li>Added: Arm Cortex-M85 cpu support</li>
29           <li>Added: Arm China Star-MC1 cpu support</li>
30           <li>Updated: system_ARMCM55.c</li>
31         </ul>
32       </td>
33     </tr>
34     <tr>
35       <td>V5.5.0</td>
36       <td>
37         <ul>
38           <li>Updated GCC LinkerDescription, GCC Assembler startup</li>
39           <li>Added ARMv8-M Stack Sealing (to linker, startup) for toolchain ARM, GCC</li>
40           <li>Changed C-Startup to default Startup.</li>
41           </li>
42             Updated Armv8-M Assembler startup to use GAS syntax<br>
43             Note: Updating existing projects may need manual user interaction!
44           </li>
45         </ul>
46       </td>
47     </tr>
48     <tr>
49       <td>V5.4.0</td>
50       <td>
51         <ul>
52           <li>Added: Cortex-M55 cpu support</li>
53           <li>Enhanced: MVE support for Armv8.1-MML</li>
54           <li>Fixed: Device config define checks</li>
55           <li>Added: \ref cache_functions_m7 for Armv7-M and later</li>
56         </ul>
57       </td>
58     </tr>
59     <tr>
60       <td>V5.3.0</td>
61       <td>
62         <ul>
63           <li>Added: Provisions for compiler-independent C startup code.</li>
64         </ul>
65       </td>
66     </tr>
67     <tr>
68       <td>V5.2.1</td>
69       <td>
70         <ul>
71           <li>Fixed: Compilation issue in cmsis_armclang_ltm.h introduced in 5.2.0</li>
72         </ul>
73       </td>
74     </tr>
75     <tr>
76       <td>V5.2.0</td>
77       <td>
78         <ul>
79           <li>Added: Cortex-M35P support.</li>
80           <li>Added: Cortex-M1 support.
81           <li>Added: Armv8.1 architecture support.
82           <li>Added: \ref __RESTRICT and \ref __STATIC_FORCEINLINE compiler control macros.
83         </ul>
84       </td>
85     </tr>
86     <tr>
87       <td>V5.1.2</td>
88       <td>
89         <ul>
90           <li>Removed using get/set built-ins FPSCR in GCC >= 7.2 due to shortcomings.</li>
91           <li>Added __NO_RETURN to  __NVIC_SystemReset() to silence compiler warnings.</li>
92           <li>Added support for Cortex-M1 (beta).</li>
93           <li>Removed usage of register keyword.</li>
94           <li>Added defines for EXC_RETURN, FNC_RETURN and integrity signature values.</li>
95           <li>Enhanced MPUv7 API with defines for memory access attributes.</li>
96         </ul>
97       </td>
98     </tr>
99     <tr>
100       <td>V5.1.1</td>
101       <td>
102         <ul>
103           <li>Aligned MSPLIM and PSPLIM access functions along supported compilers.</li>
104         </ul>
105       </td>
106     </tr>
107     <tr>
108       <td>V5.1.0</td>
109       <td>
110         <ul>
111           <li>Added MPU Functions for ARMv8-M for Cortex-M23/M33.</li>
112           <li>Moved __SSAT and __USAT intrinsics to CMSIS-Core.</li>
113           <li>Aligned __REV, __REV16 and __REVSH intrinsics along supported compilers.</li>
114         </ul>
115       </td>
116     </tr>
117     <tr>
118       <td>V5.0.2</td>
119       <td>
120         <ul>
121           <li>Added macros  \ref \__UNALIGNED_UINT16_READ,  \ref \__UNALIGNED_UINT16_WRITE.</li>
122           <li>Added macros  \ref \__UNALIGNED_UINT32_READ,  \ref \__UNALIGNED_UINT32_WRITE.</li>
123           <li>Deprecated macro __UNALIGNED_UINT32.</li>
124           <li>Changed \ref version_control_gr macros to be core agnostic.</li>
125           <li>Added \ref mpu_functions for Cortex-M0+/M3/M4/M7.</li>
126         </ul>
127       </td>
128     </tr>
129     <tr>
130       <td>V5.0.1</td>
131       <td>
132         <ul>
133           <li>Added: macro \ref \__PACKED_STRUCT.</li>
134           <li>Added: uVisor support.</li>
135         </ul>
136       </td>
137     </tr>
138     <tr>
139       <td>V5.00</td>
140       <td>
141         <ul>
142           <li>Added: Cortex-M23, Cortex-M33 support.</li>
143           <li>Added: macro __SAU_PRESENT with __SAU_REGION_PRESENT.</li>
144           <li>Replaced: macro __SAU_PRESENT with __SAU_REGION_PRESENT.</li>
145           <li>Reworked: SAU register and functions.</li>
146           <li>Added: macro \ref \__ALIGNED.</li>
147           <li>Updated: function \ref SCB_EnableICache.</li>
148           <li>Added: cmsis_compiler.h with compiler specific CMSIS macros, functions, instructions.</li>
149           <li>Added: macro \ref \__PACKED.</li>
150           <li>Updated: compiler specific include files.</li>
151           <li>Updated: core dependant include files.</li>
152           <li>Removed: deprecated files core_cmfunc.h, core_cminstr.h, core_cmsimd.h.</li>
153         </ul>
154       </td>
155     </tr>
156     <tr>
157       <td>V5.00<br>Beta 6</td>
158       <td>
159         <ul>
160           <li>Added: SCB_CFSR register bit definitions.</li>
161           <li>Added: function \ref NVIC_GetEnableIRQ.</li>
162           <li>Updated: core instruction macros \ref \__NOP, \ref \__WFI, \ref \__WFE, \ref \__SEV for toolchain GCC.</li>
163         </ul>
164       </td>
165     </tr>
166     <tr>
167       <td>V5.00<br>Beta 5</td>
168       <td>
169         <ul>
170           <li>Moved: DSP libraries from CMSIS/DSP/Lib to CMSIS/Lib.</li>
171           <li>Added: DSP libraries build projects to CMSIS pack.</li>
172         </ul>
173       </td>
174     </tr>
175     <tr>
176       <td>V5.00<br>Beta 4</td>
177       <td>
178         <ul>
179           <li>Updated: ARMv8M device files.</li>
180           <li>Corrected: ARMv8MBL interrupts.</li>
181           <li>Reworked: NVIC functions.</li>
182         </ul>
183       </td>
184     </tr>
185     <tr>
186       <td>V5.00<br>Beta 2</td>
187       <td>
188         <ul>
189           <li>Changed: ARMv8M SAU regions to 8.</li>
190           <li>Changed: moved function \ref TZ_SAU_Setup to file partition_&lt;device&gt;.h.</li>
191           <li>Changed: license under Apache-2.0.</li>
192           <li>Added: check if macro is defined before use.</li>
193           <li>Corrected: function \ref SCB_DisableDCache.</li>
194           <li>Corrected: macros \ref \_VAL2FLD, \ref \_FLD2VAL.</li>
195           <li>Added: NVIC function virtualization with macros \ref CMSIS_NVIC_VIRTUAL and \ref CMSIS_VECTAB_VIRTUAL.</li>
196         </ul>
197       </td>
198     </tr>
199     <tr>
200       <td>V5.00<br>Beta 1</td>
201       <td>
202         <ul>
203           <li>Renamed: cmsis_armcc_V6.h to cmsis_armclang.h.</li>
204           <li>Renamed: core\_*.h to lower case.</li>
205           <li>Added: function \ref SCB_GetFPUType to all CMSIS cores.</li>
206           <li>Added: ARMv8-M support.</li>
207         </ul>
208       </td>
209     </tr>
210     <tr>
211       <td>V4.30</td>
212       <td>
213         <ul>
214           <li>Corrected: DoxyGen function parameter comments.</li>
215           <li>Corrected: IAR toolchain: removed for \ref NVIC_SystemReset the attribute(noreturn).</li>
216           <li>Corrected: GCC toolchain: suppressed irrelevant compiler warnings.</li>
217           <li>Added: Support files for Arm Compiler v6 (cmsis_armcc_v6.h).</li>
218         </ul>
219       </td>
220     </tr>
221     <tr>
222       <td>V4.20</td>
223       <td>
224         <ul>
225           <li>Corrected: MISRA-C:2004 violations.</li>
226           <li>Corrected: predefined macro for TI CCS Compiler.</li>
227           <li>Corrected: function \ref __SHADD16 in arm_math.h.</li>
228           <li>Updated: cache functions for Cortex-M7.</li>
229           <li>Added: macros \ref _VAL2FLD, \ref _FLD2VAL to core\_*.h.</li>
230           <li>Updated: functions \ref __QASX, \ref __QSAX, \ref __SHASX, \ref __SHSAX.</li>
231           <li>Corrected: potential bug in function \ref __SHADD16.</li>
232         </ul>
233       </td>
234     </tr>
235     <tr>
236       <td>V4.10</td>
237       <td>
238         <ul>
239           <li>Corrected: MISRA-C:2004 violations.</li>
240           <li>Corrected: intrinsic functions \ref __DSB, \ref __DMB, \ref __ISB.</li>
241           <li>Corrected: register definitions for ITCMCR register.</li>
242           <li>Corrected: register definitions for \ref CONTROL_Type register.</li>
243           <li>Added: functions \ref SCB_GetFPUType, \ref SCB_InvalidateDCache_by_Addr to core_cm7.h.</li>
244           <li>Added: register definitions for \ref APSR_Type, \ref IPSR_Type, \ref xPSR_Type register.</li>
245           <li>Added: \ref __set_BASEPRI_MAX function to core_cmFunc.h.</li>
246           <li>Added: intrinsic functions \ref __RBIT, \ref __CLZ  for Cortex-M0/CortexM0+.</li>
247         </ul>
248       </td>
249     </tr>
250     <tr>
251       <td>V4.00</td>
252       <td>
253         <ul>
254           <li>Added: Cortex-M7 support.</li>
255           <li>Added: intrinsic functions for \ref __RRX, \ref __LDRBT, \ref __LDRHT, \ref __LDRT, \ref __STRBT, \ref __STRHT, and \ref __STRT</li>
256         </ul>
257       </td>
258     </tr>
259     <tr>
260       <td>V3.40</td>
261       <td>
262        <ul>
263          <li>Corrected: C++ include guard settings.</li>
264        </ul>
265      </td>
266     </tr>
267     <tr>
268       <td>V3.30</td>
269       <td>
270         <ul>
271           <li>Added: COSMIC tool chain support.</li>
272           <li>Corrected: GCC __SMLALDX instruction intrinsic for Cortex-M4.</li>
273           <li>Corrected: GCC __SMLALD instruction intrinsic for Cortex-M4.</li>
274           <li>Corrected: GCC/CLang warnings.</li>
275         </ul>
276       </td>
277     </tr>
278     <tr>
279       <td>V3.20</td>
280       <td>
281         <ul>
282           <li>Added: \ref __BKPT instruction intrinsic.</li>
283           <li>Added: \ref __SMMLA instruction intrinsic for Cortex-M4.</li>
284           <li>Corrected: \ref ITM_SendChar.</li>
285           <li>Corrected: \ref __enable_irq, \ref __disable_irq and inline assembly for GCC Compiler.</li>
286           <li>Corrected: \ref NVIC_GetPriority and VTOR_TBLOFF for Cortex-M0/M0+, SC000.</li>
287           <li>Corrected: rework of in-line assembly functions to remove potential compiler warnings.</li>
288         </ul>
289       </td>
290     </tr>
291     <tr>
292       <td>V3.01</td>
293       <td>
294        <ul>
295          <li>Added support for Cortex-M0+ processor.</li>
296        </ul>
297      </td>
298     </tr>
299     <tr>
300       <td>V3.00</td>
301       <td>
302         <ul>
303           <li>Added support for GNU GCC ARM Embedded Compiler.</li>
304           <li>Added function \ref __ROR.</li>
305           <li>Added \ref regMap_pg for TPIU, DWT.</li>
306           <li>Added support for \ref core_config_sect "SC000 and SC300 processors".</li>
307           <li>Corrected \ref ITM_SendChar function.</li>
308           <li>Corrected the functions \ref __STREXB, \ref __STREXH, \ref __STREXW for the GNU GCC compiler section.</li>
309           <li>Documentation restructured.</li>
310         </ul>
311       </td>
312     </tr>
313     <tr>
314       <td>V2.10</td>
315       <td>
316         <ul>
317           <li>Updated documentation.</li>
318           <li>Updated CMSIS core include files.</li>
319           <li>Changed CMSIS/Device folder structure.</li>
320           <li>Added support for Cortex-M0, Cortex-M4 w/o FPU to CMSIS DSP library.</li>
321           <li>Reworked CMSIS DSP library examples.</li>
322         </ul>
323       </td>
324     </tr>
325     <tr>
326       <td>V2.00</td>
327       <td>
328        <ul>
329          <li>Added support for Cortex-M4 processor.</li>
330        </ul>
331      </td>
332     </tr>
333     <tr>
334       <td>V1.30</td>
335       <td>
336         <ul>
337           <li>Reworked Startup Concept.</li>
338           <li>Added additional Debug Functionality.</li>
339           <li>Changed folder structure.</li>
340           <li>Added doxygen comments.</li>
341           <li>Added definitions for bit.</li>
342         </ul>
343       </td>
344     </tr>
345     <tr>
346       <td>V1.01</td>
347       <td>
348        <ul>
349          <li>Added support for Cortex-M0 processor.</li>
350        </ul>
351       </td>
352     </tr>
353     <tr>
354       <td>V1.01</td>
355       <td>
356        <ul>
357          <li>Added intrinsic functions for \ref __LDREXB, \ref __LDREXH, \ref __LDREXW, \ref __STREXB, \ref __STREXH, \ref __STREXW, and \ref __CLREX</li>
358        </ul>
359      </td>
360     </tr>
361     <tr>
362       <td>V1.00</td>
363       <td>
364        <ul>
365          <li>Initial Release for Cortex-M3 processor.</li>
366        </ul>
367      </td>
368     </tr>
369 </table>
370
371
372 \anchor core6_changes
373 <h1>Breaking changes in CMSIS-Core v6 header files</h1>
374
375 \ref cmsis_standard_files in CMSIS-Core v6.0.0 have received a number of changes that are incompatible with CMSIS-Core v5.6.0.
376
377 In summary, following types of incompatible changes are present:
378  - struct member is renamed in an existing structure (e.g. NVIC->PR -> NVIC->IPR)
379  - struct name is changed (e.g. CoreDebug_Type -> DCB_Type)
380  - define name is changed (e.g. CoreDebug_DEMCR_TRCENA_Msk -> DCB_DEMCR_TRCENA_Msk)
381
382 [GitHub issue #122](https://github.com/ARM-software/CMSIS_6/issues/122) discusses how to resolve such incompatibilities.
383
384 Below is detailed information about the changes relevant for each Cortex-M core.
385
386 **Cortex-M0, Cortex-M0+, Cortex-M1:**
387  - struct NVIC_Type
388    - member IP renamed to IPR
389  - struct SCB_Type
390    - member SHP renamed to SHPR
391
392
393 **Cortex-M3, Cortex-M4:**
394  - struct NVIC_Type
395    - member IP renamed to IPR
396  - struct SCB_Type
397    - member SHP renamed to SHPR
398    - member PFR renamed to ID_PFR
399    - member PFR renamed to ID_PFR
400    - member DFR renamed to ID_PFR
401    - member ADR renamed to ID_AFR
402    - member MMFR renamed to ID_MMFR
403    - member ISAR renamed to ID_ISAR
404    - member STIR added
405  - struct ITM_Type:
406    - members PIDx and CIDx removed
407  - define names for ITM_TCR_* changed
408  - define names for ITM_LSR_* changed
409  - struct TPI_Type renamed to TPIU_Type
410  - define names for TPI_* renamed to TPIU_*
411  - define names for FPU_MVFR0/1_* changed (Cortex-M4)
412  - struct CoreDebug_Type renamed to DCB_Type
413  - defines for CoreDebug_* renamed to DCB_*
414
415
416 **Cortex-M7:**
417  - struct NVIC_Type
418    - member IP renamed to IPR
419  - struct SCB_Type
420    - member ID_MFR renamed to ID_MMFR
421  - struct ITM_Type:
422    - members PIDx and CIDx removed
423  - define names for ITM_TCR_* changed
424  - define names for ITM_LSR_* changed
425  - struct TPI_Type renamed to TPIU_Type
426  - define names for TPI_* renamed to TPIU_*
427  - define names for FPU_MVFR0/1_* changed
428  - struct CoreDebug_Type renamed to DCB_Type
429  - defines for CoreDebug_* renamed to DCB_*
430
431
432 **Cortex-M23:**
433  - struct DWT_Type
434    - member RESERVED0[6] replaced by CYCCNT, CPICNT, EXCCNT, SLEEPCNT, LSUCNT, FOLDCNT
435    - other RESERVED members mainly removed
436  - struct TPI_Type renamed to TPIU_Type
437  - define names for TPI_* renamed to TPIU_*
438  - struct CoreDebug_Type removed (struct DCB_Type already existed)
439  - defines CoreDebug_ removed (defines DCB_ already existed)
440
441
442 **Cortex-M33:**
443  - struct ITM_Type:
444    - members LAR, LSR removed
445    - members PIDx and CIDx removed
446  - struct TPI_Type renamed to TPIU_Type
447  - define names for TPI_* renamed to TPIU_*
448  - define names for FPU_MVFR0/1_* changed
449  - struct CoreDebug_Type removed (struct DCB_Type already existed)
450  - defines CoreDebug_ removed (defines DCB_ already existed)
451
452
453 **Cortex-M55, Cortex-M85:**
454  - struct ITM_Type:
455    - members LAR, LSR removed
456    - members PIDx and CIDx removed
457  - struct DWT_Type:
458    - members PIDx and CIDx removed
459  - struct EWIC_Type
460    - all members renamed
461  - define names EWIC_* changed
462  - struct TPI_Type renamed to TPIU_Type
463    - members LAR, LSR replaced
464  - define names for TPI_* renamed to TPIU_*
465  - struct PMU_Type
466    - members PIDx and CIDx removed
467  - struct CoreDebug_Type removed (struct DCB_Type already existed)
468  - defines CoreDebug_ removed (defines DCB_ already existed)
469  - struct DIB_Type
470    - members DLAR, DLSR removed (replaced by RESERVED0[2])
471  - defines for DIB_DLAR_* and DIB_DLSR_* removed