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.

[参考译文] RTOS/66AK2G12:如何将.far:NDK_PACKETMEM 从 L2SRAM 移到 DDR3

Guru**** 2535650 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/795969/rtos-66ak2g12-how-to-move-far-ndk_packetmem-from-l2sram-to-ddr3

器件型号:66AK2G12
主题中讨论的其他器件:EVMK2G

工具/软件:TI-RTOS

可能涉及的人员、

我想将 NDK 帧缓冲器移到 DDR3、以便可以使用更大的缓冲器。 我使用来自 pdk_k2g_1_0_12 (NDK 3.40.1.01)和 pdk_k2g_1_0_10 (NDK 2.26.0.08)的 NIMU_BasicExample_evmK2G_c66xExampleProject (以及等效的 ARM)在 K2GEVM 上测试了这一点。 我将.far:NDK_PACKETMEM 从 L2SRAM 移到 DDR3的方式也是
(1)将行的 L2SRAM 更改为 DDR3
Program.sectMap[".far:NDK_PACKETMEM"]={loadSegment:"L2SRAM"、loadAlign:128};
在 HelloWorld.cfg 中、
或者(2)创建一个包含以下内容的空链接器命令文件:
部分

.far:NDK_PACKETMEM > DDR3

这两种方法都将成功编译、并且*。map 文件中的.far:NDK_PACKETMEM 部分确实会从 L2SRAM 移至 DDR3。 但是、一旦我运行该程序、DDR3版本将不起作用。 NetworkOpen()和 NetworkIPAddr()中由 NC_NetStart()调用的打印确实显示了 IP 地址。 但我无法 ping 通 IP 或在 UDP 端口7上获取回波。

我还尝试将.far:NDK_PACKETMEM 以及其他与 NDK 相关的部分从 L2SRAM 移到 DDR3、但没有尝试使程序正常运行。

我查看了 NDK 用户指南和参考指南、但没有发现与 DDR3限制相关的任何特殊内容。

我搜索了 E2E 论坛。 将.far:NDK_PACKETMEM 从 L2SRAM 移到 DDR3的所有成功尝试均不使用 K2G。 他们的工作方式似乎没有什么特别之处。

请您尝试重现此问题、并告诉我正确的方法是什么?

谢谢、
是的

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

    您是否尝试过以下方法:
    e2e.ti.com/.../222673

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

    Yordan、您好!

    我可以尝试这种方法。 但是、对于.far:NDK_PACKETMEM、没有任何方法可以使用堆栈存储器? 我希望将其从 L2SRAM 移动到 DDR3的速度会降低。 如果可能 、我希望将.far:NDK_PACKETMEM 保持在堆栈中。

    您是否能够重现我报告的问题?

    谢谢、
    是的

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

    您是否有时间重现此问题? 我已经尝试过您的方法、但它不起作用。 我在*。map 文件中检查了.far:NDK_PACKETMEM 部分、以确保它确实从 L2SRAM 移到 DDR3。

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

    很抱歉耽误你的时间。 Yordan 在复活节假期不在办公室-我将在我们的时间将其重新分配给另一组专家。
    Michael S 升级了这条线程、我们希望能够在未来几天内帮助解决这一问题。

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

    我尝试了最初的 Nimu_BasicExample_evmK2G_c66xExampleProject、它对我来说很有用。 然后我移动了
    80300000 80300000 00052b00 00000000 rw-.far:NDK_PACKETMEM
    它失败了。 我正在调试它。

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢您 Mukul 和 Eric。 我们期待着这个问题的原因/解决方案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    YW、

    此问题的更新:
    我查看了 p_desc->pDataBuffer 的 nimu_rx_pkt_cb ()文件内的 nimu_eth.c 文件,这是一个有效的 DDR3地址,但内容为空。
    2.我追溯到 EMAC_drv_v1.c 中的 EMAC_POLL_pkt_v1()中,pHostDesc->buffPtr 为0x103x_xxxx,它不是有效地址。 此描述符来自 EMAC_qmss_qpop()。

    初始化 QMSS 区域时、似乎有更多的设置可以将描述符放在 DDR 存储器中、而不是任何可用的存储器中。

    我将向您提供最新信息。

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

    尊敬的 Eric:

    非常感谢迄今所作的努力。 您是否找到了修复 NDK 错误的其他步骤?

    谢谢、
    是的

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

    抱歉、我们仍在调试它。

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

    您好!

    我发现了这个问题、在 EMAC 驱动程序源代码:pdk_k2g_1_0_xx\packages/ti\drv\emac\src\v1\emac_cpi_qmss_iface.c 中、有一个函数 EMac_convert_coreLocal2GlobalAddr 用于将本地 L2转换为全局 L2、此代码也没有检查地址范围(例如0x30_DDR_xxxx)、并将地址转换为0x30_xxxx。

    请更新此函数(请参阅随附的)并重建 EMAC 库、当您将 NDK Rx 缓冲器放置在 DDR3内部时、该函数应该起作用(正如您之前在.cfg 文件中所做的那样)。 请告诉我它是否适用于您的一方。 链接的库为 :./lib/k2g/c66/release/ti.drv.emac.ae66

    此致、Eric

    e2e.ti.com/.../emac_5F00_cppi_5F00_qmss_5F00_iface.c

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

    我刚刚在我们的一个应用程序上尝试过它、它工作正常。 非常感谢您的观看。 真的很感谢!

    非常感谢、
    是的