使用Keil-MDK生成*.bin格式可执行文件
前言
在使用Keil MDK的集成开发环境中,默认情况下可以生成*.axf格式的调试文件和*.hex格式的可执行文件。虽然文件可以直接使用仿真器的下载和调试,但是出于用户需求或使用IAP升级, ∗ * ∗.bin格式的文件更简约也更有优势,所以在Keil下将*.axf格式文件或*.hex格式文件转换成*.bin格式的文件的方法是必须掌握的,本文所述就是这种转换方法。
一、fromelf.exe工具
转换之前,先了解一下ARM公司的RVCT开发套件中的fromelf.exe转换工具,在MDK-Keil中生成*.bin格式文件的工具正是它。
fromelf.exe转换工具的语法格式如下:fromelf [options] input_file
其中[options]包括的选项及详细描述见下表:
选项 | 描述 |
---|---|
–bin | 生产Plain Binary格式文件(所说的bin文件) |
–help | 显示帮助信息 |
–vsn | 显示版本信息 |
–output file | 输出文件,默认输出文件为文本文件 |
–nodebug | 生成的镜像不包含调试信息 |
–nolinkview | 生成的镜像不包含段信息 |
–m32 | 生成Motorola 32位十六进制格式文件 |
–i32 | 生成Intel 32位十六进制格式文件 |
–vhx | 面向字节的位十六进制格式文件 |
–base addr | 设置m32、i32格式文件的基地址 |
–text | 显示文本信息 |
-v | 打印详细信息 |
-a | 打印数据地址(针对带调试信息的镜像) |
-d | 打印数据段的内容 |
-e | 打印表达式表:print exception tables |
-f | 打印消除虚函数的信息 |
-g | 打印调试表:print debug tables |
-r | 打印重定位信息 |
-t | 打印字符串表 |
-y | 打印动态段的内容 |
-z | 打印代码和数据大小的信息 |
二、使用方法
1.配置输出
打开Keil工程,点击Opitons for Target…,然后点击output设置如图:
Led_V3_00为生成的可执行文件名,(即编译后会生成一个Led_V3_00.axf的文件)生成的bin文件就是从这个文件生成的,注意不要带有.hex后缀,否则可能出现不能正常调试等问题
2.输出格式
然后点击user设置如图,在Run #1后输入以下内容:
D:\keil\ARM\ARMCC\bin\fromelf.exe --bin -o . . .. ../Output/Led_V3_00.bin . . .. ../Output/Led_V3_00.axf
D:\keil\ARM\ARMCC\bin\fromelf.exe --bin -o :命令表示从fromelf.exe所在路径执行fromelf工具程序,按照–bin选项执行生成bin文件
.
.
..
../Output/Led_V3_00.bin :生产的bin文件的路径和文件名,
.
.
..
../Output/Led_V3_00.axf :可执行文件的路径和文件名,
. . .. ../表示相对路径,相对的的工程文件所在目录,此处表示工程文件所在目录上一级目录下的Output目录下,也可改为绝对路径
最终得到:
可以看出hex文件大小是bin文件大小的两倍多,
关于hex文件和bin文件区别可以参见:https://blog.csdn.net/Yin_w/article/details/131606027?spm=1001.2014.3001.5502