×
单片机 > 单片机程序设计 > 详情

STM32 hex合并及一键烧写

发布时间:2020-12-31 发布时间:
|

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


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


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


@ECHO OFF

ECHO Open a project and data file, start auto processing and exit

ECHO. %换行%

TOOLJFlash.exe -openprjTOOLjlinkCfgFile.jflash -openHEXiap.hex,0x08000000 -mergeHEXapp.hex,0x08008000 -saveasHEXiap_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 工程,这个得根据自己芯片不同来重新创建并保存到此目录,注意文件名和路径,如果不和这个一样,则需要修改脚本

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


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

关键字:STM32  hex合并  一键烧写

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的抗干扰措施有哪些