How to enable FPU on STM32WL?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-12-25 11:08 AM - last edited on ‎2023-11-30 7:14 AM by Amel NASRI
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?
Solved! Go to Solution.
- Labels:
-
STM32WL series
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-12-26 11:19 AM
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!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-12-25 12:24 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-12-25 2:59 PM
Thanks for the reply. However, I tried this already, but there is no additional option.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-12-25 5:31 PM
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-12-26 11:19 AM
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!
