如何把elf文件转为hex文件

windows交叉编译环境下如何使用单独的命令将elf文件转为hex文件?

一、背景

一般情况下,如果是本地编译,不会有这个需求,为什么?

1. Keil环境

keil的工程配置里面,直接勾选输出HEX文件就可以产生hex目标文件,重新编译就行。

2. gcc环境

比如vscode的EIDE插件使用了交叉gcc环境,编译时自动生成hex文件,没有这个需求。

那么只有一种情况需要单独转换,那就是别人(客户或第三方)发给你elf文件但是没有提供源码工程或sdk,你无法重新编译生成hex,此时就需要将别人编译好的elf单独转为hex了。

Q:

如果不知道别人用的什么编译环境,能直接转吗?

A:

可以,不管对方用的keil还是交叉gcc,elf文件本身是满足ELF(Executable and Linkable Format)规范的,和编译环境无关,都可以用下面提供的方法转换。

二、解决办法

2.1 elf 转hex

在windows命令行环境中,进入elf文件所在目录,然后输入如下指令:

arm-none-eabi-objcopy -O ihex target.elf target.hex

target.elf 为目标源文件,target.hex为目标输出文件。

2.2 elf 转bin

arm-none-eabi-objcopy -O binary target.elf target.bin

上述操作前提是需要安装arm-none-eabi-gcc交叉环境,如果无法识别指令则需要在系统变量中添加对应目录。比如我的交叉gcc安装目录为:

C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin

就把这个添加到Path系统环境变量即可。
在这里插入图片描述

命令行检查是否能识别到gcc或objcopy命令:

arm-none-eabi-gcc -v

响应正常。
在这里插入图片描述

arm-none-eabi-objcopy -v

响应正常。
在这里插入图片描述

关于hex和bin的互转

上面已经得到hex文件或bin文件,要互转可以通过第三方工具H-Converter来实现。软件为绿色开源可以自行搜索下载。也可以通过上述指令单独得到对应格式,不过日常操作有H-Converter还是比较方便。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值