合并hex文件的几种方法
1、手动合并法
打开我们的hex文件,就以BOOT和APP代码为例,用记事本或者其他的软件(notepad++等)打开
hex文件最后一行是代表文件的结束,那么我们只需要删除boot文件的最后一行代码,然后把APP的代码的全部内容直接拷贝过来,接到boot文件的最后一行。
(关于hex文件的格式可以参考:hex文件格式详解)
先删除boot文件的最后一行代码:
然后把APP的代码的全部内容直接拷贝过来,接到boot文件的最后一行:
上面图示的情况是BOOT占用0x08000000到0x0x08003FFF的空间,APP占用0x0x08004000开始后面剩余的空间。
保存后我们就得到了最终的hex文件,直接烧录进去MCU即可。
2、J-Flash工具合并
jlink说我们必不可少的烧录调试工具之一,一起来看看怎么使用jlink自带的J-Flash工具软件合并
打开J-Flash,首先选择我们的第一个BOOT文件,file->open data file然后选择文件即可
打开之后,可以看到地址是从8000000开始的,也即是我们的MCU flash的基地址
然后再点击file->merge data file
选择我们的第二个APP文件,选择打开之后,第二个hex文件就拼接到了BOOT文件之后了
然后再点击file->save data file as…保存文件即可,建议另存为我们需要的文件名,默认为我们打开的第一个文件。注意文件后缀名。
3、开源小工具
这个方法和上面J-Flash的方法类似,网上有很多热心网友开发的小工具,这里我推荐一个开源项目:https://github.com/SmartElec/STM32-IAP-HEX-Merge
工程下载下来里面有源码,感兴趣的就看看,不感兴趣的就直接用即可,在STM32-IAP-HEX-Merge-master\Hex文件合并\bin\Release文件夹内
点击选择文件,分别添加boot和app的hex文件,选择输出目录,设置输出文件名称,点击合并即可生成到设置的目录下。