cancel
Showing results for 
Search instead for 
Did you mean: 

CMSIS DSP 1.16.2 || NUCLEO-H7S3L8 || H7S3L8

AudioDev
Associate II

STM32Cube IDE Version: 1.17.0 
CMSIS-DSP 1.16.2
 NUCLEO- H7S3L8


Below  a suggested solution for those using CMSIS-DSP 1.16.2 together with NUCLEO-H7S3L8 (this may be generalized to other similar configurations) as I 've been myslef browsing a couple of threads without finding some radical "receipe" to manage having CMSIS-DSP 1.16.2 compiling and running.

o - - - - - - - - - - - - - - - - - - - - - - o

Pre-requisites :

1-Download CMSIS-DSP-1.16.2

2-De-pack / Unzip this file aside in separate folder.

3-Consider the following :
- CMSIS-DSP-1.16.2.zip\CMSIS-DSP-1.16.2\Include which contains :
* several harm_xxxx_xxx.h files
* a '/dsp' subfoler with additionnal 33 headers (such as matrix_functions.h and many others..).
- CMSIS-DSP-1.16.2.zip\CMSIS-DSP-1.16.2\PrivateInclude wich contains :
* 3 header files (arm_sorting.h; arm_vec_fft.h; arm_vec_filtering.h)
- CMSIS-DSP-1.16.2.zip\CMSIS-DSP-1.16.2\Source which contains :
* 16 subfolders named in camelcase notations "XxxxxFunctions"
* Each of these folders contain .c implementations of there header counterparts. Some additionnal XxxxYxxZxxxx.c files there are also nammed in camelcase format.

4- > void their usage by turning their .c extension into  .c_old ( ie XxxxYxxZxxxx.c_old ).

o - - - - - - - - - - - - - - - - - - - - - - o

In you project file system, at, say \STM32CubeIDE\workspace_1.17.0\NUCLEO_H7S3L8\Appli\Drivers
you'll find existing BSP and STM32H7RSxx_HAL_Driver subfolders.

Todo :

- Have a new "CMSIS" folder created in there (in case there's not)
- Have two new "DSP" and "Include" subfolders created within the CMSIS folder
- As per pre-requisites detailed above, copy in DSP folder :
"Include" : "dsp" subfldr and its headers content ; and all arm_xxxx_yyyy.h headers must be there.
"PrivateInclude" : 3 header files (arm_sorting.h; arm_vec_fft.h; arm_vec_filtering.h) must be there
"Source" : 16 subfolders containg .c impementations counterparts.

o - - - - - - - - - - - - - - - - - - - - - - o

Note :

within you \NUCLEO_H7S3L8\Appli\Drivers\CMSIS :
Make sure you also have an 'Include' subfolder beside de 'DSP' one.
That 'Include' subfolder has to contain all the headers stuff that deals the mpus, cores variants such as cachel1_armv7.h, core_cm7.h, tz_context.h and the whole lot (30 headers in all).

o - - - - - - - - - - - - - - - - - - - - - - o
Visual arbo & notes  :

NUCLEO_H7S3L8
└── Appli
└── Drivers
├── BSP
├── CMSIS
│ ├── DSP
│ │ ├── Include
│ │ │ ├── dsp + misc. headers.h
│ │ │ └── (dsp contains misc. headers.h itself)
│ │ ├── PrivateInclude # 3 headers in there.
│ │ └── Source # 16 subfolders
│ │ └── example of "BasicMathFunctions" :
│ │ ├── BasicMathFunctions.c -> "BasicMathFunctions.c_old "
│ │ └── BasicMathFunctionsF16.c -> "BasicMathFunctionsF16.c_old"
│ │ └── ... (etc. within subfolders)
│ └── Include
│ └── ( all the headers  such as "cachel1_armv7.h"...."core_cm7.h"....."tz_context.h", etc.)
└── STM32H7RSxx_HAL_Driver

o - - - - - - - - - - - - - - - - - - - - - - o
Include paths etc :

° In your Appli project properties, mind including the CMSIS paths :

../Core/Inc
../../Drivers/STM32H7RSxx_HAL_Driver/Inc
../../Drivers/STM32H7RSxx_HAL_Driver/Inc/Legacy
../../Drivers/CMSIS/Device/ST/STM32H7RSxx/Include
../../Drivers/CMSIS/Include
../../Drivers/CMSIS/DSP/Include
../../Drivers/CMSIS/DSP/PrivateInclude
../../Drivers/BSP/STM32H7RSxx_Nucleo

° think of your MCU/MPU GCC Compiler: go for Optimization level 'Optimise for speed (-Ofast)


o - - - - - - - - - - - - - - - - - - - - - - o

hopefully this could be of some help. In my own case, the complete stuff compiles, the <arm_math.h> functions called are running ok. I compared the CORDIC coproc against the <arm_math.h> and confirm that the CPU load / speed gained about more than a X4 using CORDIC.

 

1 REPLY 1
KDJEM.1
ST Employee

Hello @AudioDev;

 

Thank you for sharing these steps, there are very useful.

Similar steps are detailed in this FAQ: How to integrate CMSIS-DSP libraries on a STM32 project - STMicroelectronics Community. The aim of this article is to describe step by step: How to integrate the new CMSIS-DSP on a STM32 project.

 

Thank you.

Kaouthar

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.