Differences between CMSIS 1.30 and 2.00
Version 4 of the Code Red IDE introduced support for CMSIS 2.0. The differences between CMSIS 1.30 and CMSIS 2.00 can be categorized at two levels - the functionality provided by CMSIS as defined by ARM, and the way that the Code Red IDE supports CMSIS.
Changes at the ARM level
The main differences between CMSIS 1.3 and 2.0 as supplied by ARM are as follows:
- CMSIS now supports Cortex-M4 in addition to Cortex-M3 and M0 parts.
CMSIS now provides a library of DSP functions. Although this is primarily aimed at making use of the DSP functionality provided by Cortex-M4, an implementation is also provided for Cortex-M3 and is planned by ARM for Cortex-M0. For more details, please see the FAQ CMSIS DSP Library.
New core_cmFunc.h and core_cmInst.h files have been introduced, with some of the functionality previously implemented in core_cmX.c and core_cmX.h moving into these new files. As part of this change, when built using GNU tools (as used by the Code Red IDE), access to much Cortex processor core functionality is now implemented using functions (which will always be inlined) defined within header files, rather than as source code. This should help to reduce code size when such core functions are used by your application.
Changes at the Code Red level
Support for additional MCUs
When support for new MCUs is being added to the Code Red IDE, CMSIS library projects will be created using CMSIS 2.0 rather than CMSIS 1.3. Note that CMSIS 1.3 based libraries will continue to be supplied where these previously existed (though these will no longer be updated).
Code within CMSIS 2.0 library projects is now built at optimisation level -Os for both Debug and Release builds. Typically there is little need to debug the code within the CMSIS library projects, and building them at -Os can therefore provide a useful code size saving without hindering debugging of application code. If required, the optimization level can be easily changed by the user.
Updated project wizards
The project wizards now allow the selection of a specific version of the CMSIS library, as well as enabling/disabling the use of the CMSIS library project. This allows new projects to be created which use either CMSIS 1.30 or 2.00 as required.
In addition, the project wizards also allow the choice of whether to use the DPS library portion of CMSIS 2.00 (where applicable).
The CMSIS documentation (as produced by ARM) is no longer shipped inside each CMSIS 2.00 library project. Instead it can be accessed using the built in help system of the Code Red IDE via
Help -> Help Contents -> Code Red Product Documentation -> CMSIS
Updating projects to use CMSIS 2.0 library projects
Please see the FAQ Updating projects from CMSIS 1.30 to CMSIS 2.0