STM32F4-发现链接问题

时间:2016-08-28 11:17:11

标签: linker cross-compiling stm32 stm32f4discovery

我正在尝试在STM32F4-Discovery板上运行一些代码并运行(芯片:STM32F407VGT6)。

tutorial解释了编译和链接Nucleo板所需的必要代码和步骤(芯片:STM32F401RE)。我试图将此过程转换为我的Discovery板,但是当我尝试链接目标文件时出现以下链接错误

error: system.o: Conflicting architecture profiles M/A
failed to merge target specific data of file system.o
error: main.o: Conflicting architecture profiles M/A
failed to merge target specific data of file main.o
error: startup_stm32f407xx.o: Conflicting architecture profiles M/A
failed to merge target specific data of file startup_stm32f407xx.o

我的项目结构如下

├── STM32Cube_FW_F4_V1.13.0
│   ├── Drivers/
│   ├── Projects/
│   └── Utilities/
├── stm32f4 (my project folder)
│   ├── main.c
│   ├── Makefile
│   ├── startup_stm32f407xx.s
│   └── system.c

这是我的 Makefile STM32CubeF4 can be found here):

STM32Cube:=../STM32Cube_FW_F4_V1.13.0

#DEVICE:=STM32F07xG
DEVICE:=STM32F407xx

CC:=arm-none-eabi
CFLAGS:=-Wall -mcpu=cortex-m4 -mlittle-endian -mthumb
INC_PATH1:=$(STM32Cube)/Drivers/CMSIS/Device/ST/STM32F4xx/Include
INC_PATH2:=$(STM32Cube)/Drivers/CMSIS/Include
LD_SCRIPT:=$(STM32Cube)/Projects/STM32F4-Discovery/Templates/TrueSTUDIO/STM32F4-Discovery/STM32F407VG_FLASH.ld

all:
    $(CC)-gcc $(CFLAGS) -I$(INC_PATH1) -I$(INC_PATH2) -D$(DEVICE) -Os -c system.c -o system.o
    $(CC)-gcc $(CFLAGS) -I$(INC_PATH1) -I$(INC_PATH2) -D$(DEVICE) -Os -c main.c -o main.o
    $(CC)-gcc $(CFLAGS) -I$(INC_PATH1) -I$(INC_PATH2) -D$(DEVICE) -Os -c startup_stm32f407xx.s -o startup_stm32f407xx.o

link: all
    $(CC)-gcc $(CFLAGS) -D$(DEVICE) -T$(LD_SCRIPT) -Wl,--gc-sections system.o main.o startup_stm32f407xx.o -o main.elf

我从

复制了 startup_stm32f407xx.o
$(STM32Cube)/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f407xx.s

我已在 main.c 中将 BSRRL BSSRH 更改为 BSRR system.c 中的 PWR_CR_VOS_1 PWR_CR_VOS

进行了这些更改,以便代码编译并且我的主板的头文件中不存在默认变量名。

我已经查看了两次教程并搜索了有关错误消息的信息,但无法解决此问题。

有人能告诉我我做错了什么或者指出了我正确的方向吗?

0 个答案:

没有答案