1.bin文件生成在Object文件夹
指令:
fromelf.exe --bin --output=.\Objects\@L.bin !L
按照下述指令执行后会在Object文件下找到bin文件,文件名则是魔法棒 -> output -> Name of Executable的可执行文件名
下面是对这条指令的讲解:
fromelf.exe --bin --output=.\Objects\@L.bin !L
fromelf.exe //工具链中fromelf.exe 的路径,这个工具存在于Keil安装包中的编译器中
//这里我们也可以直接指定固定的工具安装路径。例如: C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe
--bin //生成二进制(.bin)格式的输出文件
--output=.\Objects\@L.bin //指定输出文件的路径和名称(含占位符 @L)这里的@L会替换你的工程名
!L //输入文件的路径或名称(含占位符 !L),这里的!L会连接到文件
// !L 和 @L 是 Keil 的预构建宏(Predefined Macros),用于动态表示文件路径。
// !L:通常表示链接器生成的 .axf 文件的完整路径(输入文件)。
// @L:通常表示输出文件的基路径(不带扩展名)
//所以公式组成就是:工具路径 输出文件格式 输出文件路径 输入文件
//fromelf.exe 是 ARM 编译器工具链中的一个实用程序,
//用于将链接后的文件(如 .axf、.elf)转换为其他格式(如 .bin、.hex)
2.hex & bin文件生成在指定文件夹
先确定keil在编辑的时候会生成hex文件(如果只需要生成hex文件,看这一步即可)
这里我们需要编写一个脚本文件,然后在魔法棒 -> User中输入一个指令,让项目链接完成之后执行这条指令,指令会执行脚本然后执行脚本内的指令,然后创建Hex和Bin文件到指定文件夹。
指令(输入后勾选点击OK):
新建HexBin.bat文件并使用记事本编辑,将下面代码输入其中,保存退出:
将HexBin.bat文件放在MDK的工程下
@echo off
if not exist HexBin (mkdir HexBin)
set exe_location=%1ARM\ARMCC\bin\fromelf.exe
set obj_location=%2
set project_name=%3
set obj_path=%4
set output_name=%project_name%
%exe_location% --bin -o .\HexBin\%output_name%.bin %obj_location% >nul
ren %obj_path%%project_name%.hex %output_name%.hex >nul
move %obj_path%%output_name%.hex .\HexBin >nul
exit
然后再去编译工程,等待编译成功后,MDK工程目录下会生成HexBin文件夹,并有hex&bin文件。
指令注释:
::关闭命令回显使脚本运行时不会显示每条命令本身
::如果删除掉这个指令则keil编译的时候会显示下面执行的每条指令,如果编译指令出错可以删除这条指令查看具体出错原因
@echo off
::创建输出文件夹HexBin
if not exist HexBin (mkdir HexBin)
::设置fromelf.exe位置
set exe_location=%1ARM\ARMCC\bin\fromelf.exe
::设置.axf文件的位置!L
set obj_location=%2
::获取工程名@L
set project_name=%3
::设置.axf文件所在目录路径
set obj_path=%4
::设置输出后的文件名
set output_name=%project_name%
::将bin文件生成到HexBin文件夹 >nul屏蔽成功命令 -o指定输出路径为HexBin文件夹
%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
::退出脚本
exit
下面是会出现的一些问题和解决办法:
编译报错:
*** Error: CreateProcess failed, Command: './HexBin.bat______
原因:查看HexBin.bat文件是否放在了工程文件下,放在.uvprojx同级目录中
编译报错:
fter Build - User command #1: ————————————
系统找不到指定的路径。
系统找不到指定的文件。
系统找不到指定的文件。
原因:这个有可能是脚本中的路径有问题,可以将.bat代码中@echo off删除掉,然后查看编译信息看那里出现了问题,再进行修改