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:如何在没有 UDMA 的情况下实现集线器功能?

Guru**** 2442090 points
Other Parts Discussed in Thread: AM2434

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1259887/am2434-how-to-implement-hub-functionlity-without-udma

器件型号:AM2434

您好!

我在尝试将 CPSW 器件作为集线器打开时遇到问题。 在 SDK Cpsw_openInternal 函数内的 cpsw.c 文件中、似乎需要 uDMA 连接。 我正在寻求有关如何解决这一要求的帮助。

为了理解上下文、我参考了 TI E2E 支持论坛上标题为"AM2434 -仅 ARP 广播数据包转发"的讨论线程(链接: https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1247183/am2434-only-arp-broadcast-packets-forwarding)

在本线程的查询中、我询问是否有必要实现 UDMA 连接、以便实现将 CPSW 配置为类似集线器的器件所需的功能。 Venkata Susheel Voora 回应称,只有 R5内核接收数据包时才需要 UDMA 路径,交换机功能仅由 CPSW 硬件执行。

我将提供调试输出以作进一步说明:"MDIO_OPEN: MDIO Manual_Mode enabled Cpsw_openInternal: src open config is NULL Cpsw_closeInternal: asserting @ Line: 1026 in C:/ti/mcu_plus_sdk_am243x_08_06_00_43/source/networking/enet/core sv/V1/cpsw.c: hCpsw>hRxRdFlow!= NULL"

对于在这种情况下如何绕过 uDMA 连接要求、如果有任何指导或见解、我将不胜感激。

感谢您的支持。

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

    尊敬的 Christian:

    我们的以太网(CPSW)专家是 OOO。 请预计响应会延迟。 感谢您的耐心等待

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    在我查询线程时、我询问是否需要实施 uDMA 连接才能实现将 CPSW 配置为类似于集线器的设备所需的功能。 Venkata Susheel Voora 回应称,只有 R5内核接收数据包时才需要 UDMA 路径,交换机功能仅由 CPSW 硬件执行。

    尊敬的 Christian:

    交换功能、即从端口到端口转发数据包独立于 R5F 内核(因此无需 uDMA)。

    当 CPU (r5f)需要消耗通过 CPSW 传入的数据包时、uDMA 用于从 CPSW 硬件 FIFO 到 R5F 存储器提取数据包、因此必须使用 uDMA。 这似乎就是您的电流要求。 因此您无法避免使用 uDMA。

    我提供调试输出以进一步说明:"MDIO_OPEN:MDIO Manual_Mode ENABLED Cpsw_openInternal:csw:dma open config 为 NULL Cpsw_closeInternal:Assertation @ Line:1026 in C:/ti/mcu_plus_sdk_am243x_08_06_00_43/source/networking/enet/core per/Vcpsw.c: hCpsw->NULLow-Flow_RsluFow] src

    在 SDK 示例中是否会出现此问题、或者您是否对 DMA 配置进行了更改?

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

    尊敬的 Nilabh Anand:

    不需要来自 CPSW 的数据包、因为我们仅将 CPSW 用作集线器。 我们不想使用 DMA。

    当 CPU (r5f)需要消耗通过 CPSW 传入的数据包时、uDMA 用于从 CPSW 硬件 FIFO 到 R5F 内存获取数据包、因此必须使用 uDMA。 这似乎就是您的电流要求。 因此您无法避免使用 uDMA。

    在 SDK 文件 mcu_plus_sdk_am243x_08_06_00_43/source/networking/enet/core/dma per/V1/cpsw.c 中、尤其是在Cpsw_openInternal926行的函数中、需要注意 src 配置。 以下是相关的代码片段:

    /*打开 DMA */
    如果(STATUS = ENET_SOK)
    {
       if (NULL!= cfg->dmaCfg)
       {
           /*打开 CPSW NAVSS 实例类型的 UDMA */
           hCpsw->hDma = EnetHostPortDma_open (hPer、cfg->dmaCfg、&cfg->resCfg);
           如果(NULL == hCpsw->hDma)
           {
               ENETTRACE_ERR ("CPSW:无法打开 CPSW DMA\r\n ");
               状态= ENET_EFAIL;
           }
       }
       否则
       {
           ENETTRACE_ERR ("CPSW:DMA 打开配置为 NULL\r\n ");
           状态= ENET_EINVALIDPARAMS;
       }

    此代码块强调了必须有一个已置位的 DMA 配置才能成功打开 DMA。 如果cfg->dmaCfg设置为 NULL、则会导致消息"CPSW:DMA open config is NULL"的错误和 ENET_EINVALIDPARAMS 的状态。 因此、请确保提供有效的 DMA 配置、以在这种情况下启用适当的 DMA 功能。

    感谢您的支持。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此代码块强调了必须具备适当的 DMA 配置才能成功打开 DMA。 如果cfg->dmaCfg设置为 NULL、则会导致消息"CPSW:DMA open config is NULL"的错误和 ENET_EINVALIDPARAMS 的状态。 因此、请确保提供有效的 DMA 配置、以便在这种情况下启用适当的 DMA 功能。

    是的,这是正确的基督徒,让我知道,如果你有任何其他疑问。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不需要来自 CPSW 的数据包,因为我们只使用 CPSW 作为集线器。 我们不想使用 DMA。

    要在没有 DMA 的情况下操作 CPSW、我需要执行什么操作?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    需要做些什么才能在没有 DMA 的情况下操作 CPSW?

    如果不使用 uDMA、则无法使用 CPSW、因为它是 CPU 可以访问数据包的唯一接口。