各位老师好,最近在学习6678的spi boot,整个boot过程已经搞定了,就是生成多核烧写的镜像文件时很麻烦,多核使用同一个工程,也需要不同的cmd文件,因为每个核的L2全局地址都不相同,为了解决这个问题,我自己编写了一个程序,对Hex6x生成的btbl文件找到每个程序段的地址,然后按照核号修改为全局地址,重新生成新的btbl文件。因为btbl文件中程序存放格式是固定的,按道理是字节长度、目的地址、对应字节长度的数据,我可以通过这种固定格式遍历整个文件找到每个程序段的地址。使用这种方式后,我发现有的文件我可以生成正确的烧写文件,但是有文件我生成的烧写文件文件错误。排查错误原因发现使用Hex6x工具生成的btbl文件段的长度和map文件中显示的段长度不匹配,我的工程.out文件中.const段在map文件中的长度为0x1326,但在生成的btbl文件中实际文本中字节长度为0x1328,多了两个字节,导致我生成的新的btbl文件错误。我想问下这是什么原因?是我使用hex6x错误吗?还是这种现象是正常的?
我调用hex6x使用的rmd文本如下:
core0.out
-a
-boot
-e _c_int00
-map core0.map
ROMS
{
FLASH: org = 0x0C000000, length = 0x100000, memwidth = 32, romwidth = 32
files = {core0.btbl}
}


