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.

[参考译文] 编译器/TMS320C6713B:可以't 以正确方式加载引导表

Guru**** 2392905 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/792153/compiler-tms320c6713b-boot-table-can-t-be-loaded-corectly

器件型号:TMS320C6713B

工具/软件:TI C/C++编译器

您好:

  我使用 CCS 3.83.83.83.3.20构建我的项目、并使用 hex6x 生成引导表。 当我使用我自己的辅助引导加载程序加载引导表时 、它会崩溃。

  我检查了映射文件、发现一个段的长度不 是4的倍数、 下一个段以 4的倍数开头、这将 导致引导表中出现2字节占位符(填充零)。

  当我加载引导表时,零的2个字节将用作下一段长度的一部分,因此这是错误的。

  但是、我的一位同事使用 CCS 3.3.38.xx (我忘记了)来构建我的项目、所有部分的长度 都是4的倍数。 当我使用他的.out 文件创建引导表时、它运行良好。

  那么、编译器中的2个 CCSS (6.1.x 和6.0.x)之间是否存在任何差异?

  我可以获取有关这方面的一些文档或数据表吗?

  我是否应该为  基准 CCS 生成基准次级引导加载程序?    

  非常感谢!

   

  

我还检查了这2个 CCS 中的两个 spru186、它们在引导表文件格式中是相同的、如下所示:

引导表的格式很简单。 有一个头记录包含一个4字节字段、该字段指示引导加载程序在其完成处理数据后应分支的位置。 在标头之后、要包含在引导表中的每个段都将具有以下内容:

包含段大小的1、4字节字段

包含副本目的地址的2、4字节字段

3.可以输入要复制多个段的实际数据;包含4字节零字段的终止块跟在最后一个段之后。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Stephen Zhou "]当我加载引导表时,零的2个字节将用作下一段长度的一部分,因此这是错误的。

    另一种思考方式... 处理引导表的次级引导加载程序错误、因为它无法解决由十六进制实用程序添加的填充。  此论坛主题详细介绍 了此填充。   

    [引用用户="Stephen Zhou "]我还检查了两个 spru186 [/引用]

    你提出了一个很好的观点。  当前文档并未提到每个段都填充为4个字节的倍数。  但它始终做到了这一点。  我记得、该书的旧版本提到了这种填充。  但我现在找不到这些旧版本中的任何一个。

    要考虑的变通办法... 在链接器命令文件中、应用指令 palign (4)以强制输出段填充为4个字节的倍数。  有关更多详细信息、请在 C6000汇编工具手册中搜索 标题为与 Padding 对齐的子章节。  使用此指令、您可以确保所有填充都在链接时发生、而不是在十六进制实用程序转换期间发生。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 George:

      非常感谢您的回答、我使用  palign (4)指令成功解决了问题。

      还有一件我不理解  的事情:为什么较旧的链接器会分配所有具有4个字节的倍数的段、而较新的段不会。 这是 A  

    也可能是由于它们的默认放置算法之间的差异而导致的。 旧链接器可以始终这样做吗? 

    谢谢、此致

    斯蒂芬
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Stephen Zhou 说:
    为什么较旧的链接器会分配  具有4个字节倍数的所有段,而较新的链接器不会分配这些段。

    我不知道。  我的最佳猜测:旧版链接器并不有意使所有段的长度为4字节的倍数。  恰好是这样做的。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、我明白了。
    再次感谢、此致。