keil 生成BIN

在Realview MDK的集成开发环境中,默认情况下可以生成*.axf格式的调试文件和*.hex格式的可执行文件。虽然这两个格式的文件非常有利于ULINK2仿真器的下载和调试,但是ADS的用户更习惯于使用*.bin格式的文件,甚至有些嵌入式软件开发者已经拥有了*.bin格式文件的调试或烧写工具。为了充分地利用现有的工具,同时发挥Realview MDK集成开发环境的优势,将*.axf格式文件或*.hex格式文件转换成*.bin格式的文件是十分自然的想法。本文将详细的探讨这种转换方法。

在详细的介绍这种方法之前,先了解一下ARM公司的RVCT开发套件中的fromelf.exe转换工具是十分必要的,因为在Realview MDK中生成*.bin格式文件的工具正是它。

fromelf.exe转换工具的语法格式如下:

fromelf [options] input_file

其中[options]包括的选项及详细描述如下。

命令选项如下

       --help               显示帮助信息

       --vsn               显示版本信息

       --output file     输出文件(默认的输出为文本格式)

       --nodebug           在生成的映象中不包含调试信息

       --nolinkview          在生成的映象中不包含段的信息

二进制输出格式:

       --bin                生成Plain Binary格式的文件

       --m32              生成Motorola 32位十六进制格式的文件

       --i32                生成Intel 32位十六进制格式的文件

       --vhx               面向字节的位十六进制格式的文件t

       --base addr                  设置m32,i32格式文件的基地址

       --text                显示文本信息

                文本信息的标志

                -v          打印详细信息

                -a          打印数据地址(针对带调试信息的映象)

                -d          打印数据段的内容

                -e          打印表达式表print exception tables

                -f          打印消除虚函数的信息

                -g         打印调试表print debug tables

                -r          打印重定位信息

                -s          打印字符表

                -t          打印字符串表

                -y          打印动态段的内容

                -z          打印代码和数据大小的信息


在掌握了fromelf转换工具的语法格式以后,下面将介绍它在Realview MDK中的使用方法:

1.新建一个工程,例如test.uvproj;


2.打开Options for Target ‘test’对话框.


3.选择User标签页;构选

Run User Programs After Build/Rebuild框中的Run #1多选框,在后边的文本框中输入

D:\Program      C:\Keil\ARM\BIN40\fromelf.exe --bin --output ./obj/test.bin ./obj/test.axf

红色部分为fromelf.exe的绝对地址,根据自己的实际情况填写,我的keil是默认安装在C盘的。

蓝色部分为选项,不用更改。

绿色部分是生成的bin文件路径及文件名,我设置为工程根目录下的obj方件夹,文件名为test.bin

橙色部分为axf文件的路径,根据实际情况设置,我的是在obj文件夹下。

4.重新编译文件,在工程根目录下生成了test.bin文件。

### 解决Keil生成BIN文件失败的问题 #### 常见错误原因及解决方案 当使用Keil编译C51项目并试图生成.BIN文件时,可能会遇到多种问题。以下是常见错误及其对应的解决方案: #### 配置不正确 如果项目的配置设置不当,则可能导致无法成功生成.BIN文件。确保已正确设置了目标设备和内存布局[^1]。 ```c // 示例:检查启动文件中的配置是否匹配所使用的单片机型号 #include <reg52.h> // 对于8051系列微控制器应选择合适的头文件 ``` #### 编译器版本兼容性 不同版本的Keil可能对某些特性支持有所差异。确认当前使用的Keil版本能够完全支持所需的功能,并考虑升级到最新稳定版来解决问题。 #### 工具链路径缺失或错误 工具链路径未正确指定也会阻碍.BIN文件的创建过程。验证安装目录下的`UVision\ARM\Tools`是否存在必要的可执行程序如`srec_cat.exe` 或 `hex2bin.exe`。 ```bash # 检查环境变量PATH中是否包含了上述工具所在的绝对路径 echo %PATH% ``` #### 输出选项设定失误 在Project->Options对话框内的Output标签页下,需仔细核对“Create HEX File”以及其它关联项的选择状态;对于特定应用场景还可以勾选“Create Binary (.bin) file”。另外注意调整Base Address参数以适应实际硬件需求。 #### 文件过大问题 有时即使以上各环节均无误仍会面临最终产物体积异常增大的困扰。这可能是由于链接脚本定义不合理造成的冗余数据填充所致。针对此类状况建议优化section分配策略减少不必要的空白区域占用空间[^2]。 通过遵循上述指导方针可以有效提高利用Keil构建嵌入式应用程序过程中顺利产出预期格式二进制映像的成功率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值