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:cpsw2g和cpsw9g之间的Mac-MAC环回

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1079555/tda4vm-mac-mac-loopback-between-cpsw2g-and-cpsw9g

部件号:TDA4VM

你(们)好

我们有一个定制的J721E板。 CPSW2G,CPSW9G和SGMII PHY之间的连接如结构图所示。

要求将CPSW2G (am65_cpsw_Nuss驱动程序)之间的流量转发到CPSW9G上的SGMII端口。

我已经介绍了以下内容

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/99.8242万/faq-tda4vm-how-to-configure-enet-lld-and-ethfw-cpsw-for-mac-2-mac-connection-for-tda4-and-dra821

问题:

1.是否可以通过修改am65_cpsw_nuss驱动程序和ethfw将数据包从无源CPSW2G数据包转发到CPSW9G?

如果1为真

* am65_cpsw_nuss和虚拟Mac驱动程序是否可以共存? 虚拟Mac与SGMII (CPSW9G)之间的通信不应受到影响。

*我们是否需要将两个MAC (RGMII和SGMII)都设置为转发(ALE)模式?  

* MAC端口是否可以转发到多个端口?

*如何转储ALE表条目以验证我们是否已正确编程?

谢谢!

Vishal

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

    这是对DTS所做的更改,以使cpsw2g不植物性。

    diff --git a/arch/ARM64/boot/DTS/ti/K3-j721e-common-proc-board.DTS b/arch/ARM64/boot/DTS/ti/K3-j721e-common-proc-board.DTS
    索引353.0984万a3..03a4d8c2d 10.0644万
    -- a/arch/ARM64/boot/DTS/ti/k3-j721e-common-proc-board.dts
    ++ b/arch/ARM64/boot/DTS/ti/k3-j721e-common-proc-board.dts
    @@-7.5824万 + 7.5815万 @@
     };
     
     &MCU_cpsw{
    -      状态="已禁用";
           pinctrl-names ="default";
    -      pinctrl-0 =<&MCO_cpsw_PINS_DEFAULT &MCU_MDIO_PINS_DEFAULT>;
    -};

    -&DaVinci MDIO {
    -      phy0:ethernet-phy@0 {
    -              状态="已禁用";
    -              reg =<0>;
    -              ti,rx-internal-delay =<DP8.3867万_RGMIIDCTL_2_00_NS>;
    -              ti,fifo-depth =<DP8.3867万_PHYCR_FIFO_DEPTY_4_B_NIB>;
    -};       
     };
     
     &cpsw_port1{
    -      状态="已禁用";
           PHY模式="RGMII-rxid";
    -      phy-handle =<&phy0>;
    +      固定链接{
    +              速度=<1000>;
    +              全双工;
    +      };
     };
     

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

    更新:ethtool -S eth0

    在cpsw2g中看到这些滴落


    RX_ALIGIN_CODE_ERRORS:1507
    RX_PORT_MASK_DROP:1507

    CPSW2g ALE表

    根@J7-EVM:~# switch-config -d
    K3 cpsw转储版本(1) len(6328)
    Ale table dump ents (64):
    0  :类型:vlan,vid =0,untag_force = 0x3,reg_mcast = 0x0,unreg_mcast = 0x0, MEMBER_LIST = 0x3
    1  :type:ucast,addr = 24:76:25:9a:0e:28,ucast类型= persistant,port_num = 0x0,Secure
    2  :类型:mcAST,vid = 0,addr = ff:ff:ff:ff:ff,mcast_state = f,no super, port_mask = 0x3
    3  :类型:mcAST,addr = 33:33:00:00:00:01,mcast_state = f,no super,port_mask = 0x1
    4  :类型:mcAST,addr = 01:00:5e:00:00:01, mcast_state = f, no super, port_mask = 0x1
    5  :类型:mcast,addr = 33:33:ff:9a:0e:28,mcast_state = f,no super, port_mask = 0x1
    6  :类型:mcAST,addr = 01:80:C2:00:00:00,mcast_state = f,no super,port_mask = 0x1
    7  :类型:mcAST,addr = 01:80:C2:00:00:03,mcast_state = f,no super,port_mask = 0x1
    8  :类型:mcAST,addr = 01:80:C2:00:00:0e,mcast_state = f,no super,port_mask = 0x1
    9  :类型:mcAST,addr =33:33:00:00:00:fb,mcast_state = f,no super, port_mask =0x1
    10 :类型:mcAST,addr = 01:00:5e:00:00:fb,mcast_state = f,no super,port_mask = 0x1

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

    已在CPSW_PN_MAC_CONTINT_REG寄存器和捕获的数据包中启用'RX_CEF_EN'。 附加Wireshark跟踪。

    04:08:24.33.3322万 ARP,以太网(len 6),IPv4 (len 4),请求谁拥有10.1。1.3 告诉10.1。1.100 ,长度28
    04:08:24.33.3558万 ARP,以太网(len 6),IPv4 (len 4),回复11.1。1.3 状态为D8:CB:8a:0e:91:9b (oui未知),长度51
    04:08:25.35.3499万 ARP,以太网(len 6),IPv4 (len 4),请求谁拥有10.1。1.3 告诉10.1。1.100 ,长度28
    04:08:25.35.373万 ARP,以太网(len 6),IPv4 (len 4),回复11.1。1.3 状态为D8:CB:8a:0e:91:9b (oui未知),长度51
    04:08:26.37.7496万 ARP,以太网(len 6),IPv4 (len 4),请求谁拥有10.1。1.3 告诉10.1。1.100 ,长度28
    04:08:26.37.778万 ARP,以太网(len 6),IPv4 (len 4),回复11.1。1.3 状态为D8:CB:8a:0e:91:9b (oui未知),长度51
    04:08:28.33.365万 ARP,以太网(len 6),IPv4 (len 4),请求谁拥有10.1。1.3 告诉10.1。1.100 ,长度28

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

    您好,Vishal,

    首先,我想确保我正确理解您的要求。

    我假设您在同一J721E上有2个外部RGMII端口,一个来自CPSW2G,另一个来自CPSW9G。

    现在,您尝试在MAC到MAC模式下通过外部连接从CPSW2G RGMII端口连接到CPSW9G RGMII端口。

    然后,您要从CPSW2G RGMII端口-> CPSW9G RGMII端口-> CPSW9G SGMII端口发送以太网数据包。

    这是否正确?

    此致,
    斯坦利

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

    您好,Stanley:

    感谢您的回复。

    您的理解是正确的。

    我们已将CPSW2G引脚(MCU_RGMII1_X)直接连接到同一J721E上的CPSW9G RGMII端口(Rgmii1)之一。 CPSW2G为无植物型。

    此致,

    Vishal

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

    在测试CPSW2G之前,您是否修改了EthFW以启用CPSW9G RGMII端口1上的MAC连接? CPSW9G端口必须处于打开状态,才能使CPSW2G和CPSW9G之间的链路处于打开状态。

    此致,
    斯坦利

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

    是的。 我已修改。 附加所有更改。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    diff --git a/utils/ethfw/src/app_ethfw_freertos.c b/utils/ethfw/src/app_ethfw_freertos.c
    index 052c64dd9..5615b3149 100644
    --- a/utils/ethfw/src/app_ethfw_freertos.c
    +++ b/utils/ethfw/src/app_ethfw_freertos.c
    @@ -100,39 +100,13 @@ static EthAppObj gEthAppObj =
    static EthFw_Port gEthAppPorts[] =
    {
    {
    - .portNum = ENET_MAC_PORT_2,
    - .vlanCfg = { .portPri = 0U, .portCfi = 0U, .portVID = 0U },
    - },
    -#if defined(SOC_J721E)
    - /* On J721E EVM to use all 8 ports simultaneously, we use below configuration
    - RGMII Ports - 1,3,4,8. QSGMII ports - 2,5,6,7 */
    - {
    - .portNum = ENET_MAC_PORT_3, /* RGMII */
    - .vlanCfg = { .portPri = 0U, .portCfi = 0U, .portVID = 0U }
    - },
    - {
    - .portNum = ENET_MAC_PORT_4, /* RGMII */
    - .vlanCfg = { .portPri = 0U, .portCfi = 0U, .portVID = 0U }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    diff --git a/apps/app_remoteswitchcfg_server/mcu_2_0/main.c b/apps/app_remoteswitchcfg_server/mcu_2_0/main.c
    index 1b4019c..e3a1eb8 100644
    --- a/apps/app_remoteswitchcfg_server/mcu_2_0/main.c
    +++ b/apps/app_remoteswitchcfg_server/mcu_2_0/main.c
    @@ -257,7 +257,13 @@ static void EthApp_startSwInterVlan(char *recvBuff,
    static void EthApp_startHwInterVlan(char *recvBuff,
    char *sendBuff);
    +static int32_t EthApp_addRemoteCoreStaticCfg(Enet_Handle hEnet,
    + uint32_t coreId,
    + uint32_t flowId);
    +static void EthApp_delRemoteCoreStaticCfg(Enet_Handle hEnet,
    + uint32_t coreId,
    + uint32_t flowId);
    #if defined(FREERTOS)
    static void EthApp_lwipMain(void *a0,
    void *a1);
    @@ -685,6 +691,10 @@ static int32_t EthApp_initEthFw(void)
    ethFwCfg.ports[i].portNum);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    相同的ALE表条目转储...

    ----------------
    条目14 -多播
    ----------------
    端口掩码= 7
    Super = 0
    MCAST忽略位= 0
    MCAST_FWD_State = 0
    entry_type = 1
    multicast_ADDR = 100 5e0000fb
    完成对512个ALE条目的分析

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

    Goodframes TX/RX统计数据,用于9G和2G交换机的相应端口

    root@J7-EVM:~# sh /opt/cpsw9g.sh
    #####P0RX统计信息
    /dev/mem已打开。
    在地址0xffffffb0be0000处映射的内存。
    读取地址0x0C03A000 (0xffffffb0bea000):0x0.0063万

    #####P0TX统计数据
    /dev/mem已打开。
    映射的内存地址为0xffffff915d0000。
    读取地址0x0C03A034 (0xffffff915da034):0x0.0002万E

    #####P1RX统计信息
    /dev/mem已打开。
    在地址0xffffff8a0f0000处映射的内存。
    读取地址0x0C03A200 (0xffffff8a0fa200):0x0.0134万

    #####P1TX统计信息
    /dev/mem已打开。
    在地址0xffffffb77c0000处映射的内存。
    读取地址0x0C03A234 (0xffffffb77ca234):0x0.0003万B

    ####P2RX统计数据
    /dev/mem已打开。
    在地址0xffffff8d91万处映射的内存。
    读取地址0x0C03A400 (0xffffff8d91a400): 0x0.0001万B
    ####P2TX统计数据
    /dev/mem已打开。
    在地址0xffffff8e1万处映射的内存。
    读取地址0x0C03A434 (0xffffff8e01a434):0x0.0047万

    #####cpsw2g######

    #####P0RX统计信息
    /dev/mem已打开。
    在地址0xffffffac8b0000处映射的内存。
    读取地址0x4603A000 (0xffffffac8ba000):0x0.0134万

    #####P0TX统计数据
    /dev/mem已打开。
    在地址0xffffff8e85万处映射的内存。
    读取地址0x4603A034 (0xffffff8e85a034):0x0万

    #####P1RX统计信息
    /dev/mem已打开。
    在地址0xffffff306万处映射的内存。
    读取地址0x4603A200 (0xffffff306a200): 0x0万

    #####P1TX统计信息
    /dev/mem已打开。
    在地址0xffffff91c3万处映射的内存。
    读取地址0x4603A234 (0xffffff91c3a234):0x0.0134万

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

    已尝试100Mbps速度。 它是有效的。 仅1G速度出现问题。

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

    Vishal,  

    我从讨论中看到您和Stanley -到目前为止,您可以看到CPSW2G-MAC与CPSW9G-MAC之间使用RGMII互连的互连。 您测试了它的工作速度为100Mbps,但不是1G。 这可能与ethfw有关,其中需要为互连端口的RGMII配置CPSW9G,然后为外部端口的SGMII配置CPSW9G。  

    由于此线程也被引用:

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

    如果您尝试在CPSW2G和CPSW9G之间进行内部数据包转发,我将关闭此票据,我们可以使用后续线程来跟踪问题。  

    Jian  

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

    您好,Jian:

    我们需要这两种解决方案,即外部和内部数据包转发。

    我相信我们已经将cpsw9g的MAC1配置为RGMII。 我将转储ENET控制寄存器并确认。

    对于1G速度,我们已经达到了在数据包中看到CRC错误的程度,当我们将RX-CLK上的电阻从22欧姆增加到33欧姆时,这些错误就会消失。 但cpsw2g主机端口仍无法接收数据包,因为ALE由于RX ALIGN EROR/端口掩码错误而丢弃数据包。

    一个奇怪的事情是如果我在CPSW_PN_MAC_CONTINT_REG中启用'RX_CEF_EN',那么我就可以运行流量了。

    此致,

    Vishal

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

    Vishal,  

    好的,将保持此讨论活跃。  

    RX_CEF_EN似乎允许将错误帧 复制到内存。因此您可能需要检查数据是否正确。  

    返回调试,您能否确认时钟引脚是如何 相互连接的? 如果电阻器的变化有所 不同,则问题可能与交流特性有关。  

    Jian

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

    即,它们是否已连接:

    TXD[3:0]-- RXD[3:0]

    TX_CLK -- RX_CLK

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

    从今天的讨论中,决定使用ethfw体系结构的内部数据包转发。 因此,不使用仅MCU电源模式。相反,设备将仅用作"关闭","活动","睡眠"。 因此不再需要外部数据包转发。  

    此外,JIAN还查找了内部延迟调整,CPSW2g和CPSW9g均不支持内部延迟。  

    此致

    Jian