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.

[参考译文] TMS320F2812:hex2000 的未记录行为

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1642298/tms320f2812-undocumented-behavior-of-hex2000

器件型号: TMS320F2812

您好:

从最新版本的 hex2000 开始、我注意到在使用该组合时出现了一个新警告:

--boot --binary

该工具现在报告:

warning: binary output requires IMAGE and ROMS directives

然而、这就引出了一个问题:

  • 如果我从切 --binary 换到其他格式 --ascii(如)、警告将消失。
  • 生成的内容显示在功能上相同(原始二进制值与 ASCII 编码的十六进制值)、只是表示方式不同。

我想知道:

  1. 此警告是否在较新版本的 hex2000 中出现预期行为?
  2. 现在是否有严格的要求来定义专门用于二进制的`image`和`ROMS`指令
    即使存储器映射已由 --boot 链接器命令明确定义、也可以输出吗?
  3. 为什么这一要求不适用于 ASCII 输出、即使这两种格式最终都表示相同的数据?

从实际角度来看、尽管有警告、二进制输出似乎有效且可用、这会使此更改有点混乱。

希望对这一警告背后的理由以及处理这一警告的建议方法作出任何澄清。

在查找文档时、似乎 --boot --binary 未在 spru513 中记录该组合、而是在“USB 引导加载:“段落中 4.1 节下的 sprujh3 用户指南中使用。

谢谢。

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

    大家好、请允许我明天再回到这个问题

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

    您好、Pierre:

    您的查询现已转发至 TI 编译器工具组并由该组接收。

    我目前正在调查您有关“二进制输出需要映像和 ROM 指令“警告的问题、以了解 hex2000 何时开始发出警告及其原因。

    同时、您能否提供一个可重现的示例、演示警告的生成以及用于调用 hex2000 实用程序的命令行?

    谢谢。此致、

    Todd Snider

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

    尊敬的 Todd:

    以下是用于调用 hex2000 的修饰符(它由 CCS 根据我的设置生成、自 2010 年以来保持不变):
    --entrypoint=0x3F8000 --boot --gpio8 --binary

    完整的命令行如下所示(来自日志):
    “c:/ti/ccs2031/ccs/tools/compiler/ti-cgt-c2000_25.11.0.LTS/bin/hex2000 --entrypoint=0x3F8000 --boot --gpio8 --binary -o “firmware.bin““firmware.out“
    请注意、CCS 版本实际上为 20.5.0.28__1.11.0

    您可以在此处找到可重现的示例: github.com/.../CCS_1642298
    可在以下位置获取 GitHub 操作、其中显示了该问题: https://github.com/Orace/e2e/actions/runs/25485974484/job/74781518541
    在“Build with CSS“部分的第 40 行:“警告:输出格式选项-binary 需要--image 和 ROMS 指令来 避免忽略存储器中的空洞。“

    关于时间和原因:
     自 C2000 25.11.0.LTS 起: https://software-dl.ti.com/codegen/esd/cgt_public_sw/C2000/25.11.0.LTS/README.html#hex-utility-warning-for---binary-without---image
     -对我来说,它看起来像一个未处理的边缘案例。

    此致、
    Pierre Lando。

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

    您好、Pierre:

    CCS_1642298 git hub 存储库中的某个位置是否有.out 文件?

    ~ Todd

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

    尊敬的 Todd:

    否、“.out“文件未提交到存储库。

    它在编译过程中生成并被“.gitignore“忽略。

    存储库仅包含重现问题所需的最少 CCS 工程。

    GITHUB 操作现在会将其作为工件生成、您可以在此处找到它 :https://github.com/Orace/e2e/actions/runs/25522991189/artifacts/6866804720

    这样、您就可以直接运行 hex2000、而无需在本地重新编译工程。

    此致、

    Pierre Lando

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

    您好、Pierre:

    当我尝试访问您在上面提供的链接时,我收到了一个 404 错误。 您可以将.out 文件附加到此论坛主题吗?

    ~ Todd

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

    e2e.ti.com/.../firmware.zip 是希望的。

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

    您好、Pierre:

    25.11.0.LTS 包括自述文件中所述的警告、您已经观察到:

    warning: Output format option --binary requires --image and a ROMS directive to avoid ignoring holes in memory.
    

    这始终是十六进制实用程序 在二进制格式和存储器空洞方面的行为、 但之前没有概述此行为的诊断或文档、因此添加了警告。  此外、还更新了 SPRU513 (spru513aa.pdf) 以反映此行为(请参阅中的部分) Binary Object Format (--binary Option)。  另请参阅本文: 二进制文件简介 ,了解更多有关二进制格式和减少空洞的背景信息。

    在查找文档时、似乎 --boot --binary 未在 spru513 中记录该组合、而是在“USB 引导加载:“段落中 4.1 节下的 sprujh3 用户指南中使用。

    我不确定我是否遵循您的问题与使用 --boot.  

    -Alan

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

    您好 Alan、

    我的理解是、在这种情况下:

    -“--boot“:选择一种特定的引导映像格式、该格式不同于先前链接的文章中引用的二进制对象格式。

    -“--binary“:仅选择有效载荷数据的编码方式(原始字节而不是 ASCII 十六进制)。

    SPRU513AA(第 306 页)中描述的引导格式不是平面存储器转储。 它包含:

    -一个标题

    -入口点

    -具有显式大小和目标地址的块序列

    由于这种面向块的结构、生成的引导映像已经保留了各段之间的不连续性。 因此、“存储器中的漏洞“不会造成歧义、因为纯二进制存储器转储中会存在歧义。

    这也与 “--boot --ascii “不产生警告这一事实是一致的。

    由于“--boot --ascii “和“--boot --binary“ 生成的引导映像结构完全相同、仅在有效载荷编码(ASCII 十六进制/RAW 字节)中有所不同、因此我希望两种情况下的警告行为是相同的。

    所以、除非我遗漏了一些东西、否则关于二进制输出和内存漏洞的警告并不真正适用于由“--boot“生成的引导映像。

    此致、

    Pierre

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

    您好、Pierre、感谢您澄清您的问题。  

    我们的十六进制实用程序专家将在本周的星期四工作、因此我会确保在他返岗时给您解答。

    -Alan

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

    感谢您将此问题通知我们并提交测试案例。  我能够重现同样的行为。

    由于这种面向块的结构、生成的启动映像已经保留了各段之间的不连续性。

    我同意。  因此我提交 EXT_EP-13428 请求将十六进制实用程序更改为在使用这两个选项时不发出该警告: --binary --boot。  欢迎点击这个链接。

    如果您添加选项 --display_error_number、您可以看到此诊断的 ID 号...

    warning #21134-D: Output format option --binary requires --image and a ROMS
       directive to avoid ignoring holes in memory.

    要指示 hex2000 不发出这个特定诊断、请添加选项 --diag_suppress=21134。

    谢谢。此致、

    -乔治