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.

[参考译文] AM2434:Enet UDMA 描述符对齐

Guru**** 2905440 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1577623/am2434-enet-udma-descriptors-alignment

器件型号:AM2434
主题:SysConfig 中讨论的其他器件

您好:

在带有 AM243x MCU+ SDK 11.01.00 的 AM243X-LP 上、我最近尝试将 ICSS 上的网络协议栈从 EMAC 切换到开关模式。

但是、在中EnetUdma_initTxFreeDescQ (enet_udma_priv.c)、我遇到了“[enet UDMA Error] Tx DMA 描述符内存分配失败!“ 置为有效。 我进行了一些调试、在EnetMem_allocDmaDesc出 ENET_UTILS_IS_ALIGNED队列中、DMA 描述符失败宏、因此函数会将其返回到队列并返回 null。 此空值是上述断言的原因。

从检查传递的对齐EnetUdma_initTxFreeDescQUDMA_CACHELINE_ALIGNMENT (=128)。 然而gDmaDescMemInfoArray,dmaDescFreeQ在我有限的理解是底层内存(或至少是相关的),在 SYSCFG 生成的ti_enet_config.c有对齐ENETDMA_CACHELINE_ALIGNMENT (=32).

当我从 SYSCFG 编译中排除“ti_enet_config.c",“,并、并将的对齐方式gDmaDescMemArray and gDmaDescMemInfoArray从更ENETDMA_CACHELINE_ALIGNMENT改为UDMA_CACHELINE_ALIGNMENT我们的应用程序再次开始工作时。

我不会假装我理解所有这些诚实,这些只是我的观察:) 我附加了开关模式 syscfg 文件(注意排除的 enet_config 文件)。 为了清楚起见、我现在可以使用上述更改来处理该问题、但我认为我应该报告此问题。

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

    e2e.ti.com/.../0753.example.syscfg.txt

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

    您好、

    DMA 描述符在 ti_enet_config.c 中对齐、同时使用 EnetMem_allocDmaDesc 在 enet_uma.c 中分配 desc 队列 。 您是否对模板文件进行了任何更改?  gDmaDescMemInfoArray 的对齐方式应为 UDMA_CACHELINE_ALIGNO。  

    能否详细介绍一下您尝试使用的示例? 您可以分享的任何其他详细信息将有助于分析这种情况。

    此致、
    Teja。

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

    Heya Teja,

    我不知道 SDK 中的模板文件有任何变化。 我 在 11.00.00 SDK 副本中搜索了 gDmaDescMemInfoArray 符号、并在两个模板中找到了该符号:
    1) source\networking\enet\core\sysconfig\networking\.meta\enet_cpsw\templates\enet_app_memutils_cfg_udma.c.xdt
    它具有 UDMA_CACHELINE_ALIGNATION 模式

    2) source\networking\enet\core\sysconfig\networking\.meta\enet_icss\templates\enet_app_memutils_cfg.c.xdt
    它具有 ENETDMA_CACHELINE_ALIGNATION

    我们正在使用 ICSS、所以这对我来说似乎很有希望成为可能的原因吗? 我们已经在这里移动了过去的例子,我不一定有时间尝试用一个例子来重现这一点,但我很乐意提供更多的背景。 我认为在这种情况下、SYSCFG 只是生成了错误的对齐。

    谢谢、
    Vaclav

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

    尊敬的 Vaclav:

    理想情况下、应使用  UDMA_CACHELINE_ALIZATION 进行对齐。 我将在内部检查是否有任何原因使其 ENETDMA_CACHELINE_ALIGNATION、该操作现在会导致问题。 请在 2 天内收到回复、以供确认、并推荐后续方式。  

    谢谢。此致、
    Teja。

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

    好的、感谢您的帮助。 知道需要 UDMA_就足以满足我们的需求。