打印
[麦麦茶水间]

【每周分享】Keil编译生成hex文件和bin文件的方法

[复制链接]
314|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dffzh|  楼主 | 2025-7-16 14:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如何通过Keil编译生成可执行文件,即hex文件和bin文件,本文给大家介绍一下。
1、生成hex文件
通过以下界面的配置操作就可以生成hex文件:
可以自定义存放路径和文件名称等,其中文件名称支持中文。

2、生成bin文件
通过以下界面的配置操作就可以生成bin文件:
生成的bin文件名称与生成的hex文件名称一致:
这里需要对该界面的配置做一些解释:
Before Compile C/C++ File: 编译c文件之前;
Before Build:编译之前;
After Build/Rebuild:编译之后运行,然后生成bin文件,其中一般使用Run #1操作来生成bin文件,一般配置该项即可。
User Command的格式一般类似于:
fromelf --bin --output=$L..\@L.bin  #L
作者配置的具体命令如下:
$K\ARM\ARMCC\bin\fromelf.exe --bin--output=@L.bin !L
其中fromelf.exe是ARM公司提供的命令行工具,用于将 ELF格式 的文件转换为二进制bin文件、十六进制hex文件或汇编代码格式;
$L:表示生成的链接文件的路径,一般是工程路径下的\objects\;
@L: 表示生成的链接文件的文件名(包含路径),但不包含文件扩展名;
#L:表示生成的链接文件的完整路径名及文件名。
编译完成后,在Build Output窗口里会显示以上内容:
补充一下:
这个里面为什么还有一个RUN #2的选项呢?
其实用户可以用它来自定义实现一些功能,相当于自己写一个命令来实现需要的功能,比如将生成的bin文件转成数据存储到某个源文件的数组当中,类似于下面的命令:
\outexe\testbin.exe@L.bin $L..\test.c
其中.\ 表示MDK工程的当前路径,testbin.exe在工程路径的outexe文件夹中;
.\outexe\testbin.exe代表编译完成后调用testbin.exe;
.\outexe\testbin.exe后面跟一个空格;
@L.bin是给testbin.exe的第一个参数;
再跟一个空给,$L..\test.c是给testbin.exe的第二个参数;
这两个参数分别代表要处理的bin文件和处理完成后输出的.c源文件。
有兴趣的朋友可以试一下。

使用特权

评论回复
沙发
暗夜幽灵骑士| | 2025-7-17 14:22 | 只看该作者
感谢分享!Keil的编译设置确实有点复杂,这篇文章解释得很清楚,特别是生成bin文件的部分,之前一直搞不懂User Command的配置,现在明白了。

使用特权

评论回复
评论
dffzh 2025-7-18 08:40 回复TA
生成bin文件的配置是有点小麻烦。 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

83

主题

1004

帖子

16

粉丝