keil生成hex与bin文件(生成在Objects文件夹下和指定文件夹下两种方法)附详细操作和说明

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删除掉,然后查看编译信息看那里出现了问题,再进行修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值