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

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

相关推荐