使用srec_cat.exe工具,通过批处理文件 实现Bootloader与APP程序HEX文件的快速合并。
1.工具下载
srec_cat.exe 工具可通过 https://srecord.sourceforge.net/download.html 进行下载
2.将安装好的工具配置到环境变量
也可将srec_cat.exe放在merge.bat同级目录
3.创建 merge.bat 文件,并将以下内容复制进去。
@echo off
setlocal enabledelayedexpansion
:: 定义相对路径的文件名 (保存.bat文件夹的同级目录)
set source1_filename=Camera_Client_Bootloader\Project\Output\Camera_Client_Bootloader.hex
set source2_filename=Camera_Client_APP\Project\Output\Camera_Client_APP.hex
:: 定义新建文件夹的名称
set folder_name=Release
:: 定义输出文件名的前缀和后缀
set outfile_prefix=Project
set outfile_suffix=_v1.0
:: 定义用于生成二进制文件的源文件,source1:1 source2:2
set use_source=2
:: 定义二进制文件输出的格式
set output_format=bin
:: 定义HEX转BIN时的偏移量 (若不偏移将会从地址0x00000000开始生成)
set offset=-0x08020000
:: 定义异或操作的开关和值 0:关闭 1:开启
set do_xor=0
set xor_value=0x55
::--------------------------------------------------------------------------------------------------------
:: 获取批处理文件的所在目录路径
set "script_path=%~dp0"
:: 构建输出文件夹的路径
set "output_dir=%script_path%%folder_name%"
:: 检查输出文件目录是否存在,若不存在则新建一个
if not exist "%output_dir%" (
mkdir "%output_dir%"
)
:: 获取批处理文件的所在目录路径
set "parent_dir=%~dp0"
:: 构建源文件的相对路径
set "source1_path=%parent_dir%..\%source1_filename%"
set "source2_path=%parent_dir%..\%source2_filename%"
:: 根据配置使用相应的源文件
if %use_source% EQU 1 (
set source_path=%source1_path%
) else (
set source_path=%source2_path%
)
:: 合并两个源文件
srec_cat.exe "%source1_path%" -intel "%source2_path%" -intel -o "%output_dir%\%outfile_prefix%%outfile_suffix%.hex" -intel
:: 判断是否进行异或操作
if %do_xor% EQU 1 (
:: 进行异或操作
srec_cat.exe "%source_path%" -intel -offset %offset% -xor %xor_value% -o "%output_dir%\%outfile_prefix%%outfile_suffix%.%output_format%" -Binary
) else (
:: 不进行异或操作
srec_cat.exe "%source_path%" -intel -offset %offset% -o "%output_dir%\%outfile_prefix%%outfile_suffix%.%output_format%" -Binary
)
:: 输出提示信息
echo Generation of output files complete.
:: 结束脚本执行
::exit /b
4.文件夹结构建议
文件夹说明:
1.项目文件夹可随意移动,因为merge.bat内使用的是相对路径
2. 只要Bootloader工程文件夹、APP工程文件夹、存放merge.bat的文件夹 三个文件夹为同级目录即可
配置说明
1.定义相对路径的文件名(以上图为例):
set source1_filename=Bootloader工程文件夹\File_A1\\\...\output\bootloader.hex
set source2_filename=APP工程文件夹\File_B1\\\...\output\app.hex
2.定义用于生成二进制文件的源文件:
bat会将其中一个hex转换为bin文件,选择使用source1_filename还是source2_filename
3.定义二进制文件输出的格式:
常规输出格式为.bin,可根据需求改为其它格式名。不同的只是格式名,内容并不会发生变化
4.定义HEX转BIN时的偏移量:
常规会将APP.hex转换为.bin文件,用于IAP升级。但是APP.hex的起始地址通常为0x080XXXXX,需将起始地址设为偏移量
5.定义异或操作的开关和值:
在将hex转换为bin文件时,可选择是否进行异或操作,达到对bin文件简单加密的效果。在IAP使用该bin文件升级时,再次使用相同的值进行异或即可将数据还原