C 如何使用从偶数地址边界开始的两个字节值填充S记录?
当我编译代码时,我最终得到(a.mot)带有间隙(代码和数据不包括整个地址范围) 我想用模式C 如何使用从偶数地址边界开始的两个字节值填充S记录?,c,linker,embedded,C,Linker,Embedded,当我编译代码时,我最终得到(a.mot)带有间隙(代码和数据不包括整个地址范围) 我想用模式0x01 0x80来填补这些空白。但是,重要的是,所有两个字节对必须从偶数地址开始0x0180是来自我的micro的操作码,如果电脑到达未使用闪存区的地址,我希望执行该操作码 在开始回答之前,我想告诉您,srec_cat中的重复数据有一个问题: 给定两个部分,例如C和D在地址空间中依次放置(D在C之后) 假定C段的最后一个字节在地址0x76上结束,而D段的第一个字节在地址0x78上。换句话说,它们之间的
0x01 0x80
来填补这些空白。但是,重要的是,所有两个字节对必须从偶数地址开始0x0180
是来自我的micro的操作码,如果电脑到达未使用闪存区的地址,我希望执行该操作码
在开始回答之前,我想告诉您,srec_cat中的重复数据有一个问题:
- 给定两个部分,例如C和D在地址空间中依次放置(D在C之后)
- 假定C段的最后一个字节在地址
上结束,而D段的第一个字节在地址0x76
上。换句话说,它们之间的地址0x78
处有1字节长的间隙0x77
0x01 0x80
选项,srec cat将用0x01
填充该字节,并从0x80
开始填充以下间隙
我不知道这些部分的大小,因为链接器会处理它。用于创建一个文件,该文件覆盖您所需的地址范围,并根据需要完全填充0x01 0x80序列
然后将srec_cat与-multiple
和−禁用序列警告
选项以将“填充”文件与应用程序映像文件“合并”。您应该将填充文件指定为第一个文件,以便第二个指定的应用程序数据覆盖它
它将发出许多警告,但应该可以工作。我将在Windows中编写一个简单的解析器,其工作方式如下:
- 程序将根据从编译器获得的文件创建一个新的s记录文件
- 循环遍历生成的文件,一次读取两行s记录李>
- 如果该行是信息行S0、S9、S5等,只需将其写入新文件
- 如果第1行的地址+大小小于第2行的地址,则您发现了一个间隙。(地址1+size1)
- 将第1行写入新文件
- 如果发现间隙,用间隙常数S1xx01800180写一行,依此类推。边走边计算校验和
- 将第2行写入新文件