This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320C6678: 多核boot产生烧写镜像文件,使用Hex6x工具将out文件生成btbl文件,btbl文件中段的长度和map文件中显示的段长度不匹配

Part Number: TMS320C6678


各位老师好,最近在学习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}
}

  • 您好,我们已收到您的问题并升级到英文论坛寻求帮助,链接如下。由于国外正值感恩节假期,回复可能会相对慢一些,给您带来的不便敬请谅解!

    e2e.ti.com/.../tms320c6678-the-length-of-the-section-in-the-btbl-file-does-not-match-the-length-of-the-section-shown-in-the-map-file

  • 谢谢老师,我也在想其他办法解决这个问题

  • 您好,

    能否请您把 btbl 文件错误消息以snapshot的形式上传下?

    此外,请提供下您使用的文件以及生成映像所遵循的步骤。

    同时请注意以下tips:

    您可以尝试转换一些示例".out"文件并确保其正确转换,然后从该示例中逐一修改文件。

    例如,有一个示例"spiboot.out"文件运行以下script。 "spidboot.bat"创建可引导刻录映像。

    spiboot.bat -用于调用和运行所有实用程序的脚本文件。

    set IBL_UTIL=C:\ti\pdk_c665x_2_0_16\packages\ti\boot\ibl\src\util
    hex6x spiboot.rmd
    b2i2c spiboot.btbl spiboot.btbl.i2c
    %IBL_UTIL%\btoccs\b2ccs spiboot.btbl.i2c spiboot.i2c.ccs
    %IBL_UTIL%\romparse\romparse nysh.spi.map
    copy i2crom.ccs spirom_le.dat
    byteswapccs i2crom.ccs spirom_le_swap.dat
    %IBL_UTIL%\btoccs\ccs2bin i2crom.ccs spirom_le.bin
    %IBL_UTIL%\btoccs\ccs2bin -swap i2crom.ccs spirom_le_swap.bin

  • 您好:

       我生成btbl文件的批处理文本为    hex6x.exe  core0.rmd

       其中core0.rmd文本内容如主帖所示。生成的map文件结果如下图所示,其中.const段长度为0x1396

       

    生成的btbl文件.const段起始段如下图所示,起始行数8065行

    .const段结束段如下图所示,结束行数8274行,

    每行24字节,可以算出总字节长度为0x1398,和map文件中0x1396不一致,多了两个字节长度,需要的话我可以上传工程的.out文件

  • 您好,我想我知道原因了。猜想是因为程序段长度不是4字节整数倍,工具会自动将其补成4字节整数倍。因为我的成语在一个函数里有一个局部变量定义去下

    uint8 table[3][2]={{0,0x11},{2,0x12},{3,0x13}};

    这里面的初始化值就是我之前回复的帖子中的图三.const段最后一行数据。多了两个字节的00,因为是6字节自动不成了8字节。

    我修改table为[4][2]之后长度就一致了

  • 好的您的问题解决了就好。