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.

[参考译文] TMS320F280037:8字对齐的 CCS 检查(闪存 API 需要)

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1460089/tms320f280037-ccs-check-for-8-word-alignment-required-for-flash-api

器件型号:TMS320F280037

工具与软件:

我最近在使用串行闪存编程时遇到了问题、因为生成的存储器映射的代码部分不是8字对齐的。 它是使用 align (8)的组中包含的两个段之一。 我发现其他帖子建议在 cmd 文件中将这些段拆分为单独的分配、而不是将它们组合在一起。 这解决了问题。

我的问题是-当段未像这样对齐时、我可以在 CCS 中启用一个检查吗?该检查是否会生成警告/错误? 如果将来无意中发生了这个错误(因为这似乎是一个微妙的存储器映射技巧)、在构建代码时最好能够检测到这一点、而不是在使用 FlashAPI 进行系统内重新编程失败时稍后不得不在下游找到问题。

谢谢 Ben

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否可以在 CCS 中启用一项检查以在段未按此方式对齐时生成警告/错误?

    遗憾的是、不可以

    下面是一项需要考虑的建议。  使用类似于...的命令创建一个 XML 文件、该文件包含有关每个段的信息。

    ofd2000 --obj_display=none,sections -x -o section_info.xml final_executable.out

    注释 ofd2000 是一种与编译器位于同一目录的实用程序 cl2000 .  C28x 汇编工具手册中对此进行了说明。 接下来、 以您喜爱的脚本语言编写一个处理该 XML 的脚本、然后检查特定内存范围中的所有段、以确保其起始地址根据需要对齐。

    谢谢。此致、

    -George.

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

    感谢您的建议。 这是一个比我所希望的更笨重的解决方案,但比我想的更好。

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

    我可以运行 ofd2000工具、但 xml 文件似乎只包含运行地址、而不包含加载地址。 我缺少什么吗? 手册不是很有用。

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

    段的运行地址是段标头中的一个显式字段。  遗憾的是、加载地址的情况并非如此。  您必须计算它。  这并不是很难。  但这可以通过多个步骤来实现。  我将给您一个粗略的介绍、只是为了让您了解所涉及的内容。

    通过 搜索 C28x 汇编工具手册 中标题为" 节简介"的子章节、了解段。  您需要有关 XML 中的句段的信息 ofd2000 命令更改为...

    ofd2000 --obj_display=none,segments,sections -x -o section_info.xml final_executable.out

    根据段的运行地址、查找包含该段的段。  下面是计算加载地址的伪代码:

    load_address = segment->load_address + (section->run_address - segment->run_address)

    谢谢。此致、

    -George.