如何对编译生成的 Hex,Srec,S19 文件进行补全
- 
背景
部分工程编译出来的可执行文件 (.hex, .srec) 可能存在地址不连续,分段等现象,这是合理的,符合 Hex 协议或 Srec 协议,协议内容可参考 Hex,Srec 文件格式。
但是有些上位机可能无法正确的读取这些文件内的数据,所以需要对数据进行填充,默认填充值为 0xFF
此外部分云途的 MCU 最小编程单元是 8字节,如果 boot 相关的上位机不进行 8字节填充对齐,可能会导致最后一个word 没编进去。使用说明
将附件中的压缩包解压,在 Power Shell 中运行,运行结果如下图

参数解释
输入 -h 可查看帮助,可达到参数内容
App
需要进行补全对齐的文件,这个必须配置
-s 或者 --start
应用程序的起始地址,如果不专门进行指定,脚本会读取程序的起始地址,可不配置
-e 或者 --end
应用程序的结束地址,如果不专门进行指定,脚本会读取程序的结束地址,可不配置
-a 或者 --align
应用程序的对齐方式,脚本会根据对齐方式,修改起始地址域结束地址来确保对齐。可不配置,默认 4 字节对齐。
例如设置对齐方式为 8字节,可在命令行中输入.\outputPadding.exe .\random.srec -a 8如果检测出程序的起始地址为 0x4004,脚本会校准起始地址为 0x4000
如果检测出程序的结束地址为 0x8004,脚本会校准结束地址为 0x8008
如果用户指定了生成程序的起始地址与结束地址,则该参数无效-l 或者 --lineLength
生产的 Hex 或 Srec 一行所包含的有效数据字节个数(不包含地址字段与校验字段),可不配置,默认一行包含 32 字节
-o 或者 --output
输出的文件,可不配置,默认生成 output.hex 或者 output.srec
附件
压缩包中包含 outputPadding.exe , random.srec, test.hex
random.srec, test.hex 是两个测试文件,用户可在里面自由删除,并测试是否补全
test_padding.zip - 
D Diga 被引用 于这个主题
 - 
ganyongchao 可以的,后续会写一篇文字介绍如何解决这类问题。
 - 
ganyongchao 我的srec文件是要作为app的升级文件,我的上位机识别到这个srec文件没有S7数据会报错,因为上位机不知道升级的flash数据什么时候结束
 - 
ganyongchao 正解
 - 
更新 Hex 03 段与 01 段拷贝
更新 Srec S0,S7,S8,S9 段拷贝
test_padding.zip 
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

