Skip to content

@JonatanAntoni JonatanAntoni released this Jun 29, 2021

Known Issues

Relying on Arm Compiler 5 intrinsics defined in Arm Compiler 6's arm_compat.h

Arm Compiler 6 ships a compatibility header arm_compat.h which defines some Arm Compiler 5 intrinsics, such as __current_sp(), __current_pc() or __schedule_barrier().

Up to CMSIS 5.7.0 arm_compat.h was included by CMSIS indirectly. Starting with CMSIS 5.8.0 this has been removed in favor of a functional safe implementation. This specifically applies to __enable_irq() and __disable_irq(). CMSIS now provides its own implementation of this functions for Arm Compiler 6. Unfortunately, this may cause redefinition issues when arm_compat.h shall be used together with CMSIS.

Potential symptoms Users including arm_compat.h already in their code may face issues like error: redefinition of '__enable_irq' __enable_irq(void).

Workaround Users of Arm Compiler 6 depending on Arm Compiler 5 compatibility functions need to include arm_compat.h, explicitly. The include must be placed before any CMSIS header include. Refer to this knowledge base article.

Updating existing Armv8-M projects using Assembly startup with Arm Compiler 6

The Assembly syntax used for Armv8-M pseudo devices has been changed from ARM to GNU. The new style makes use of pre-processor features. Hence the startup files have been renamed from startup_<device>.s to startup_<device>.S.

Unfortunately, IDEs can fail renaming the files kept as part of the project. In this case the user needs to delete the file manually. The IDE will recreate the startup code from the shipped template using the correct case.

Another issue when updating existing projects can be the selection of assembler to be used. Projects configured to use armasm will fail to compile the new startup code. The project configuration needs to be adopted to use the clang frontend.

Backward compatible common include folder ./CMSIS/Include missing

The formerly existing but deprecated common include folder ./CMSIS/Include is missing since this release.

This issue affects users not using the machine readable information from the pack description (.pdcs).

Workaround Instead of the common include one needs to include the individual component include folders, such as ./CMSIS/Core/Include for CMSIS-Core(M) or ./CMSIS/DSP/Include for CMSIS-DSP.

Outlook See announcement below! The planned offloading of CMSIS-DSP will affect hardcoded project include paths in a similar way. Its highly recommended to replace hardcoded include paths and rely on pack description information instead.

CMSIS-Core(M) for Cortex-M55 (Armv8.1-M Mainline) PMU_Type spurious reserved register and offset

The definition of struct PMU_Type defined in core_cm55.h and core_armv81mml.h contains misaligned members. The fix is provided in #1250. Users affected by this issue need to rely on the development branch.

CMSIS-Core(M) version defines not updated

The pre-processor defines to detect the used version of CMSIS-Core(M) are not updated to reflect version 5.5.0. Instead the defines __CM_CMSIS_VERSION_SUB and __CM_CMSIS_VERSION still refer to 5.4.0. See the fix in #1251.

Arm Compiler 6 Assembler errors on RTX5 IRQ module

Users updating existing projects using Arm Compiler 6 and RTX5 may experience the following Assembler errors as reported in #1257:

Build started: Project: test
*** Using Compiler 'V6.16', folder: '.\ARM\ARMCLANG\Bin'
Build target '[..]'
assembling irq_armv7m.S...
.\ARM\CMSIS\5.8.0\CMSIS\RTOS2\RTX\Source\GCC\irq_armv7m.S(1): error: A1167E: Invalid line start
.\ARM\CMSIS\5.8.0\CMSIS\RTOS2\RTX\Source\GCC\irq_armv7m.S(2): error: A1159E: Label missing from line start

This is caused by the migration from Arm Assembler to GNU Assembler syntax while still trying to compile the IRQ module using armasm.

Fix Check the Assembler command in project configuration. The new IRQ assembly module must be compiled through the clang frontend with either -masm=auto or -masm=gnu.

RTX5 irq_arm7m.s assembly module for Arm Compiler 5 does not recognize FPU correctly

As reported in #1266 the refactored assembly module for Arm Compiler 5 (armasm) used by RTX5 targeting Armv7-M devices fail to detect the selected FPU. Projects using Arm Compiler 5 targeting Cortex-M4 or -M7 devices with FPU may not work as expected. Not detecting the FPU leads to not storing/restoring the floating point context when switching threads.

Workaround Use Arm Compiler 6 together with the GNU assembly modules (gas) which are not affected.



We are planning to move these components off the CMSIS base pack and repository!

The components will be continued in the same way but relocated into their own GitHub repositories. Releases of these components will be provided as individual packs. The reason and advantage is to decouple release cycles of DSP and NN from the CMSIS-Core stuff.

Users with existing projects will need to install additional packs when updating to a later version. RTE-enabled IDEs will automatically pick up the source files from the new packs.

Release Notes

CMSIS-Core(M): 5.5.0

  • Updated GCC LinkerDescription, GCC Assembler startup
  • Added ARMv8-M Stack Sealing (to linker, startup) for toolchain ARM, GCC
  • Changed C-Startup to default Startup.
  • Updated Armv8-M Assembler startup to use GAS syntax
    Note: Updating existing projects may need manual user interaction!

CMSIS-Core(A): 1.2.1

- Bugfixes for Cortex-A32

CMSIS-DAP: 2.1.0

  • Enhanced DAP_Info
  • Added extra UART support

CMSIS-DSP: 1.9.0

  • Purged pre-built libs from Git
  • Enhanced support for f16 datatype
  • Fixed couple of GCC issues

CMSIS-NN: 3.0.0

  • Major interface change for functions compatible with TensorFlow Lite for Microcontroller
  • Added optimization for SVDF kernel
  • Improved MVE performance for fully Connected and max pool operator
  • NULL bias support for fully connected operator in non-MVE case(Can affect performance)
  • Expanded existing unit test suite along with support for FVP
  • Removed Examples folder


RTX 5.5.3

  • CVE-2021-27431 vulnerability mitigation.
  • Enhanced stack overrun checking.
  • Various bug fixes and improvements.

CMSIS-Pack: 1.7.2

  • Support for Microchip XC32 compiler
  • Support for Custom Datapath Extension

CMSIS-Build: 0.10.3 (beta)

  • CMSIS Project description (CPRJ) refinements for selecting alternative assembler

  • CMSIS-Build tools download

    Version 0.10.3 (click to expand)

    New in 0.10.3

    • removed MDK specific scripts
    • replaced Makefile generation with CMakelists.txt generation
    • added macOS support

    1) Download installer

    • Linux/Windows 64/macOS
      3689e3b462966ecc867e507f7d8248597581f794b874b4155d7fb0e8731766fb *

    2) Toolchain download

    3) CMake installation required

    • Download and install CMake 3.18.0 or higher.

    4) Installation instructions

    5) Documentation

    6) License

    7) Questions, comments and feedback

Assets 4