微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从.elf文件创建.hex文件

如何解决无法从.elf文件创建.hex文件

当我构建项目时,成功生成了.elf文件,但是缺少.hex和.bin文件。我在互联网上搜索,发现每个人都使用“ OBJcopY -O二进制test.elf test.bin ”命令,但是当我使用它时,它不会出现任何错误

这是我的makefile文件

PREFIX?=arm-none-eabi-
CC=$(PREFIX)gcc
OBJcopY=$(PREFIX)objcopy
OD=bin

PROJ_NAME=test

SFLAGS= --static -std=c11 -g3 -Os
SFLAGS+= -fno-common -ffunction-sections -fdata-sections
SFLAGS+= -I./
LFLAGS+=-Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group

M7DP_FLAGS= $(SFLAGS) -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16

CFLAGS  = -g -O2 -Wall -Tld.stm32.basic
SRCS += main.c
SRCS += stm32h743xx.h
SRCS += startup_stm32h743xx.S
OBJS = $(SRCS:.c=.o)


.PHONY: proj

all: proj

proj: $(PROJ_NAME).elf

$(PROJ_NAME).elf: $(SRCS)
    $(CC) $(CFLAGS) $^ -o $@
    $(OBJcopY) -O ihex $(PROJ_NAME).elf $(PROJ_NAME).hex
    $(OBJcopY) -O binary $(PROJ_NAME).elf $(PROJ_NAME).bin

clean:
    rm -f *.o $(PROJ_NAME).elf $(PROJ_NAME).hex $(PROJ_NAME).bin

$(V).SILENT:

OS:WSL2上的Ubuntu 20

解决方法

首先,尝试单行命令以验证工具链设置:

arm-none-eabi-objcopy -O ihex proj.elf proj.hex
arm-none-eabi-objcopy -O binary proj.elf proj.bin

第二,调试您的makefile,以检查是否已执行了convert命令。

make all -n

示例:

$ cat t1.c

    #include <stdio.h>
    
    void _exit(int status) {
    }
    
    int main() {
      return 0;
    }

$ arm-none-eabi-gcc t1.c -o t1.elf

t1.c:在函数“ _exit”中: t1.c:4:1:警告:“ noreturn”功能确实返回 } ^

$文件t1.elf

t1.elf:ELF 32位LSB可执行文件,ARM,EABI5版本1(SYSV),静态链接,带有debug_info,未剥离

$ arm-none-eabi-objcopy -O二进制t1.elf t1.bin

$ arm-none-eabi-objcopy -O ihex t1.elf t1.hex

$文件t1。*

t1.bin:数据

t1.c:C源代码,ASCII文本

t1.elf:ELF 32位LSB可执行文件,ARM,EABI5版本1(SYSV),静态链接,带有debug_info,未剥离

t1.hex:ASCII文本,带有CRLF行终止符

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。