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.

[参考译文] AM2432:从 elf (.out)转换的 RPRC 不正确

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1377220/am2432-rprc-conversion-from-elf-out-is-incorrect

器件型号:AM2432

工具与软件:

大家好、

我们尝试使用 IAR 工具链构建我们的 elf (.out)文件、然后将该文件转换为 RPRC 格式。

在我们尝试使用 IAR (ielftool)的实用工具添加编译后操作来填充二进制映像中的空部分之前、此转换正常运行。

在此填充操作之前、RPRC 生成了2个段(IRAM 为1.separate 段、 DRAM 为2.separate 段)、但填充操作之后、RPRC 仅生成1个段(同时组合 IRAM 和 DRAM)。

因此、引导加载程序会尝试将此单个段加载到 IRAM 区域、但由于 RPRC 中的段大小大于 IRAM 允许的范围(0x30000)、因此失败。

elf2rprc.js 如何创建 不同的段?  

是否可以创建一个2个段、一个用于具有 固定 大小(即0x30000)的 IRAM、另一个具有 DRAM 剩余数据的段?

我已经附加了 elf 转储和 RPRC 文件。 左侧是"无填充"、右侧是"有填充"

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

    您好!

    您在构建步骤中是否可以使用 xipGen 工具? 如果可能、请共享编译日志(make 中没有-s)以全面了解编译步骤。

    谢谢!

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

    是的、我们在构建步骤中使用 xipGen、附件 zip 包含"with fill"和"withoutFill"日志文件。 如果您还需要 information.e2e.ti.com/.../xipGen_5F00_Tool_5F00_Log.zip、请告诉我

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

    大家好、

    温柔的提醒!!!!

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

    您好!

    是的、我们在构建步骤中使用的是 xipGen

    这就是问题的原因。

    您能否在构建步骤中跳过与 XIP 相关的任何内容并尝试生成映像?

    此致、

    Prashant

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

    您好 Prashant:  
    我跳过了构建中的 XIP 步骤。 这可以解决我的问题。  但您能否更详细地解释一下该问题的可能根本原因。  代码中没有任何 XIP 段、所有段都是非 XIP 的、我只是尝试用0x00填充空段。  

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

    您好!

    该问题是由 XIP 生成器工具设计造成的。

    构建过程如下:

    • 为示例生成 ELF。
    • 使用 out2rprc 工具将 ELF 转换为 RPRC。
    • 将 RPRC 拆分为两个 RPRC:一个用于非 XIP 段(.rprc)、另一个用于 XIP 段(.rprc_xip)
    • 为相应的 RPRC 生成应用图像。

    第2步结束时、一切都按预期运行。 但是、在第三步、XIP 生成器工具会拆分并生成 RPRC、这种设计使任何连续的区段都将合并到一个区段。 这意味着、当您使用0x0填充空白区域时、XIP 生成器工具会将 IRAM 和 DRAM 视为连续的部分、并将它们合并成最终导致该问题的部分。

    因此、解决方案是跳过编译步骤的第三步、这不是问题、因为您没有使用 XIP 部分。

    此致、

    Prashant