实现Bootloader与APP程序HEX文件的快速合并

本文介绍了如何使用srec_cat工具通过批处理文件merge.bat,实现Bootloader与应用程序HEX文件的快速合并。详细步骤包括工具下载、环境变量配置、批处理文件创建以及文件夹结构建议。在配置过程中,需要定义源文件路径、输出格式、HEX转BIN的偏移量和异或操作等参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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文件升级时,再次使用相同的值进行异或即可将数据还原
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值