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.

[参考译文] AM6422:存储器映射布局

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1517482/am6422-memory-map-layout

器件型号:AM6422

工具/软件:

您好、

   我们使用的 SDK 版本是 8.6、支持 Linux 和 FreeRTOS。 在正常操作过程中、仅使用内核 5F0-0、因此我们将其它内核的内存资源分配给该内核、总容量约为 60M。 由于 R5F 内核涉及在运行时解析 XML 文件的过程、我们的测试表明解析时间正在逐渐增加、最多达到 80 秒、这是我们无法接受的。 我的同事发现问题可能是由于内存分配不足、导致内存请求期间出现内存碎片、从而导致后续请求的处理时间更长。 为了解决这个问题、我们将器件树中分配给 R5F 的存储器增加到了 300m。 系统编译和运行成功、XML 文件解析时间缩短到 10 秒。 根据这一观察、问题似乎确实是由内存分配不足引起的。 然而、我们仍有一些关切。 在链路中定义的 DDR 资源分配

https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/09_01_00_41/exports/docs/api_guide_am64x/MEMORY_MAP.html

R5F 的最大可用 DDR 资源最多仅为 0xA5800000。 虽然我们的修改允许系统运行、但我们担心潜在的不可预见的影响。 我们非常感谢您对此问题的反馈。 非常感谢!

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

    您好、Wanglili、

    当您将 R5F 内核的 DDR 大小从 1MB 增加到 300MB 时、则将 R5F 应用程序存储器与 Linux 内存分配重叠。

    这可能会产生问题。 我正在将您的问题发送给 Linux 专家、以便对上述问题进行评论。

    此致、

    Anil.

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

    是否有关于我提出的问题的任何更新?

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

    您好、Wanglili、

    对延迟的回复表示歉意、我从度假回来并处理我的客户请求。

    您链接的 MCU+存储器映射页面显示了 MCU+ SDK 中 R5F 工程的默认存储器分配。 但是、这些内存分配不是固定的。

    正如 Anil 所说、最重要的一点是确保在 Linux 器件树文件中更新内存分配、以便器件树文件中的内存分配与链接器命令文件中的内存分配相匹配。 有关存储器分配的更多信息、请参阅 AM64x Academy:

    多核>内存>如何分配内存
    https://dev.ti.com/tirex/explore/node?node=A__AWaFtb0qxzmpAt-FGjVcCA__AM64-ACADEMY__WI1KRXP__LATEST 

    附加说明 — TCM 存储器使用

    由于您仅使用 R5F0_0、您实际上是否将 AM6422 与所有 R5F 内核一起使用? 或者、您是否使用其中一个具有较少 R5F 内核的其他 AM64x 器件型号?

    如果您不使用 R5F0_1、我建议将 R5F 子系统配置为单核模式。 这将释放通常为 R5F0_1 保留的 TCM 存储器、供 R5F0_0 内核使用。 有关如何将 R5F 子系统设置为单核模式的示例、请参阅 AM64x Academy:

    多核>引导和禁用处理器内核>禁用 Linux 中的远程内核
    https://dev.ti.com/tirex/explore/node?node=A__AWQEpuVOCljkhxqRi05Qpw__AM64-ACADEMY__WI1KRXP__LATEST 

    此致、

    Nick

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

    您好、

       实际上、我们已经将最初由其他 R5F 内核使用的存储器分配给 R5F0-0、但这只相当于 60M。 但是、在设备树中、我们实际上将其定义为 3 亿。 目前、它正常工作、但定义的地址远远超过 0xA5800000。 我们想知道是否存在任何其他潜在问题。 这对我们来说至关重要、因为它可能会影响我们的下一步解决方案设计。

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

    您好、Wanglili、

    根据“如何分配存储器“页面、请确保更新 linker.cmd 文件、使其与 Linux 器件树文件对齐。 如果要在 Linux 器件树中分配 300MB 的 DDR、则应在 Linker.cmd 文件中执行相同的操作。

    我不是 RTOS 开发专家、但您应该确保不会看到 RTOS 代码中有任何数据溢出。 例如、有时一些存储器 段放置在存储器分配的开头、并允许在存储器分配的末尾增加。 有时一些存储器部分会放置在存储器分配的末尾(我已经看到,对于 AM62x 上的某些 MCU+工程、不确定 AM64x 工程是否会执行相同的操作)。 需要确保增长的存储器段不会覆盖以后出现的存储器段。

    此致、

    Nick

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

    您好、

      是的、在修改器件树中的地址后、 linkcmd 文件相应地进行了更新、目前在使用过程中没有异常问题。 因此、是否可以理解、如果我在两侧对齐地址、即使在 300MHz 下运行、也不会影响 Linux 内核和 RTOS 的运行?

      感谢您的留言。

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

    您好、Wanglili、

    您的理解是正确的。 只要分配对齐、Linux 和 RTOS 就不应覆盖彼此的内存。

    唯一需要注意的是、确保留出足够的 DDR 以使 Linux 系统按预期运行。

    此致、

    Nick