CMSIS 5.8.0
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.
Announcement
Users of CMSIS-DSP and CMSIS-NN
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
CMSIS-RTOS2
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 *cbuild_install.0.10.3.sh
2) Toolchain download
-
Keil MDK IDE
Version 5.31 (Jun 2020) is the latest version of MDK supporting the CMSIS-Project file format (*.cprj) export and import including export of layer information.- Windows 32-bit
- Install MDK first.
- The cbuild_install.sh allows you to specify the MDK installation path to setup AC6 compiler for you.
- Windows 32-bit
-
GNU Arm Embedded Toolchain:
Version 10-2020-q4-major (Dec. 11th 2020): -
ARM Compiler Version 6 license managed:
Version 6.16 (Mar. 10th 2020)- [Windows 32-bit Installer](https://developer.arm.com/-/media/Files/downloads/compiler/DS500-BN-00025-r5p0-18rel0.zip
- Download installer
- Extract archive unzip DS500-BN-00025-r5p0-18rel0.zip, run win-x86_32\setup.exe
- Default installation path: C:\Program Files (x86)\ARMCompiler6.16\
- Linux x86_64 Installer
- Download installer
- Extract the archive tar -xzf DS500-BN-00026-r5p0-18rel0.tgz
- Run install_x86_64.sh
- [Windows 32-bit Installer](https://developer.arm.com/-/media/Files/downloads/compiler/DS500-BN-00025-r5p0-18rel0.zip
3) CMake installation required
- Download and install CMake 3.18.0 or higher.
4) Installation instructions
- Setup build environment
Note: CMSIS-Build tools require at least one of the above toolchains.
5) Documentation
6) License
- The software is provided under Apache 2.0.
7) Questions, comments and feedback
- Create a request using the label Build. For further guidance see issues and labels