cancel
Showing results for 
Search instead for 
Did you mean: 

Motion_EC and Motion_MC libraries will not link after switching to SW & HW floating point support.

Rstua.1
Senior

Our project compiled and linked with no issues when set to HW floating point support. (i.e. The Properties -> C/C ++ Build -> Settings -< Tool Settings -> MCU Settings -> Floating-point ABI is set to "Hardware implementation ...".). However, some math calculations were (very) incorrect when I ran the program. I switched from "Hardware implementation ..." to "Mix HW/SW implementation..." as this worked before we upgraded all our STMicro software (i.e. libraries and tools). But now I see these errors when I try to compile the project:

c:\st\stm32cubeide_1.3.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: error: ../Middlewares/ST/STM32_MotionEC_Library/Lib\MotionEC_CM4F_wc32_ot_hard.a(motion_ec.o) uses VFP register arguments, LynQ Host.elf does not
c:\st\stm32cubeide_1.3.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: failed to merge target specific data of file ../Middlewares/ST/STM32_MotionEC_Library/Lib\MotionEC_CM4F_wc32_ot_hard.a(motion_ec.o)
c:\st\stm32cubeide_1.3.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: error: ../Middlewares/ST/STM32_MotionMC_Library/Lib\MotionMC_CM4F_wc32_ot_hard.a(motion_mc.o) uses VFP register arguments, LynQ Host.elf does not
c:\st\stm32cubeide_1.3.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: failed to merge target specific data of file ../Middlewares/ST/STM32_MotionMC_Library/Lib\MotionMC_CM4F_wc32_ot_hard.a(motion_mc.o)

... I am confused. What does it mean when the compiler says "... motion_mc.o uses VFP register arguments, LynQ Host.elf does not ..."? Why is this error not exist when I only have HW support, but does exist when I have both HW and SW support??

-thanks

10 REPLIES 10
Rstua.1
Senior

Hi Miroslav, I have selected your response which resolved the question I had posted. But your response above guided me to the better solution. It caused me to look closely at our magnetic declination (spherical harmonics) code and found that the initial matrix values were not set in the version of code giving unexpected results. So, now everything is working using the HW only floating point setting. Thank you.