Skip to content

Releases: ARM-software/CMSIS_5

CMSIS 5.9.0

02 May 10:59
Compare
Choose a tag to compare

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.6.0

  • Arm Cortex-M85 cpu support
  • Arm China STAR-MC1 cpu support
  • Updated system_ARMCM55.c

CMSIS-DSP: 1.10.0 (see revision history for details)

CMSIS-NN: 3.1.0 (see revision history for details)

  • Support for int16 convolution and fully connected for reference implementation
  • Support for DSP extension optimization for int16 convolution and fully connected
  • Support dilation for int8 convolution
  • Support dilation for int8 depthwise convolution
  • Support for int16 depthwise conv for reference implementation including dilation
  • Support for int16 average and max pooling for reference implementation
  • Support for elementwise add and mul int16 scalar version
  • Support for softmax int16 scalar version
  • Support for SVDF with 8 bit state tensor

CMSIS-RTOS2: 2.1.3 (unchanged)

  • RTX 5.5.4 (see revision history for details)

CMSIS-Pack: deprecated (moved to Open-CMSIS-Pack)

CMSIS-SVD: 1.3.9 (see revision history for details)

CMSIS-DAP: 2.1.1 (see revision history for details)

  • Allow default clock frequency to use fast clock mode

Devices

  • Support for Cortex-M85

Utilities

  • SVDConv 3.3.42
  • PackChk 1.3.95

CMSIS 5.8.0

29 Jun 13:53
Compare
Choose a tag to compare

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

    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

    • Create a request using the label Build. For further guidance see [issues ...
Read more

CMSIS 5.7.0

14 Apr 15:35
Compare
Choose a tag to compare

Known Issues

GCC C-Startup .data/.bss section initialization (#632)

There is a misalignment between the GCC linker scripts and the C startup code.

The linker script creates the copy and zero tables using byte count for the section sizes. On the other hand the C startup routine interprets the size values as word count. Hence the routine copies four times the data than necessary. This array-overrun can lead to weird behavior and errors like hard faults.

Workaround: The linker script needs to be adopted as given in the issue #632. Please be aware that this adoption might not be in sync with the final fix. Keep an eye on that one when upgrading to next CMSIS release.

Release Notes

1) CMSIS-Build: 0.9.0/0.10.0 (beta)

  • Draft for CMSIS Project description (CPRJ)

  • CMSIS-Build tools download (new!)

    Version 0.10.0 (click to expand)

    New in 0.10.0

    • New command line options: --update, --quiet, --log, --intdir, --outdir (see usage for more information)
    • Building an executable always creates binaries in ELF, HEX and BIN format in output directory.
    • Added build progress information to build output.
    • Added makefile target 'rebuild' (clean + build).
    • Added makefile self-dependency. Generated makefile is only written if the content changed.
    • Added makefile target 'database' for generating a compilation database file.
    • Added special handling for layer files (layer..) copied unconditionally along with the layer on extract, remove, compose and add commands of cbuildgen.
    • Added special handling for layer markdown files (layer..md) being concatenated into README.md on compose command of cbuildgen.
    • Fixed: #970 Toolchain configuration files corrected to handle Cortex-M0+, Cortex-M35P, SC000, SC300 and ARMV81MML based devices.
    • Fixed: #971 Unnecessary rebuild of libraries when using GCC toolchain.

    1) Download installer

    • Linux/Windows 64
      sha256sum: f419aabb6d10cd048c4f134659a9d0a4fa080a4073e7ca22fbb3c731960e598f *cbuild_install.0.10.0.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.
    • GNU Arm Embedded Toolchain:
      Version 9-2019-q4-major (Nov. 06th 2019):

    • ARM Compiler Version 6 license managed:
      Version 6.14.1 (Jun. 10th 2020)

      • Windows 32-bit Installer
        • Download installer
        • Extract archive unzip DS500-BN-00025-r5p0-16rel1.zip, run win-x86_32\setup.exe
        • Default installation path: C:\Program Files (x86)\ARMCompiler6.14.1\
      • Linux x86_64 Installer
        • Download installer
        • Extract the archive tar -xzf DS500-BN-00026-r5p0-16rel1.tgz
        • Run install_x86_64.sh

    3) Installation instructions

    4) Documentation

    5) License

    6) Questions, comments and feedback

CMSIS-Core(M): 5.4.0 (see revision history for details)

  • Cortex-M55 cpu support
  • Enhanced MVE support for Armv8.1-MML
  • Fixed device config define checks.
  • L1 Cache functions for Armv7-M and later

CMSIS-Core(A): 1.2.0 (see revision history for details)

  • Fixed GIC_SetPendingIRQ to use GICD_SGIR
  • Added missing DSP intrinsics
  • Reworked assembly intrinsics: volatile, barriers and clobber

CMSIS-DSP: 1.8.0 (see revision history for details)

  • Added new functions and function groups
  • Added MVE support

CMSIS-NN: 1.3.0 (see revision history for details)

  • Added MVE support
  • Further optimizations for kernels using DSP extension

CMSIS-RTOS2: 2.3.1

  • RTX 5.5.2 (see revision history for details)

CMSIS-Driver: 2.8.0

  • Added VIO API 0.1.0 (Preview)
  • Removed volatile from status related typedefs in APIs
  • Enhanced WiFi Interface API with support for polling Socket Receive/Send

CMSIS-Pack: 1.6.3 (see revision history for details)

  • Deprecating all types specific to cpdsc format. Cpdsc is replaced by Cprj with dedicated schema.

Devices

  • ARMCM55 device
  • ARMv81MML startup code recognizing __MVE_USED macro
  • Refactored vector table references for all Cortex-M devices
  • Reworked ARMCM* C-StartUp files.
  • Include L1 Cache functions in ARMv8MML/ARMv81MML devices

Utilities

Attention: Linux binaries moved to Linux64 folder!

  • SVDConv 3.3.35
  • PackChk 1.3.89

CMSIS 5.6.0

11 Jul 11:30
Compare
Choose a tag to compare

Known Issues

GCC C-Startup .data/.bss section initialization (#632)

There is a misalignment between the GCC linker scripts and the C startup code.

The linker script creates the copy and zero tables using byte count for the section sizes. On the other hand the C startup routine interprets the size values as word count. Hence the routine copies four times the data than necessary. This array-overrun can lead to weird behavior and errors like hard faults.

Workaround: The linker script needs to be adopted as given in the issue #632. Please be aware that this adoption might not be in sync with the final fix. Keep an eye on that one when upgrading to next CMSIS release.

Release Notes

CMSIS-Core(M): 5.3.0

  • Added provisions for compiler-independent C startup code.

CMSIS-Core(A): 1.1.4

  • Fixed __FPU_Enable.

CMSIS-DSP: 1.7.0

  • New Neon versions of f32 functions
  • Python wrapper
  • Preliminary cmake build
  • Compilation flags for FFTs
  • Changes to arm_math.h

CMSIS-NN: 1.2.0

  • New function for depthwise convolution with asymmetric quantization.
  • New support functions for requantization.

CMSIS-RTOS:

  • RTX 4.82.0
    • Updated provisions for Arm Compiler 6 when using Cortex-M0/M0+

CMSIS-RTOS2:

  • RTX 5.5.1
    • Fixed osMutexRelease issue (thread owning multiple mutexes).
    • Improved osThreadJoin robustness (user programing errors).

CMSIS-Driver: 2.7.1

  • WiFi Interface API 1.0.0

Devices:

  • Generalized C startup code for all Cortex-M familiy devices.
  • Updated Cortex-A default memory regions and MMU configurations
  • Moved Cortex-A memory and system config files to avoid include path issues

Utilities

  • SVDConv 3.3.27
  • PackChk 1.3.82

CMSIS 5.5.1

22 Mar 10:40
Compare
Choose a tag to compare

Release Notes

The following folders are deprecated

  • CMSIS/Include/ (superseded by CMSIS/DSP/Include/ and CMSIS/Core/Include/)

CMSIS-Core(M): 5.2.1

  • Fixed compilation issue in cmsis_armclang_ltm.h

CMSIS 5.5.0

10 Jul 13:37
Compare
Choose a tag to compare

Known Issues

Arm Compiler 6 (up to 6.10) compilation dysfunctional

Note: Arm Compiler 6 beginning with 6.10.1 is not affected.

Effect: Compilation will most likely fail with an error message like:

In file included from CMSIS/Core/Include/cmsis_compiler.h:41:
In file included from CMSIS/Core/Include/cmsis_armclang_ltm.h:33:
arm_compat.h:42:1: error: expected identifier or '('
static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
^
1 error generated.

Cause: An invalid character made it into cmsis_armclang_ltm.h at beginning of line 1:

^/**************************************************************************//**
 * @file     cmsis_armclang.h
 * @brief    CMSIS compiler armclang (Arm Compiler 6) header file

Work around: Remove the ^ at the beginning of this file.

Release Notes

The following folders have been removed:

  • CMSIS/Lib/ (superseded by CMSIS/DSP/Lib/)
  • CMSIS/DSP_Lib/ (superseded by CMSIS/DSP/)
    The following folders are deprecated:
  • CMSIS/Include/ (superseded by CMSIS/DSP/Include/ and CMSIS/Core/Include/)

CMSIS-Core(M): 5.2.0

  • Reworked Stack/Heap configuration for ARM startup files.
  • Added Cortex-M35P device support.
  • Added generic Armv8.1-M Mainline device support.

CMSIS-Core(A): 1.1.3

  • Minor fixes.

CMSIS-DSP: 1.6.0

  • reworked DSP library source files
  • reworked DSP library documentation
  • Changed DSP folder structure
  • ARM DSP Libraries are built with ARMCLANG
  • Added DSP Libraries Source variant

CMSIS-RTOS2

  • RTX 5.5.0
    • Updated and enhanced generated events (reorganized components).
    • Updated configuration (Event Recorder).
    • Updated Component Viewer (improved performance).
    • Minor code optimizations.

CMSIS-Driver: 2.7.0

  • Added WiFi Interface API 1.0.0-beta
  • Added components for project specific driver implementations

CMSIS-Pack: 1.6.0

Devices

  • Added Cortex-M35P and ARMv81MML device templates.
  • Fixed C-Startup Code for GCC (aligned with other compilers)

Utilities

  • SVDConv 3.3.25
  • PackChk 1.3.82

CMSIS 5.4.0

03 Aug 10:56
Compare
Choose a tag to compare

Known Issues

Release Notes

CMSIS-Core(M): 5.1.2

  • Added Cortex-M1 support (beta).

CMSIS-Core(A): 1.1.2

  • Removed using get/set built-ins FPSCR in GCC >= 7.2 due to shortcomings.
  • Fixed co-processor register access macros for Arm Compiler 5.

CMSIS-DAP: 2.0.0

CMSIS-DSP: 1.5.2

CMSIS-Driver: 2.6.0

  • Flash Driver API V2.2.0

CMSIS-NN: 1.1.0

  • Added new math functions.

CMSIS-RTOS2: 2.1.3

  • Additional functions allowed to be called from Interrupt Service Routines:
    • osThreadGetId
  • RTX 5.4.0
    • Added support for Event Recorder initialization and filter setup.
    • Added support to use RTOS as Event Recorder Time Stamp source.
    • Fixed osDelayUntil longest delay (limited to 2^31-1).
    • Fixed optimization issue when using GCC optimization level 3.
    • Fixed osMemoryPoolAlloc to avoid potential race condition.
    • Restructured exception handling for Cortex-A devices.
    • Minor code optimizations (removed unnecessary checks).

Utilities

  • SVDConv 3.3.21
  • PackChk 1.2.71

CMSIS 5.3.0

22 Feb 11:18
Compare
Choose a tag to compare

Known Issues

  • IAR Compiler 8.20.1 does not support access to PSPLIM and MPSLIM on ARMv8-M Baseline (Cortex-M23) using compiler intrinsics. You might get an error like:

    __set_PSPLIM((uint32_t)ProcessStackMemory);
    ^
    ".\tz_context.c",74 Error[Ta140]:
    Special register "PSPLIM" is not available

    Work around: Remove setting PSPLIM until a fixed compiler version is available.

Release Notes

CMSIS-Core(M): 5.1.1

  • Aligned MSPLIM and PSPLIM access functions along supported compilers.

CMSIS-Core(A): 1.1.1

  • Refactored L1 cache maintenance to be compiler agnostic.

CMSIS-DAP: 2.0.0

  • Changed: Communication via WinUSB to achieve high-speed transfer rates
  • Added: Streaming SWO via separate WinUSB endpoint
  • Added: DAP_SWO_Transport extended with transport mode 2 - Send trace data via separate WinUSB endpoint

CMSIS-DSP: 1.5.2

CMSIS-Driver: 2.6.0

CMSIS-NN: 1.0.0

  • Initial contribution of a Neural Network Function Library

CMSIS-RTOS2: 2.1.2

  • RTX 5.3.0
    • Added Object Memory usage counters.
    • Added support for additional external configuration file.
    • Added user configurable names for system threads (Idle and Timer).
    • Added support for OS sections when using ARMCC5.
    • Added callback for MPU integration (experimental)
    • Increased default thread stack sizes to 256 bytes.
    • Fixed stack context display for running thread in SCVD.
    • Enhanced MISRA Compliance.

CMSIS 5.2.1-dev3

23 Jan 11:00
Compare
Choose a tag to compare
CMSIS 5.2.1-dev3 Pre-release
Pre-release

Development Release

This development release is based on the development branch. Its intention is to give early access to the latest component added: CMSIS-NN.

CMSIS-NN: 1.0.0-beta

  • Initial contribution of Neural Network Library.

CMSIS 5.2.0

16 Nov 16:57
Compare
Choose a tag to compare

Known Issues

  • IAR Compiler 8.20.1 does not support access to PSPLIM and MPSLIM on ARMv8-M Baseline (Cortex-M23) using compiler intrinsics. You might get an error like:

    __set_PSPLIM((uint32_t)ProcessStackMemory);
    ^
    ".\tz_context.c",74 Error[Ta140]:
    Special register "PSPLIM" is not available

    Work around: Remove setting PSPLIM until a fixed compiler version is available.

  • CMSIS-Zone documentation incomplete
    The documentation shipped with the released pack does not contain the generated JavaDoc for CMSIS-Zone generator model. Please refer to the documentation on http://arm-software.github.io/CMSIS_5/Zone.

Release Notes

CMSIS-Core(M): 5.1.0

  • Added MPU Functions for ARMv8-M for Cortex-M23/M33.
  • Added compiler_iccarm.h to replace compiler_iar.h shipped with the compiler.

CMSIS-Core(A): 1.1.0

  • Added compiler_iccarm.h.
  • Added additional access functions for physical timer.

CMSIS-DAP: 1.2.0

CMSIS-DSP: 1.5.2

CMSIS-Driver 2.6.0

  • CAN Driver API V1.2.0
    • Added explicit BUSOFF state.
  • NAND Driver API V2.3.0
    • Enhanced ECC capabilities.

CMSIS-RTOS:

  • RTX: added variant for Infineon XMC4 series affected by PMU_CM.001 errata.

CMSIS-RTOS2:

  • API 2.1.2
    • Relaxed some ISR-callable restrictions
  • RTX 5.2.3
    • Added TrustZone Module Identifier configuration for Idle and Timer Thread.
    • Moved SVC/PendSV handler priority setup from osKernelInitialize to osKernelStart (User Priority Grouping can be updated after osKernelInitialize but before osKernelStart).
    • Corrected SysTick and PendSV handlers for ARMv8-M Baseline.
    • Corrected memory allocation for stack and data when "Object specific Memory allocation" configuration is used.
    • Added support for ARMv8-M IAR compiler.

Devices:

  • Added GCC startup and linker script for Cortex-A9.
  • Added device ARMCM0plus_MPU for Cortex-M0+ with MPU.
  • Added IAR startup code for Cortex-A9