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.

[参考译文] TDA4VM:通过DMA通道在cpsw9g和cpsw2g之间转发数据包

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1089146/tda4vm-packet-forwarding-between-cpsw9g-and-cpsw2g-via-dma-channel

部件号:TDA4VM

大家好,

在我们的定制主板中,cpsw2g是无植物的,cpsw9g具有PHY (SGMII)。 我们要在cpsw2g和cpsw9g之间创建DMA通道,以便在它们之间转发数据包。

我们尝试了外部转发(https://e2e.ti.com/support/processors-group/processors/f/processors-forum/107.9555万/tda4vm-mac-mac-loopback-between-cpsw2g-and-cpsw9g/4028883?tisearch=e2e-sitesearch&keymatch=%20user%3A509584#4028883)402.8883万)。50.9584万。</s>402.8883万 我们面临1G速度问题。

我们正在使用8.1 SDK。

我想知道你们是否有文档或示例代码来创建cpsw2g和cpsw9g之间的DMA通道。

是否可以更改am65-cpsw-nuss Linux驱动程序以在cpsw2g和ethfw之间创建DMA通道?

我们可以使用/修改任何其他演示示示例以满足我们的要求?

此致,

Vishal

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

    Vishal,  

    我关闭了上面提到的旧线程。 让我们使用此线程来跟踪:

     1)。 将ethfw配置为仅在RGMII-PHY中操作1个MAC,在带外部PHY的SGMII中操作另一个MAC

     2)。CPSW2G和CPSW9G之间的数据包有效负载转发  

    1),我会将线程重新分配给ethfw团队以提供帮助。  

    2):目前没有此类功能的示例或现有软件,因此您必须自行编写。 我可以想到两种方法:

       A)。 编写一个Linux程序,调用CPSW2G MAC接口和CPSW9G MAC接口的两个插槽,最初在CPSW2G的RX缓冲区与CPSW9G的TX缓冲区之间执行粗暴的memcpy,之后用UDMA函数替换memcpy。 您可以参考内核树中的PCIe端点驱动程序代码,如中所述:

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-jacinto7/08_02_00_03/exports/docs/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_End_Point.html

    获取有关如何调用UDMA驱动程序的示例。请注意,您还需要将Linux地址转换为UDMA可以使用的物理地址。  

      B)。 进入调用UDMA-p的ethfw,指向CPSW2G的RX有效负载缓冲区,将其用于CPSW9G传输。 我不确定是否有CPSW驱动程序的回调函数来标记UDMA事件,触发数据包转发需要这些函数。 鉴于我们在Linux中只看到虚拟MAC,这比做起来容易得多。  

    因此,根据实现功能的关键程度,a)可能足够(?) 也就是说,如果这只是现有客户主板的一种变通办法,在下一个主板修订版中仍然可以为CPSW2G添加外部PHY,则继续执行b)。这将是太多的软件工作。  

    此致

    Jian

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

    您好,Jian:

    感谢您的回复。 我将研究你提出的建议。

    在搜索解决方案时,我遇到了此链接

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/ethfw/docs/user_guide/ethfw_c_ug_top.html#ethfw_maconly

    有一节介绍在主R5上运行的"AUTOSAR客户端"以及通过UDMA与ethfw进行数据包交换。

    我们有兴趣在MCU1_0上运行此程序,并且在主R5上有具有ethfw的UDMA通道用于数据包交换。

    是否可以实施此操作?

    此致,

    Vishal

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

    Vishal,  

    这听起来很接近您的需求。但我不熟悉ethfw,我已经将该线程分配给ethfw团队,并将向他们简要介绍您的使用案例。  

    Jian

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

    Vishal,

    对于内部数据包转发,我假设您指的是SGMII -> CPSW9G -> UDMA -> MCU。 我认为在这条道路上不需要CPSW2G。

    在这种情况下,您应该遵循CPSW9G EthFW虚拟客户端/服务器模型。

    在MCU端,它将运行CPSW9G虚拟客户端驱动程序,UDMA将负责将数据包转发到MCU R5虚拟客户端驱动程序。

    EthFW已支持此功能。

    此致,
    斯坦利   

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

    在今天的通话中,有一个问题涉及如何将MCU2_1上的MCAL Eth Virtual Mac示例应用程序移植到MCU1_0。

    有关详细信息,请参阅以下文档。

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_02_00_05/exports/docs/mcusw/mcal_drv/docs/drv_docs/mcusw_c_ug_top.html#mcusw_c_ug_support_mcal_other_cores

    在EthFW方面,请将gEthApp_autosarVirtPortCfg[].remoteCoreId更改为IPC_MCU1_0。

    此致,
    斯坦利