CMSIS-DSP
CMSIS DSP Software Library
|
This user manual describes the CMSIS DSP software library, a suite of common compute processing functions for use on Cortex-M and Cortex-A processor based devices.
The library is divided into a number of functions each covering a specific category:
The library has generally separate functions for operating on 8-bit integers, 16-bit integers, 32-bit integer and 32-bit floating-point values and 64-bit floating-point values.
The library is providing vectorized versions of most algorithms for Helium and of most f32 algorithms for Neon.
When using a vectorized version, provide a little bit of padding after the end of a buffer (3 words) because the vectorized code may read a little bit after the end of a buffer. You don't have to modify your buffers but just ensure that the end of buffer + padding is not outside of a memory region.
CMSIS-DSP pack is containing an optional project : The CMSIS-DSP Compute Graph. The documentation for this project is available on the CMSIS-DSP github repository.
A Python wrapper is also available with a Python API as close as possible to the C one. It can be used to start developing and testing an algorithm with NumPy and SciPy before writing the C version. Is is available on PyPI.org. It can be installed with : pip install cmsisdsp
The library is released in source form. It is strongly advised to compile the library using -Ofast to have the best performances.
The library functions are declared in the public file arm_math.h
which is placed in the Include
folder. Simply include this file. If you don't want to include everything, you can also rely on headers in Include/dsp
folder and use only what you need.
The library ships with a number of examples which demonstrate how to use the library functions. Please refer to Examples.
The library is now tested on Fast Models building with cmake. Core M0, M4, M7, M33, M55, A32 are tested.
Each library project has different preprocessor macros.
ARM_MATH_BIG_ENDIAN
:ARM_MATH_MATRIX_CHECK
:ARM_MATH_ROUNDING
:ARM_MATH_LOOPUNROLL
:ARM_MATH_NEON
:ARM_MATH_NEON_EXPERIMENTAL
:ARM_MATH_HELIUM
:ARM_MATH_HELIUM_EXPERIMENTAL
:ARM_MATH_MVEF
:ARM_MATH_MVEI
:ARM_MATH_MVE_FLOAT16
:DISABLEFLOAT16
:ARM_MATH_AUTOVECTORIZE
:The following files relevant to CMSIS-DSP are present in the ARM::CMSIS Pack directories:
File/Folder | Content |
---|---|
CMSIS\Documentation\DSP | This documentation |
CMSIS\DSP\Examples | Example projects demonstrating the usage of the library functions |
CMSIS\DSP\ComputeLibrary | Small Neon kernels when building on Cortex-A |
CMSIS\DSP\Include | include files for using and building the lib |
CMSIS\DSP\PrivateInclude | private include files for building the lib |
CMSIS\DSP\Source | source files |
Please refer to Revision History.
The CMSIS-DSP is provided free of charge under the Apache 2.0 License.