【单片机开发】KEIL如何生成*.bin格式的文件

目录

【前言】

一、各文件类型的特点

.axf文件:

.hex文件:

.bin文件:

二、为何需要.bin文件

三、如何生成.bin文件

方法一:使用fromelf工具转换

方法二:通过MDK的用户脚本执行转换

方法三:使用第三方工具转换

四、注意事项


【前言】

        在Keil MDK的集成开发环境中,默认情况下确实可以生成.axf格式的调试文件和.hex格式的可执行文件。这两种格式的文件各有其优势,特别是对于使用ULINK2仿真器的下载和调试过程非常有利。然而,对于习惯使用ADS(ARM Developer Suite)的用户以及部分嵌入式软件开发者来说,他们可能更倾向于使用.bin格式的文件。

一、各文件类型的特点

  1. .axf文件

    • 全称:Absolute and Executable Format,即绝对可执行格式文件。
    • 内容:该文件不仅包含了程序的二进制代码,还包含了调试信息,如符号表、源代码行号等,有助于开发者在调试过程中快速定位问题。
    • 用途:主要用于调试,因为它包含了丰富的调试信息,使得开发者可以在IDE中设置断点、查看变量值等。
  2. .hex文件

    • 全称:Intel Hexadecimal Object File Format,即Intel十六进制对象文件格式。
    • 内容:该文件主要包含了程序的二进制代码,以及用于指示程序在内存中位置的地址信息。
    • 用途:主要用于程序的下载和烧录,因为它以一种简单的格式表示了程序的二进制内容和地址信息,便于烧录工具将其写入到微控制器的Flash中。
  3. .bin文件

    • 全称:Binary File,即二进制文件。
    • 内容:该文件是纯粹的二进制代码,不包含任何调试信息或地址信息,仅包含程序的实际执行代码。
    • 用途:主要用于直接烧录到微控制器的Flash中,或者用于需要通过特定烧录工具进行程序下载的场景。由于它不包含调试信息,因此文件大小相对较小,适合在存储空间有限的环境中使用。

二、为何需要.bin文件

尽管.axf和.hex文件在开发过程中非常有用,但某些情况下开发者可能更倾向于使用.bin文件,甚至有些嵌入式软件开发者已经拥有了*.bin格式文件的调试或烧写工具。

  1. 兼容性:一些旧的或特定的烧录工具可能只支持.bin格式的文件。
  2. 空间效率:.bin文件通常不包含调试信息,因此文件大小相对较小,适合在存储空间有限的环境中使用。
  3. 习惯因素:部分开发者可能由于长期使用特定工具或遵循团队规范,已经习惯了使用.bin格式的文件。

三、如何生成.bin文件

为了充分发挥Realview MDK集成开发环境的优势,将*.axf格式文件或*.hex格式文件转换成*.bin格式的文件是十分自然的想法,但是在Keil MDK中默认并不能直接生成.bin文件,但开发者可以通过以下几种方式间接来获得:

方法一:使用fromelf工具转换

ARM公司的RVCT(RealView Compilation Tools)开发套件中包含了一个名为fromelf的工具,该工具可以将.axf或.hex文件转换为*.bin格式。在Keil MDK中,这个工具通常位于安装目录下的某个子文件夹中,如ARM\ARMCC\binARM\BIN等。

fromelf.exe转换工具的语法格式如下:
fromelf [options] input_file
其中[options]包括的选项如下表

fromelf使用步骤大致如下:

  1. 编译并生成*.axf文件(如果尚未生成)。
  2. 打开命令行工具(如CMD、PowerShell等)。
  3. 导航到fromelf工具所在的目录,或者使用完整路径直接调用该工具。
  4. 执行转换命令,例如:fromelf --bin -o output.bin input.axf,其中output.bin是输出的.bin文件名,input.axf是输入的.axf文件名。

上述方法每次都需要生成axf文件后再次调用工具进行转换,使用起来相当比较麻烦,因此在掌握了fromelf转换工具的语法格式以后,我们可以尝试使用 MDK自动调用fromelf。 

方法二:通过MDK的用户脚本执行转换

在MDK中,用户可以通过设置“Run User Programs After Build/Rebuild”来在编译或重建完成后自动执行脚本或命令行工具。这样,每次编译完成后,MDK都会自动调用fromelf工具或其他转换工具来生成*.bin文件。

设置步骤大致如下:

  1. 打开MDK的项目选项(Options for Target)。
  2. 切换到“User”标签页。
  3. 在“After Build/Rebuild”区域中,勾选“After Build/Rebuild”,并输入转换命令。        在用户命令行输入要执行的命令,例如:                                E:\Keil5\ARM\ARMCC\bin\fromelf.exe --bin -o F:\STM32\Template\USER\Objects\Test.bin F:\STM32\Template\USER\Objects\Template.axf                                                                       

    E:\Keil5\ARM\ARMCC\bin\fromelf.exe  --bin -o :命令表示从可执行文件生成bin文件

    F:\STM32\Template\USER\Objects\Test.bin:生成的bin文件的路径和文件名 

    F:\STM32\Template\USER\Objects\Template.axf   :可执行文件的路径和文件名                                                                                                                                                                       (上述标红的路径根据工程存放路径自行修改即可)

  4. 保存设置并重新编译项目,MDK将在编译完成后自动执行转换命令并生成*.bin文件。到对应路径下便可找到生成的.bin文件

方法三:使用第三方工具转换

除了ARM官方提供的fromelf工具外,还有一些第三方工具也可以将.axf或.hex文件转换为*.bin格式。这些工具可能具有不同的用户界面和选项设置,但基本原理与使用fromelf类似。用户可以根据自己的需求选择合适的工具进行转换。

四、注意事项

  • 在使用fromelf工具或其他转换工具时,请确保已经正确安装了这些工具,并了解其基本用法和选项设置。
  • 转换过程中可能会遇到路径错误、文件权限不足等问题,请根据错误提示进行相应的检查和调整。
  • 不同版本的Keil MDK和工具链中,文件生成和转换的具体方法可能有所不同,请参考对应版本的官方文档或在线资源以获取准确信息。
  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值