Skip to main content
JoBackMonkey
Associate II
December 25, 2021
Solved

How to enable FPU on STM32WL?

  • December 25, 2021
  • 4 replies
  • 4671 views

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?

This topic has been closed for replies.
Best answer by JoBackMonkey

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!

4 replies

Piranha
Principal III
December 25, 2021
JoBackMonkey
Associate II
December 25, 2021

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

0693W00000Hpn2QQAR.png

TDK
December 26, 2021

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
JoBackMonkeyAuthorBest answer
Associate II
December 26, 2021

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!