怎么在Keil-MDK开发环境生成Bin格式文件

发布时间:2021-09-10 10:14:31 作者:chen
来源:亿速云 阅读:195
# 怎么在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文件)

  1. 高级配置(可选)
    
    fromelf --bin -o ./Output/@L.bin ./Objects/@L.axf
    
    可指定自定义输出路径(如./Output/

3. 验证输出

编译后将在工程目录或指定路径生成.bin文件,控制台会显示:

After Build - User command #1: fromelf --bin --output=test.bin test.axf

方法二:修改分散加载文件(Scatter File)

1. 编辑Scatter文件

在分散加载文件(.sct)末尾添加:

FLASH 0x08000000 0x100000
{
  ... (原有区域定义)

  RW_IRAM1 0x20000000 0x00008000
  {
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO +RW +ZI)
  }

  // 添加Bin文件生成指令
  BIN 0x00000000
  {
   *.o (BINSECTION)
  }
}

2. 重新编译

此方法会生成包含指定段的Bin文件,适合需要分段输出的场景。


方法三:手动调用外部工具

1. 安装第三方工具

推荐使用: - objcopy(GNU工具链) - srec_cat(来自SRecord工具包)

2. 配置Keil

User选项卡中添加命令(示例):

arm-none-eabi-objcopy -O binary ./Objects/@L.axf ./Output/@L.bin

3. 优缺点


常见问题解决

Q1: 生成的Bin文件过大

Q2: 地址错位问题

Q3: 中文路径报错


进阶技巧

1. 自动添加版本信息

在User Command中添加:

fromelf --bin -o @L.bin !L && python gen_version.py @L.bin

(需自行编写gen_version.py脚本)

2. 生成带校验的Bin

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字(含代码和格式标记)。如需调整细节或补充特定芯片型号的配置,可进一步扩展。

推荐阅读:
  1. MySQL bin-log
  2. Java如何生成和解析XML格式文件和字符串

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

keil

上一篇:MySQL有哪些方法可以修改密码

下一篇:怎么通过重启路由的方法切换IP地址

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》