作者:鱼鹰Osprey

ID   :emOsprey

鱼鹰曾在《​​bin 和 axf 文件的生成​​》笔记中介绍了如何使用 keil 生成 bin 文件,也在 《​​功能强大的 HEX 开源换工具,你值得拥有​​》中介绍了如何使用第三方工具生成 bin 文件,为什么还要写这篇笔记呢?第三方工具功能强大,但 KEIL 自带工具不需要额外安装软件,更加方便,但网上流传的 keil 生成 bin 文件的方法都有一个缺点,那就是同样的命令,如果 ROM 分了多个,那么将生成一个文件夹,里面包含了多份 ROM 的 bin 文件。比如,你的配置如下:

Keil 生成 Bin 文件最正确的姿势_单片机

如果你使用下面的命令将生成一个文件夹,而不是单独的一个 out.bin 文件。(!L 代表当前工程目录的 axf 文件,会根据目标的设置而自动更新)


fromelf.exe --bin -o ./out.bin !L

Keil 生成 Bin 文件最正确的姿势_第三方工具_02


生成的文件是两个单独的,原本的 out.bin 应该是一个文件得,但由于有两个 ROM ,所以生成了两个 bin 文件用于两个 ROM 的烧录,但事实上,我们只有一个 ROM (flash),只是我们人为把它分成了两个(比如 BootLoader 和 APP 部分)。如果我们想要一次性烧录应该怎么办呢?

Keil 生成 Bin 文件最正确的姿势_公众号_03

一般遇到这种情况,有些道友会使用第三方工具将两个 bin 文件进行合并。但鱼鹰今天想和道友分享的可不是这个,不然怎么能说是最正确的姿势呢?这个方法是鱼鹰前两天偶然看到的,非常好用,所以就此分享给大家,让各位道友也能掌握该方法。

废话不多说,直接上命令:


fromelf.exe --bin --bincombined --bincombined_padding=1,0xff --output outfile.bin  !L

是的,你没有看错,还是使用 fromelf.exe 程序,不同的是,加入了额外的参数,因此,你可以用它将 axf 文件直接生成一个 outfile.bin 文件(文件名可以任意),因为中间可能存在空白,所以需要参数设定空白填充的数据,这里是 0xff。

Keil 生成 Bin 文件最正确的姿势_单片机_04


默认生成路径在工程文件所在文件夹下:


Keil 生成 Bin 文件最正确的姿势_单片机_05

并且这个命令可以适用于一个 ROM 的情况,所以建议大家使用该命令生成 bin 文件。

你学废了吗?



如果对你有帮助,记得发分享哦


微信公众号「鱼鹰谈单片机

每周一更单片机知识

Keil 生成 Bin 文件最正确的姿势_单片机_06