cancel
Showing results for 
Search instead for 
Did you mean: 

How to enable FPU on STM32WL?

JoBackMonkey
Associate III

Mates,

 

I am new in the environment of STM32. Now, I have a problem with a DSP application.

 

I'd like to use FFT functions on STM32WL55 board. However, when I try to use CMSIS built-in functions, the project can not be built, it gives VFP errors.

 

I am using STM32CubeIDE, I could not enable FPU in MCU Settings. And, "Floating-point ABI" is set as "soft". However, I still get VFP errors. Here below, you can see the output of the console.

c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: error: C:\Users\unalf\Documents\STM32CubeIDE\Ptest1\ptest1\Drivers\CMSIS\Lib\GCC\libarm_cortexM4lf_math.a(arm_cfft_radix4_q15.o) uses VFP register arguments, ptest1.elf does not
c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: failed to merge target specific data of file C:\Users\unalf\Documents\STM32CubeIDE\Ptest1\ptest1\Drivers\CMSIS\Lib\GCC\libarm_cortexM4lf_math.a(arm_cfft_radix4_q15.o)
c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: error: C:\Users\unalf\Documents\STM32CubeIDE\Ptest1\ptest1\Drivers\CMSIS\Lib\GCC\libarm_cortexM4lf_math.a(arm_cfft_radix4_init_q15.o) uses VFP register arguments, ptest1.elf does not
c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: failed to merge target specific data of file C:\Users\unalf\Documents\STM32CubeIDE\Ptest1\ptest1\Drivers\CMSIS\Lib\GCC\libarm_cortexM4lf_math.a(arm_cfft_radix4_init_q15.o)
c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: error: C:\Users\unalf\Documents\STM32CubeIDE\Ptest1\ptest1\Drivers\CMSIS\Lib\GCC\libarm_cortexM4lf_math.a(arm_bitreversal.o) uses VFP register arguments, ptest1.elf does not
c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: failed to merge target specific data of file C:\Users\unalf\Documents\STM32CubeIDE\Ptest1\ptest1\Drivers\CMSIS\Lib\GCC\libarm_cortexM4lf_math.a(arm_bitreversal.o)
c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: error: C:\Users\unalf\Documents\STM32CubeIDE\Ptest1\ptest1\Drivers\CMSIS\Lib\GCC\libarm_cortexM4lf_math.a(arm_cmplx_mag_q15.o) uses VFP register arguments, ptest1.elf does not
c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: failed to merge target specific data of file C:\Users\unalf\Documents\STM32CubeIDE\Ptest1\ptest1\Drivers\CMSIS\Lib\GCC\libarm_cortexM4lf_math.a(arm_cmplx_mag_q15.o)
c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: error: C:\Users\unalf\Documents\STM32CubeIDE\Ptest1\ptest1\Drivers\CMSIS\Lib\GCC\libarm_cortexM4lf_math.a(arm_sqrt_q15.o) uses VFP register arguments, ptest1.elf does not
c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: failed to merge target specific data of file C:\Users\unalf\Documents\STM32CubeIDE\Ptest1\ptest1\Drivers\CMSIS\Lib\GCC\libarm_cortexM4lf_math.a(arm_sqrt_q15.o)
c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: error: C:\Users\unalf\Documents\STM32CubeIDE\Ptest1\ptest1\Drivers\CMSIS\Lib\GCC\libarm_cortexM4lf_math.a(arm_common_tables.o) uses VFP register arguments, ptest1.elf does not
c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: failed to merge target specific data of file C:\Users\unalf\Documents\STM32CubeIDE\Ptest1\ptest1\Drivers\CMSIS\Lib\GCC\libarm_cortexM4lf_math.a(arm_common_tables.o)

Could you help me with that? Any advice?

1 ACCEPTED SOLUTION

Accepted Solutions
JoBackMonkey
Associate III

I found the solution.

There is a video for CMSIS/DSP library.

For my board, it does not have FPU. So, I used "arm_cortexM4l_math" instead of "arm_cortexM4lf_math" in GCC Linker.

Then it worked!

View solution in original post

4 REPLIES 4
JoBackMonkey
Associate III

Thanks for the reply. However, I tried this already, but there is no additional option.

0693W00000Hpn2QQAR.png

TDK
Guru

Doesn't seem like it has an FPU. The term "FPU" doesn't appear anywhere in the datasheet or reference manual. The FPU is optional on the M4 core and DSP support doesn't imply FPU either since many DSP functions are fixed-point based.

If you feel a post has answered your question, please click "Accept as Solution".
JoBackMonkey
Associate III

I found the solution.

There is a video for CMSIS/DSP library.

For my board, it does not have FPU. So, I used "arm_cortexM4l_math" instead of "arm_cortexM4lf_math" in GCC Linker.

Then it worked!