1
votes

core of stm32f10x should be cortex-m3,with the flag"-mcpu=cortex-m3" ↓(this is section of makefile ):

CFLAGS += -T$(STD_PERIPH_LIBS)/Project/STM32F10x_StdPeriph_Template/TrueSTUDIO/STM3210B-EVAL/stm32_flash.ld
CFLAGS += -mlittle-endian -mthumb -mcpu=cortex-m3 -mthumb-interwork
CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16

the error :

/root/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld: error: /tmp/ccwnNCUm.o uses VFP register arguments, t1.elf does not
/root/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /tmp/ccwnNCUm.o
/root/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld: error: /tmp/ccaQhPT1.o uses VFP register arguments, t1.elf does not
/root/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /tmp/ccaQhPT1.o
collect2: error: ld returned 1 exit status
Makefile:39: recipe for target 't1.elf' failed
make: *** [t1.elf] Error 1

but after replacing "-mcpu=cortex-m3" with "-mcpu=cortex-m4",the error disappears and the program runs normally.

this introduction of "st.com"

STM32F103 devices use the Cortex-M3 core, with a maximum CPU speed of 72 MHz.

so why is it "-mcpu=cortex-m4" instead of "-mcpu=cortex-m3"? my arm-none-eabi-gcc:

gcc version 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] (GNU Tools for Arm Embedded Processors 9-2019-q4-major)

1
There isn't enough information here for a definitive answer -- we need a minimal reproducible example. However, the error messages suggest that details of the target platform are being specified inconsistently for your various build targets.John Bollinger
you have also these flags -mfloat-abi=hard -mfpu=fpv4-sp-d16 and this is available only on Cortex-M4, so remove these two and it will probably workvlk
The error uses VFP register arguments looks relatively clear to me. Why didn't you investigate what is a VFP (if you don't know) and presence or absence of FPU ?Guillaume Petitjean

1 Answers

3
votes

Cortex-m3 doesn't have FPU option