STM32 hex合并及一键烧写

有时候我们程序需要远程升级,这时候就需要一段 IAP 程序和一段 APP 程序,IAP 负责引导检测升级,APP 负责实现业务逻辑,如果每次都手动打开程序下载,则很麻烦,特别时需要大量出货的时候,每个都需要下载两次,而使用 JFlash 再配合批处理脚本的话就可以直接双击一个脚本搞定所有事情。附件的话可以直接加我 QQ 无偿分享,CSDN 需要积分,我也会上传。

参考文档为 jlink 驱动安装目录:\SEGGER\JLink_V644\Doc\Manuals\UM08003_JFlash.pdf,里面可以找到下面脚本中用到的关于烧写的所有命令的用法及含义,其它关于 .bat 脚本的我也只会一点,因为不需要深入研究便可完成。

下面是我自己根据需求用批处理实现的一键烧写脚本,可在 windows 直接运行(需要管理员权限),因为我的工程包含两个 .hex 文件,一个为引导程序,一个为应用程序

@ECHO OFF
ECHO Open a project and data file, start auto processing and exit
ECHO. %换行%
TOOL\JFlash.exe -openprjTOOL\jlinkCfgFile.jflash -openHEX\iap.hex,0x08000000 -mergeHEX\app.hex,0x08008000 -saveasHEX\iap_app.hex -auto -startapp -exit
IF ERRORLEVEL 1 goto ERROR
goto END
:ERROR
ECHO J-Flash ARM:  Error!
pause
:END

直接将这段内容复制到 .txt 文本文件中,然后将文件后缀改为 .bat 就可以双击运行了

其中第四行就是关于 JFlash 烧写的部分,首先指定使用的工具,然后 -openprj 打开 jflash 工程(自己打开 JFlash 软件创建一个保存就行了), -open 打开所需要烧写的 .hex 文件,英文逗号后面紧跟着的是要下载到芯片 flash 地址的起始地址,注意 IAP 程序和 APP 程序下载的地址是不一样的,而且要注意文件的大小,不能出现覆盖的问题,-merge 为追加的意思,也就是合并文件,然后我将合并后的文件另存为一个新的 .hex 文件,这只是为了在个别下载不了的情况下使用的,-auto 会完成擦除,烧写,校验三个操作,-startapp 会在下载完成后自动运行程序,-exit 在下载完成后退出 JFlash 软件,如果下载出错的话页面会报错并且不会自动退出,下载成功则不会有任何提示直接退出。

上面的工作做好后,就需要准备所需要的文件了,下面是我截图的所需要的文件

其中 HEX 文件夹,用于存放需要烧写的 .hex 文件,如下(iap_app.hex 时运行脚本自动生成的)

TOOL 文件夹用于存放JFlash 软件运行需要的文件及芯片描述文件,这些都可以在 jlink 驱动安装目录找到,jlinkCfgFile.jflash 是我自己根据芯片及需求保存的 jflash 工程,这个得根据自己芯片不同来重新创建并保存到此目录,注意文件名和路径,如果不和这个一样,则需要修改脚本

TOOL\ETC 目录猜测是跟芯片 flash 内存描述有关的东西

这些东西都备齐后,一个一键烧写就完成了。

猜你喜欢

转载自blog.csdn.net/a1598025967/article/details/102314060