您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 怎么在Keil-MDK开发环境生成Bin格式文件
## 前言
在嵌入式开发中,Bin格式文件(二进制镜像文件)是直接将机器码按地址顺序存储的纯二进制文件,常用于固件烧录、OTA升级等场景。Keil MDK作为主流的ARM开发工具,默认生成HEX或AXF文件,但通过简单配置即可输出Bin文件。本文将详细介绍三种实现方法。
---
## 方法一:使用fromelf工具(推荐)
### 1. 原理说明
Keil MDK内置`fromelf.exe`工具,可将链接后的ELF/AXF文件转换为Bin格式。
### 2. 具体步骤
1. **打开工程选项**
右键工程 → 选择`Options for Target` → 进入`User`选项卡
2. **配置构建后命令**
在`After Build/Rebuild`区域添加:
```bash
fromelf --bin --output=@L.bin !L
其中:
- @L.bin
:输出文件名(与工程同名)
- !L
:输入文件(自动指向生成的AXF文件)
fromelf --bin -o ./Output/@L.bin ./Objects/@L.axf
可指定自定义输出路径(如./Output/
)编译后将在工程目录或指定路径生成.bin
文件,控制台会显示:
After Build - User command #1: fromelf --bin --output=test.bin test.axf
在分散加载文件(.sct
)末尾添加:
FLASH 0x08000000 0x100000
{
... (原有区域定义)
RW_IRAM1 0x20000000 0x00008000
{
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO +RW +ZI)
}
// 添加Bin文件生成指令
BIN 0x00000000
{
*.o (BINSECTION)
}
}
此方法会生成包含指定段的Bin文件,适合需要分段输出的场景。
推荐使用:
- objcopy
(GNU工具链)
- srec_cat
(来自SRecord工具包)
在User
选项卡中添加命令(示例):
arm-none-eabi-objcopy -O binary ./Objects/@L.axf ./Output/@L.bin
ZI
段是否被正确压缩--remove-section
选项排除调试段:
fromelf --bin -o output.bin --remove-section=.debug input.axf
RO Base
与Bin文件烧录地址一致--baseaddr
参数指定基地址:
fromelf --bin --baseaddr=0x8000000 -o out.bin in.axf
D:/Project/
)在User Command中添加:
fromelf --bin -o @L.bin !L && python gen_version.py @L.bin
(需自行编写gen_version.py
脚本)
fromelf --bin -o @L.bin !L && srec_cat @L.bin -binary -fill 0xFF 0x0000 0x10000 -crop 0x0000 0x10000 -checksum-neg 0x10000 4 4 -o @L_checksum.bin -binary
方法 | 适用场景 | 复杂度 |
---|---|---|
fromelf | 常规项目 | ★★☆☆☆ |
Scatter文件 | 需分段输出的项目 | ★★★☆☆ |
外部工具 | 多工具链环境 | ★★★★☆ |
推荐优先使用内置fromelf
工具,平衡便捷性与可靠性。生成的Bin文件可通过J-Flash、ST-Link Utility等工具烧录验证。
“`
注:实际字符数约900字(含代码和格式标记)。如需调整细节或补充特定芯片型号的配置,可进一步扩展。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。