KEIL / MDK生成BIN文件的两种方式
1 KEIL工程配置入口
点击“魔术棒”图标(Option for Target)
在After Build/Rebuild选项卡中,勾选 "Run # 1",在后面输入框写入bin文件生成方式,见2.1、2.2
2 输出Bin文件配置
KEIL生成bin文件,根据输入命令的相对\绝对路径来分,有两种方式,都是通过自带的fromelf.exe来生成
2.1 绝对路径方式
绝对路径方式,如果更换电脑等,需要手动修改MDK工具链(formelf.exe)所在路径与项目文件名(例如test_app)
"D:\Program Files\MDK516\ARM\ARMCC\bin\fromelf.exe" --bin -o ./obj/test_app.bin ./obj/test_app.axf"
2.2 相对路径方式
使用相对路径生成,则不需要任何修改
$K\ARM\ARMCC\bin\fromelf.exe --bin --output=@L.bin !L
编译后,Build Out框可以看到:
After Build - User command #1: D:\Program Files\MDK516\ARM\ARMCC\bin\fromelf.exe --bin --output=test1.bin .\obj\test1.axf
上述操作后,在xxx.uvprojx当前目录下,可看到一个test1.bin
如果希望生成.bin文件输出在当前工程下的指定目录,比如Bin文件夹,可如下操作:
$K\ARM\ARMCC\bin\fromelf.exe --bin --output=Bin\@L.bin !L
编译后,Build Out框可以看到:
After Build - User command #1: D:\Program Files\MDK516\ARM\ARMCC\bin\fromelf.exe --bin --output=Bin\test1.bin .\obj\test1.axf
上述操作后,在xxx.uvprojx当前目录下,可看到一个新生成的Bin文件夹,里面是test1.bin
符号代号(Key Code)
$ 扩展为 指定文件的路径名
@ 表示 Output -> Name of Exectable:定义的工程名,比如test1
build工程后,最终生成的bin文件名称将是test1.bin
! 当前目录下的扩展路径
!L 编译(Build)后,就是 .\obj\xx.axf文件
文件代号(File Code)
K keil develop chaintool 工具链(fromelf.exe)
L Linker output file
L.bin 编译后,生成的就是最终的xx.bin文件
3 参考资料
1.原文链接(Keil官方):Key Sequence for Tool Parameters
http://www.keil.com/support/man/docs/uv4/uv4_ut_keysequence.htm
2.https://blog.csdn.net/veabol/article/details/52318694
方式1:不指定路径 - 默认文件夹“Objects”
点击魔术棒"Options for Target" → 单击“User” → 按下面截图所示配置,配置完成后→ 点击"Build"编译 → 生成Bin / Hex文件
复制并输入以下内容
fromelf --bin -o "$L@L.bin" "#L
方式2:指定路径 - 自定义文件夹“HexBin”
3.2.1 编写脚本 - “HexBin.bat”
-
此脚本要放在 keil工程文件所在目录下
@echo off
::创建输出文件夹 HexBin
if not exist HexBin (mkdir HexBin)
::设置fromelf.exe位置
set exe_location=%~1ARM\ARMCC\bin\fromelf.exe
::设置.axf文件的位置
set obj_location=%2
::获取工程名
set project_name=%3
::设置.axf文件所在目录路径
set obj_path=%4
::设置输出后的文件名
set output_name=%project_name%
::将bin文件生成到HexBin文件夹 >nul屏蔽成功命令
%exe_location% --bin -o .\HexBin\%output_name%.bin %obj_location% >nul
::将hex文件重命名
ren %obj_path%%project_name%.hex %output_name%.hex >nul
::将hex文件复制到HexBin文件夹
move %obj_path%%output_name%.hex .\HexBin >nul
3.2.2 配置 - Options for Target → User
- 复制并输入以下内容
.\HexBin.bat $K !L @L $L
Keil生成并指定Bin和Hex文件的存放路径 - 附详细操作图文_keil生成bin文件-CSDN博客
$K\ARM\ARMCC\bin\fromelf.exe --bin --output=STM3210B-EVAL\@L.bin !L After Build - User command #2: C:\Keil_v5\\ARM\ARMCC\bin\fromelf.exe --bin --output=STM3210B-EVAL\STM3210B-EVAL.bin .\STM3210B-EVAL\STM3210B-EVAL.axf