armhex 实用程序显然不会处理大于0xFFFF 字节的链接器段。 当有超过该大小的.text 时、大小会饱和到0xFFFF、并包含该段的所有数据。 结果是 无法解析的十六进制文件。
armhex 没有给出任何警告、我没有找到正确拆分段的选项。
这里是我的误差源代码中的
CM 链接器文件:
内存
{
固件:origin = 0x00204020、length = 0x0003BFD0
}
部分
{
.text :>固件,PALIGN(16)
}
映射输出 文件:
.text 0 00204020 00010340
armhex 参数:
"C:/ti/ccs1260/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armhex "--memwidth=8 --romwidth=8 --diag_wrap=off --ascii -o "cm.hex""cm.out"
然后、当我尝试解析十六进制文件输出时:
块地址:0x204020;长度:0xFFFF
之后解析以下块会失败、因为十六进制文件中的长度值被截断、但十六进制文件中存在整个0x10340字节的数据。
我还尝试将固件存储器分成0xFFF0大小的块、但这不允许使用会导致其他对齐/填充问题的 PALIGN