基于GCC v4.6生成的STM32F427连续地址Hex文件技术问询
STM32F427 Hex文件与Bootloader校验的实践分享
最近我搞定了一个STM32F427的项目,手里有一份用gcc-arm-none-eabi 4.6版本编译出来的Hex文件,这个文件的内存地址是连续的,而且我已经写好了对应的Bootloader,还特意加了校验和功能,用来在启动应用程序之前确保Hex文件的完整性。
下面是这份Hex文件的部分片段:
:10 05C8 0018460AF02FFE07F5A64202F1D00207F5F9 :10 05D8 008E4303F1A803104640F6C821C2F2000179 :10 05E8 001A460BF053F907F5A64303F1D003184652 :10 05F8 000BF068F907F5A64303F1E80340F6FC1091 :10 0608 00C2F20000194...
关于这个方案的几个关键点:
- 因为Hex文件是连续内存地址的,Bootloader加载时可以直接按固定的地址范围批量写入Flash,不需要处理分散的内存块,逻辑简化了不少
- 校验和功能是针对Hex文件里的有效数据段计算的,Bootloader加载完成后会重新计算校验值,和预存在Hex文件指定位置的校验码对比,一致才会启动应用
- 用
gcc-arm-none-eabi 4.6编译时,我特意调整了链接脚本,确保生成的Hex文件内存布局连续,这也是Bootloader能高效加载和校验的前提
内容的提问来源于stack exchange,提问作者Dheeraj Kumar
相关产品推荐
相关产品推荐

