1 # Revision History {#core_revisionHistory}
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).
5 The table below provides information about the changes delivered with specific versions of CMSIS-Core (M).
7 <table class="cmtable" summary="Revision History">
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>
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>
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>
42 Updated Armv8-M Assembler startup to use GAS syntax<br>
43 Note: Updating existing projects may need manual user interaction!
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>
63 <li>Added: Provisions for compiler-independent C startup code.</li>
71 <li>Fixed: Compilation issue in cmsis_armclang_ltm.h introduced in 5.2.0</li>
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.
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>
103 <li>Aligned MSPLIM and PSPLIM access functions along supported compilers.</li>
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>
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>
133 <li>Added: macro \ref \__PACKED_STRUCT.</li>
134 <li>Added: uVisor support.</li>
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>
157 <td>V5.00<br>Beta 6</td>
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>
167 <td>V5.00<br>Beta 5</td>
170 <li>Moved: DSP libraries from CMSIS/DSP/Lib to CMSIS/Lib.</li>
171 <li>Added: DSP libraries build projects to CMSIS pack.</li>
176 <td>V5.00<br>Beta 4</td>
179 <li>Updated: ARMv8M device files.</li>
180 <li>Corrected: ARMv8MBL interrupts.</li>
181 <li>Reworked: NVIC functions.</li>
186 <td>V5.00<br>Beta 2</td>
189 <li>Changed: ARMv8M SAU regions to 8.</li>
190 <li>Changed: moved function \ref TZ_SAU_Setup to file partition_<device>.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>
200 <td>V5.00<br>Beta 1</td>
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>
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>
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>
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>
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>
263 <li>Corrected: C++ include guard settings.</li>
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>
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>
295 <li>Added support for Cortex-M0+ processor.</li>
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>
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>
329 <li>Added support for Cortex-M4 processor.</li>
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>
349 <li>Added support for Cortex-M0 processor.</li>
357 <li>Added intrinsic functions for \ref __LDREXB, \ref __LDREXH, \ref __LDREXW, \ref __STREXB, \ref __STREXH, \ref __STREXW, and \ref __CLREX</li>
365 <li>Initial Release for Cortex-M3 processor.</li>
372 \anchor core6_changes
373 <h1>Breaking changes in CMSIS-Core v6 header files</h1>
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.
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)
382 [GitHub issue #122](https://github.com/ARM-software/CMSIS_6/issues/122) discusses how to resolve such incompatibilities.
384 Below is detailed information about the changes relevant for each Cortex-M core.
386 **Cortex-M0, Cortex-M0+, Cortex-M1:**
388 - member IP renamed to IPR
390 - member SHP renamed to SHPR
393 **Cortex-M3, Cortex-M4:**
395 - member IP renamed to IPR
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
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_*
418 - member IP renamed to IPR
420 - member ID_MFR renamed to ID_MMFR
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_*
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)
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)
453 **Cortex-M55, Cortex-M85:**
455 - members LAR, LSR removed
456 - members PIDx and CIDx removed
458 - members PIDx and CIDx removed
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_*
466 - members PIDx and CIDx removed
467 - struct CoreDebug_Type removed (struct DCB_Type already existed)
468 - defines CoreDebug_ removed (defines DCB_ already existed)
470 - members DLAR, DLSR removed (replaced by RESERVED0[2])
471 - defines for DIB_DLAR_* and DIB_DLSR_* removed