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.

[参考译文] PROCESSOR-SDK-J784S4:有关在 CPSW9G 上使用 SGMII 的 PHY 的说明

Guru**** 2568565 points
Other Parts Discussed in Thread: DP83869HM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1539739/processor-sdk-j784s4-clarification-on-phys-usage-with-sgmii-on-cpsw9g

部件号:PROCESSOR-SDK-J784S4
主题中讨论的其他器件:DP83869DP83869HM

工具/软件:

您好、
我当前使用的是 SDK 09.02.00.05

我的 dts 文件如下所示

&SERDES_wiz2{
状态=“正常“;
};

{&S serdes2}
状态=“正常“;
#address-cells =<1>;
#size-cells =<0>;
serdes2_sgmii_link:PHY@0{
reg =<0>;//通道索引
CDN、num-lanes =<1>;
CDN、phy-type = ;
#phy-cells =<0>;
RESET =<&SERDES_wiz2 1>;
};
};

&main_cpsw0{
状态=“正常“;

};

&main_cpsw0_mdio{
状态=“正常“;
pinctrl-names =“default";“;
pinctrl-0 =<&WTX_main_cpsw9x1_pins_default>;
pinctrl-1 =<&WTX_MAIN_PMX_gpio_vddshv20_pins_default>;  

main_phy3:Ethernet-phy@3{
reg =<3>;// DP83869 地址
TI、工作模式= ;
};
};

&main_cpsw0_port5{
状态=“正常“;
PHY-MODE =“SGMII";“;
phy-handle =<&main_phy3>;
Phys =<&cpsw0_phy_gmii_sel 5>、<&serdes2_sgmii_link>;
PHY-NAMES =“MAC",“,"SerDes、"SerDes "“ ";“;
};

如果我在 J784S4 上使用 SGMII 模式、是否必须在 DT 节点中指定 phys =<&cpsw0_phy_gmii_sel X>且 phy-names =“mac"?“?
或者、只要设置了 phy-mode =“SGMII",“,它、它是否仍然可以在没有这种模式的情况下工作?

提前感谢

此致、
B. Apuroop Kumar

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

    尊敬的 Apuroop:

    如果我在 J784S4 上使用 SGMII 模式、是否必须在 DT 节点中指定 phys =<&cpsw0_phy_gmii_sel X>且 phy-names =“mac"?“?

    它们是必需的。

    此致、
    Tanmay

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

    您好、Tanmay、

    感谢您的澄清。 我还需要澄清 DP83869 PHY 桥接器 (J784S4) 后面的 ADIN1100 DT 节点放置。

    以太网拓扑如下所示:


    cpsw9g(端口 5)<--> SGMII <--> DP83869(地址 3)<--> RGMII <--> ADIN1100(地址 0)

    在当前的 DTS 设置中、我们将 ADIN1100 定义为 A 子节点 在 DP83869 MDIO 条目下、如下所示:

    &main_cpsw0_mdio{
    状态=“正常“;

    main_phy3:Ethernet-phy@3{
    reg =<3>;// DP83869
    TI、工作模式= ;

    adin1100:Ethernet-phy@0{
    REG =<0>;// ADIN1100、在 DP83869 后面
    PHY-MODE =“RGMIG";“;
    };
    };
    };

    您能否确认:

    像这样将 ADIN1100 定义为 DP83869 内的子节点是否有效?

    或者 ADIN1100 应该是下面的一个单独的同级节点&main_cpsw0_mdio吗?

    感谢您对此桥接设置的正确绑定所做的澄清。

    此致、

    B.Apuroop Kumar

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

    尊敬的 Apuroop:

    很抱歉耽误响应。

    将 ADIN1100 定义为 DP83869 内的子节点是否有效?

    这取决于您为 ADIN PHY 提供的驱动程序级别支持类型。 如果有可用的 phy 驱动程序、则应将其作为同级节点添加到 dp83869。

    如果将其添加为 dp83869 的子节点、则 dp83869 驱动程序应负责配置 ADIN phy。

    如果不需要对 ADIN PHY 进行配置、也可以跳过将其全部添加在一起。

    此致、
    Tanmay

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

    您好、Tanmay、

    作为我先前查询的延续、我们还面临在此设置中未出现链接的问题:

    当前 DTS 配置:

    • DP83869 通过进行配置 ti,op-mode = <DP83869_RGMII_SGMII_BRIDGE>

    • fixed-link设置为 10 Mbps 全双工

    • &SERDES_wiz2{
      状态=“正常“;
      };

      {&S serdes2}
      状态=“正常“;
      #address-cells =<1>;
      #size-cells =<0>;
      serdes2_sgmii_link:PHY@0{
      reg =<0>;//通道索引
      CDN、num-lanes =<1>;
      CDN、phy-type = ;
      #phy-cells =<0>;
      RESET =<&SERDES_wiz2 1>;
      };
      };
      &main_cpsw0{
      状态=“正常“;
      };

      &main_cpsw0_mdio{
      状态=“正常“;
      pinctrl-names =“default";“;
      pinctrl-0 =<&main_cpsw9x1_mdio_pins_default>;
      pinctrl-1 =<&MAIN_PMX_gpio_vddshv20_pins_default>;  

      /* DP83869 桥接 PHY — 连接到 CPSW SGMII 端口*/
      bridge_phy:Ethernet-phy@3{
      reg =<3>;// DP83869 地址
      TI、工作模式= ;
      固定链接{
      速度=<10>;
      全双工;
      };
      };

      /* ADIN1100 — 通过 RGMII 连接到 DP83869 桥接器*/
      adin1100:Ethernet-phy@0{
      REG =<0>;// ADIN1100、在 DP83869 后面
      PHY-MODE =“RGMIG";“;
      };
      };

      &main_cpsw0_port5{
      状态=“正常“;
      PHY-MODE =“SGMII";“;
      phy-handle =<&bridge_phy>;
      Phys =<&cpsw0_phy_gmii_sel 5>、<&serdes2_sgmii_link>;
      PHY-NAMES =“MAC",“,"SerDes、"SerDes "“ ";“;
      };

    在 MDIO 上检测到两个 PHY、但 CPSW 端口显示“无链路“。

    此致、
    B. Apuroop Kumar

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

    您好、

    抱歉耽误您的时间、问题是否仍然存在?

    如果没有 RGMII_SGMII_BRIDGE 模式、您是否能够测试 器件、或者仅在桥接模式下测试器件。

    我们尚未在 EVM 上测试桥接模式。 我们可能还必须在这里包括 phy 团队。

    此致、
    Tanmay

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

    您好、Tanmay、


    我们的设置中、我们需要 DP83869HM 在 SGMII 转 RGMII 桥接模式下运行。Linux 驱动程序ti,op-mode = <DP83869_RGMII_SGMII_BRIDGE>看起来可以对进行编程 相反方向 (RGMII 转 SGMII)、因此我移除了 ti,op-mode.

    From the datasheet, I see that the bridge can be set through strap pins (e.g. MIRROR_EN). I want to confirm , is it possible to configure this bridge direction through registers as well, or is it only strap-configurable


    此致、
    B. Apuroop Kumar

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

    您好、

    让我将此转发给 phy 团队、看看是否需要进行更多更改。

    此致、
    Tanmay

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

    尊敬的 Apuroop:  

    RGMII-SGMII 桥接器也可通过寄存器配置进行编程。  
    请按照以下屏幕截图进行操作:

    但是、请写入以下内容、而不是将 0x0043 写入寄存器 1DFh:
    将 0x0003 写入寄存器 1DFh。

    此致、
    j

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

    您好、

    我修改了驱动程序、将 0x0003 写入寄存器 1DFh、而不是将 0x0043.becow 写入输出:
    root@j784s4-evm:~# phytool write eth1/0x03/0x0D 0x001F
    Root@j784s4-EVM:~# phytool write eth1/0x03/0x0E 0x01DF
    Root@j784s4-EVM:~# phytool write eth1/0x03/0x0D 0x401F
    root@j784s4-evm:~# phytool read eth1/0x03/0x0E
    0x0003
    下面是我当前的 dts 文件设置:

    &SERDES_ln_ctrl{
    空闲状态= ;
    };

    &SERDES_wiz2{
    状态=“正常“;
    };

    {&S serdes2}
    状态=“正常“;
    #address-cells =<1>;
    #size-cells =<0>;
    serdes2_sgmii_link:PHY@0{
    reg =<0>;//通道索引
    CDN、num-lanes =<1>;
    CDN、phy-type = ;
    #phy-cells =<0>;
    RESET =<&SERDES_wiz2 1>;
    };
    };


    &main_cpsw0{
    状态=“正常“;
    };

    &main_cpsw0_mdio{
    状态=“正常“;
    pinctrl-names =“default";“;
    pinctrl-0 =<&main_cpsw9x1_mdio_pins_default>;
    pinctrl-1 =<&MAIN_PMX_gpio_vddshv20_pins_default>;// ADIN1100 不需要?

    /* DP83869 桥接 PHY — 连接到 CPSW SGMII 端口*/
    bridge_phy:Ethernet-phy@3{
    reg =<3>;// DP83869 地址
    TI、工作模式= ;
    TX、FIFO 深度= ;
    RX、FIFO 深度= ;
    TI、最小输出阻抗;
    };

    /* ADIN1100 — 通过 RGMII 连接到 DP83869 桥接器*/
    adin1100:Ethernet-phy@0{
    REG =<0>;// ADIN1100、在 DP83869 后面
    PHY-MODE =“rgmii-rxid";“;
    };
    };

    &main_cpsw0_port5{
    状态=“正常“;
    PHY-MODE =“SGMII";“;
    phy-handle =<&bridge_phy>;
    Phys =<&cpsw0_phy_gmii_sel 5>、<&serdes2_sgmii_link>;
    PHY-NAMES =“MAC",“,"SerDes、"SerDes "“ ";“;
    };

    &SERDES_REFCLK{
    时钟频率=<1000000>;
    };

    但链路没有建立。
    ethtool eth1显示“Link detected:no“(检测到链路:否)和速度/双工未知。

    root@j784s4-evm:~# ethtool eth1
    eth1 的设置:
    支持的端口:[ TP mii ]
    支持的链路模式:10BaseT/Half 10baseT/Full
    100BaseT/Half 100BaseT/Full
    1000BaseT/Full
    1000baseX/全
    支持的暂停帧使用:对称
    支持自动协商:可以
    支持的 FEC 模式:未报告
    广播的链路模式:10BaseT/Half 10baseT/Full
    100BaseT/Half 100BaseT/Full
    1000BaseT/Full
    1000baseX/全
    广播的暂停帧使用:对称
    广播的自动协商:是
    广播 FEC 模式:未报告
    速度:未知!
    双工:未知! (255)
    自动协商:打开
    主从配置:强制从器件
    主从状态:未知
    端口:双绞线
    PHYAD:3.
    收发器:外部
    MDI-X:未知
    支持唤醒:目录
    唤醒:D
    SecureOn 密码:00:00:00:00:00:00
    当前消息级别:0x000020f7 (8439)
    如果 rx_err TX_err 硬件、则 DRV 探头链路断开
    检测到链路:否
    root@j784s4-evm:~# ip a
    1:低: MTU 65536 qdisc noqueue 状态未知组默认 qlen 1000
    链接/回送 00:00:00:00:00:00 brd 00:00:00:00:00:00:00
    INET 127.0.0.1/8 范围主机低
    valid_lft forever preferred_lft forever
    inet6 ::1/128 范围主机
    valid_lft forever preferred_lft forever
    2:eth0: MTU 1500 qdisc noop 状态关闭组默认 qlen 1000
    链路/醚 04:25:e8:B7:09:F4 brd ff:ff:ff:ff:ff:ff:ff:ff:ff
    3:eth1: MTU 1500 qdisc mq 状态关闭组默认 qlen 1000
    链路/醚 12:E7:25:98:b0:9d brd ff:ff:ff:ff:ff:ff:ff:ff
    root@j784s4-evm:~#

    SGMII-RGMII 桥接模式可能需要哪些其他配置?

    此致、
    B.Apuroop Kumar



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

    尊敬的 Apuroop:  

    上述寄存器配置就是您所需要的。  
    您能否检查寄存器 01h 来看看这个值是多少? 由于 PHY 处于桥接模式、因此我们不希望 PHY 必须报告速度和双工信息。  

    此致、
    j

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

    尊敬的 Apuroop:  

    1h 的寄存器内容是什么? 这是为了查看链路状态位是否正确获取到驱动器上。  
    当前设备树应该没有问题、869 驱动程序不必支持下游 PHY。 由于与 Linux SoC 有硬件连接、ADIN1100 仍应作为单独的 eth 端口工作。  

    此致、
    j


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

    您好、

    我检查了两个 PHY 上的 BMSR(寄存器 0x01)值:

    DP83869 @地址 3→0x7949
    设置的位:0、3、6、8、11 12、13、14
    ->功能包括 10/100 半双工/全双工和扩展状态、但链路状态为 0。

    ADIN1100 @地址 0→0x1009
    设置的位:0、3、12
    ->仅广播 10MB 全双工、链路状态= 0。

    根据我的理解、DP83869 仍在报告标准的 10/100/1G 铜缆功能、而 ADIN1100 仅广播 10MB 全双工(符合 10BASE-T1L 的预期)。


    在 SGMII–RGMII 桥接模式下、DP83869 的 BMSR 是否仍应反映其传统铜缆功能、或者是否应透明地通过下游 PHY (ADIN1100) 状态?

    由于两个 PHY 都报告链路断开、因此在桥接至 10BASE-T1L PHY(如 ADIN1100)时、DP83869 的寄存器 0x01 的正确预期是什么?

    Linux CPSW 是否需要直接绑定到 ADIN1100 的 MDIO 节点(DP83869 仅用作硬件桥接器)、或者驱动程序是否应该解释 DP83869 的 BMSR?

    这将帮助我了解是否应该调整器件树/驱动程序设置、以确保 CPSW 正在监控真正的 PHY (ADIN1100) 而不是桥接器。

    谢谢、
    Apuroop

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

    尊敬的 Apuroop:  


    在 SGMII–RGMII 桥接模式下、DP83869 的 BMSR 是否仍应反映其传统铜缆功能、或者是否应透明地传递下游 PHY (ADIN1100) 状态?

    DP83869 BMSR 反映了其传统的铜缆功能。  

    由于两个 PHY 都报告链路断开、因此在桥接至 10BASE-T1L PHY(如 ADIN1100)时、DP83869 的寄存器 0x01 的正确预期是什么?

    DP83869 寄存器应报告链路断开、因为寄存器 0x01 反映 DP83869 的 MDI 链路、但 DP83869 处于桥接模式、因此预计没有链路。 请单独查询 ADIN1100 为什么此链接状态为关闭、因为链接状态通常由电缆连接决定。  

    ] Linux CPSW 是否需要直接绑定到 ADIN1100 的 MDIO 节点(DP83869 仅用作硬件桥接器)、或者驱动程序是否需要解释 DP83869 的 BMSR?

    Linux CPSW 需要直接绑定到 ADIN1100 MDIO 节点。  

    由于 DP83869 仅用作桥接器、因此无需将桥接器作为单独的 PHY 节点进行监测。  

    我正在询问相关团队应如何在 Linux CPSW 中设置网桥、因此我们收到此信息后会向您更新。  

    此致、
    j

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

    尊敬的 J:

    是否有关于桥接器设置的信息?

    此致、
    B. Apuroop Kumar

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

    尊敬的 Apuroop:  

    我被告知在 DTS 中添加固定链路配置、以便始终强制在 DP83869 上建立链路、使 Linux 认为 DP83869 节点上有一个链路。  

    此致、
    j

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

    尊敬的 J:

    &main_cpsw0_port5{
    状态=“正常“;
    PHY-MODE =“SGMII";“;
    Phys =<&cpsw0_phy_gmii_sel 5>、<&serdes2_sgmii_link>;
    PHY-NAMES =“MAC",“,"SerDes、"SerDes "“ ";“;

    固定链接{
    速度=<10>;
    全双工;
    };
    };

    更改上述 DTS 后、输出如下:


    root@j784s4-evm:/opt/edgeai-gst-apps # dmesg | grep cpsw
    [1.343827] am65-cpsw-nuss 46000000.ethernet:初始化 am65 cpsw Nuss 版本 0x6BA02102、cpsw 版本 0x6BA82102 端口:2 quirks:00000000
    [ 1.356686] am65-cpsw-Nuss 460000.ethernet: initialized cpsw ale version 1.4
    [ 1.363894] am65-cpsw-Nuss 460000.Ethernet: ALE Table Size 64
    [ 1.374206] am65-cpsw-Nuss 46000000.Ethernet:CPt ver 0x4e8a010b、freq:500000000、add_val:1 pps:1
    [ 1.463451] am65-cpsw-nuss c000000.ethernet:初始化 am65 cpsw Nuss 版本 0x6BA03102、cpsw 版本 0x6BA82902 端口:9 quirks:00000000
    [1.887829] am65-cpsw-nuss 460000.ethernet:初始化 am65 cpsw Nuss 版本 0x6BA02102、cpsw 版本 0x6BA82102 端口:2 quirks:00000000
    [ 1.900695] am65-cpsw-Nuss 460000.ethernet: initialized cpsw ale version 1.4
    [ 1.907903] am65-cpsw-Nuss 46000000.Ethernet: ALE Table Size 64
    [1.918230] am65-cpsw-Nuss 46000000.Ethernet:CPt ver 0x4e8a010b、freq:500000000、add_val:1 pps:1
    [1.928279] am65-cpsw-Nuss 460000.ethernet:设置新的 flow-id-base 48
    [ 2.015299] am65-cpsw-nuss c000000.ethernet:初始化 am65 cpsw Nuss 版本 0x6BA03102、cpsw 版本 0x6BA82902 端口:9 quirks:00000000
    [ 2.029152] am65-cpsw-nuss c000000.ethernet:使用随机 MAC 地址
    [ 2.035420] am65-cpsw-nuss c000000.ethernet: initialized cpsw ale version 1.5
    [ 2.042539] am65-cpsw-Nuss c000000.Ethernet: ALE Table Size 512
    [ 2.048774] am65-cpsw-Nuss c000000.Ethernet:CPt ver 0x4e8a010c、freq:250000000、add_val:3 pps:0
    [2.060076] am65-cpsw-nuss c000000.ethernet:设置新的 flow-id-base 82
    [ 7.395559] am65-cpsw-nuss c000000.Ethernet eth1:配置固定/SGMII 链路模式
    [ 7.408265] am65-cpsw-nuss c000000.ethernet eth1:链路接通 — 10Mbps/完全 — 流控制 Rx/TX
    [19.105880] NETDEV 看门狗:eth1 (am65-cpsw-nuss):传输队列 0 超时
    [ 19.363127] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:9984 dql_avail:–42 free_desc:511
    [ 24.989276] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:15612 dql_avail:–42 free_desc:511
    [ 30.109273] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:20732 dql_avail:–42 free_desc:511
    Root@j784s4-EVM:/opt/edgeai-gst-apps #[ 34.973265] am65-cpsw-Nuss c000000.Ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:25596 dql_avail:–42 free_desc:511
    ethtoo[ 40.093266] am65-cpsw-nuss c000000.Ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:30716 dql_avail:–42 free_desc:511
    l eth1
    eth1 的设置:
    支持的端口:[ mii ]
    支持的链路模式:10BaseT/Full
    支持的暂停帧使用:对称仅接收
    支持自动协商:可以
    支持的 FEC 模式:未报告
    广播的链路模式:10BaseT/Full
    广播的暂停帧使用:对称
    广播的自动协商:是
    广播 FEC 模式:未报告
    链路伙伴广播的链路模式:10BaseT/Full
    链路伙伴广播的暂停帧使用:对称
    链路伙伴广播的自动协商:否
    链路伙伴广播的 FEC 模式:未报告
    速度:10MB/s
    双工:全双工
    自动协商:打开
    端口:mii
    PHYAD:0
    收发器:内部
    支持唤醒:d.
    唤醒:D
    当前消息级别:0x000020f7 (8439)
    如果 rx_err TX_err 硬件、则 DRV 探头链路断开
    检测到链路:是
    Root@j784s4-EVM:/opt/edgeai-gst-apps #[ 45.213265] am65-cpsw-Nuss c000000.Ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:35836 dql_avail:–42 free_desc:511
    [ 51.101276] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:41724 dql_avail:–42 free_desc:511

    我看到重复的日志、如eth1: txq:0 DRV_XOFF:0 tmo:xxxxx dql_avail:-42 free_desc:511。 为什么即使链路接通、TX 队列超时仍为负 dql_avail?

    此致、

    B. Apuroop Kumar

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

    尊敬的 Apuroop:  

    eth2 链路是否随修改而上升?
    如果没有、您能否尝试在 DTS 中仅 使用 SGMII 初始化 ADIN1100 导致链路建立? 因此、请勿将 DP83869 初始化为端口。
    如果您只能在 &main_cpsw0_mdio 下的 MDIO 地址上启用 DP83869、这仍应保持对 PHY 寄存器的访问。  

    此致、
    j


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

    尊敬的 Apuroop:  

    我们可能必须调整 ADIN1100 和 DP83869 上的 RGMII 延迟、才能立即建立链路。  
    您能否看到控制 0x32 上的值对 DP83869 是否有帮助?
    此外、如果您在 ADIN1100 上读取 0x01 寄存器、您是否看到链路接通?

    此致、
    j

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

    尊敬的 J:

    我在 ADIN 1100 上读取 0x01 状态寄存器。 它的读数为 0x1009。 链路状态位为零、表明链路仍处于未接通状态。  

    对于在 SGMII 转 RGMII 桥接模式下使用 dp83869hm 时如何微调延迟有何建议?

    此致、

    B. Apuroop Kumar.

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

    尊敬的 Apuroop:  

    这是 ADIN1100 问题、因为链路应在 ADIN1100 PHY 上建立。 Linux 上的链路可能无法正常工作、但当有电缆连接到 ADIN1100 时、ADIN1100 预计会正常工作。  

    确定 ADIN1100 的链路丢失问题后、请告诉我问题是否仍然存在。


    此致、
    j

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

    尊敬的 J:
    我们尝试连接 adin1300 代替 adin1100。 下面的是输出:

    ethtool eth1
    ------------------------
    eth1 的设置:
    支持的端口:[ TP mii ]
    支持的链路模式:10BaseT/Half 10baseT/Full
    100BaseT/Half 100BaseT/Full
    1000BaseT/Full
    支持的暂停帧使用:对称
    支持自动协商:可以
    支持的 FEC 模式:未报告
    广播的链路模式:10BaseT/Half 10baseT/Full
    100BaseT/Half 100BaseT/Full
    1000BaseT/Full
    广播的暂停帧使用:对称
    广播的自动协商:是
    广播 FEC 模式:未报告
    链路伙伴广播的链路模式:10BaseT/Half 10baseT/Full
    100BaseT/Half 100BaseT/Full
    1000BaseT/Full
    链路伙伴广播的暂停帧使用:否
    链路伙伴广播的自动协商:是
    链路伙伴广播的 FEC 模式:未报告
    速度:1000Mb/秒
    双工:全双工
    自动协商:打开
    master-slave cfg:首选从器件
    主从状态:主器件
    端口:双绞线
    PHYAD:0
    收发器:外部
    MDI-X:关闭(自动)
    支持唤醒:d.
    唤醒:D
    当前消息级别:0x000020f7 (8439)
    如果 rx_err TX_err 硬件、则 DRV 探头链路断开
    检测到链路:是

    但我不断在终端上获得它:
    [ 7.840555] am65-cpsw-nuss c000000.Ethernet eth1:PHY [C000f00.MDIO:00]驱动程序[ADIN1300](IRQ=POLL)
    [ 7.849698] am65-cpsw-nuss c000000.ethernet eth1:配置 phy/SGMII 链路模式
    [11.966098] am65-cpsw-nuss c000000.Ethernet eth1:链路接通 — 1Gbps/full — 流控制关闭
    [17.058021] NETDEV 看门狗:eth1 (am65-cpsw-nuss):传输队列 0 超时
    [ 17.504301] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:5500 dql_avail:–90 free_desc:515
    [23.196405] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:11196 dql_avail:–90 free_desc:515
    [28.060397] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:16060 dql_avail:–90 free_desc:515
    [ 33.180397] am65-cpsw-nuss c000000.Ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:21180 dql_avail:–90 free_desc:515
    [ 38.044397] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:26044 dql_avail:–90 free_desc:515
    [43.164390] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:31164 dql_avail:–90 free_desc:515
    [ 48.028383] am65-cpsw-nuss c000000.Ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:36028 dql_avail:–90 free_desc:515
    [53.148380] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:41148 dql_avail:–90 free_desc:515
    [58.012381] am65-cpsw-nuss c000000.Ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:46012 dql_avail:–90 free_desc:515
    [63.132381] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:51132 dql_avail:–90 free_desc:515
    [67.996381] am65-cpsw-Nuss c000000.Ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:55996 dql_avail:–90 free_desc:515
    [73.116380] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:61116 dql_avail:–90 free_desc:515
    [78.236384] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:66236 dql_avail:–90 free_desc:515
    [ 84.124378] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:72124 dql_avail:–90 free_desc:515
    [85.832496] am65-cpsw-Nuss c000000.ethernet eth1:链路断开
    [ 86.844388] am65-cpsw-Nuss c000000.ethernet:TX 超时
    [ 111.528541] am65-cpsw-nuss c000000.Ethernet eth1:PHY [C000f00.MDIO:00]驱动程序[ADIN1300](IRQ=POLL)
    [ 111.537680] am65-cpsw-Nuss c000000.ethernet eth1:配置 phy/SGMII 链路模式
    [114.622069] am65-cpsw-nuss c000000.ethernet eth1:链路接通 — 1Gbps/full — 流控制关闭
    [119.964381] am65-cpsw-nuss c000000.Ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:5308 dql_avail:–90 free_desc:514
    [125.084377] am65-cpsw-nuss c000000.ethernet eth1:TxQ:0 DRV_XOFF:0 TMO:10428 dql_avail:–90 free_desc:514

    您能解释为什么会发生这种情况吗?

    此致、
    B. Apuroop Kumar.

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

    尊敬的 Apuroop:  

    之所以会发生这种情况、是因为 Linux 无法从 TX 路径发送数据包、导致数据包超时、链路会在超时后断开。  

    经过内部讨论后、似乎发生了这种情况、因为 Linux 当前认为 ADIN1300 已连接、而不是 DP83869、所以 Linux 无法轮询 DP83869 的 SGMII 链路建立信号。  

    您可以尝试以下 DTS:

    &main_cpsw0_mdio{
    状态=“正常“;
    pinctrl-names =“default";“;
    pinctrl-0 =<&main_cpsw9x1_mdio_pins_default>;
    pinctrl-1 =<&MAIN_PMX_gpio_vddshv20_pins_default>;

    /* DP83869 桥接 PHY — 连接到 CPSW SGMII 端口*/
    bridge_phy:Ethernet-phy@3{
    reg =<3>;
    };

    /* ADIN1300 — 通过 RGMII 连接至 DP83869 桥接器*/
    adin1100:Ethernet-phy@0{
    reg =<0>;
    };
    };
    &main_cpsw0_port5{
    状态=“正常“;
    PHY-MODE =“SGMII";“;
    PHY-handle =<&dp83869>;
    托管=“带内状态“;
    Phys =<&cpsw0_phy_gmii_sel 5>、<&serdes2_sgmii_link>;
    PHY-NAMES =“MAC",“,"SerDes、"SerDes "“ ";“;
    };

    带内状态使 Linux 能够从 SGMII 数据路径接收链路状态、而不是轮询寄存器。  

    请告诉我这是否有效。  

    此致、
    j

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

    尊敬的 J:
    通过上述 DTS 设置、

    &main_cpsw0_mdio{
    状态=“正常“;
    pinctrl-names =“default";“;
    pinctrl-0 =<&main_cpsw9x1_mdio_pins_default>;
    pinctrl-1 =<&MAIN_PMX_gpio_vddshv20_pins_default>;  

    /* ADIN1100 — 通过 RGMII 连接到 DP83869 桥接器*/
    adin1100:Ethernet-phy@0{
    REG =<0>;// ADIN1100、在 DP83869 后面
    PHY-MODE =“RGMIG";“;
    };

    /* DP83869 桥接 PHY — 连接到 CPSW SGMII 端口*/
    bridge_phy:Ethernet-phy@3{
    reg =<3>;// DP83869 地址
    };

    };

    &main_cpsw0_port5{
    状态=“正常“;
    PHY-MODE =“SGMII";“;
    phy-handle =<&bridge_phy>;
    托管=“带内状态“;
    Phys =<&cpsw0_phy_gmii_sel 5>、<&serdes2_sgmii_link>;
    PHY-NAMES =“MAC",“,"SerDes、"SerDes "“ ";“;

    };

    输出如下:

    root@j784s4-evm:/opt/edgeai-gst-apps # dmesg | grep cpsw
    [1.347180]   am65-cpsw-nuss 460000.ethernet:初始化 am65 cpsw Nuss 版本 0x6BA02102、cpsw 版本 0x6BA82102 端口:2 quirks:00000000
    [   1.360040] am65-cpsw-Nuss 460000.ethernet:初始化的 cpsw ale 版本 1.4
    [   1.367247] am65-cpsw-Nuss 460000.Ethernet: ALE Table Size 64
    [   1.377563] am65-cpsw-Nuss 46000000.Ethernet:CPt ver 0x4e8a010b、freq:500000000、add_val:1 pps:1
    [1.463605]   am65-cpsw-nuss c000000.ethernet:正在初始化 am65 cpsw Nuss 版本 0x6BA03102、cpsw 版本 0x6BA82902 端口:9 quirks:00000000
    [1.887190]   am65-cpsw-nuss 460000.ethernet:初始化 am65 cpsw Nuss 版本 0x6BA02102、cpsw 版本 0x6BA82102 端口:2 quirks:00000000
    [1.900059]   am65-cpsw-Nuss 460000.ethernet:初始化的 cpsw ale 版本 1.4
    [   1.907266] am65-cpsw-Nuss 460000.Ethernet: ALE Table Size 64
    [1.917605]   am65-cpsw-Nuss 46000000.Ethernet:CPt ver 0x4e8a010b、freq:500000000、add_val:1 pps:1
    [1.927699]   am65-cpsw-Nuss 460000.Ethernet:设置新的 flow-id-base 48
    [   2.011433] am65-cpsw-nuss c000000.ethernet:初始化 am65 cpsw Nuss 版本 0x6BA03102、cpsw 版本 0x6BA82902 端口:9 quirks:00000000
    [   2.025292] am65-cpsw-Nuss c000000.ethernet:使用随机 MAC 地址
    [   2.031556] am65-cpsw-nuss c000000.ethernet: initialized cpsw ale version 1.5
    [   2.038677] am65-cpsw-Nuss c000000.Ethernet: ALE Table Size 512
    [   2.044936] am65-cpsw-nuss c000000.ethernet:CPt ver 0x4e8a010c、freq:250000000、add_val:3pps:0
    [   2.056288] am65-cpsw-nuss c000000.ethernet:设置新的 flow-id-base 82
    [   7.073440] am65-cpsw-nuss c000000.Ethernet eth1:PHY [C000f00.MDIO:03]驱动程序[TI DP83869](IRQ=POLL)
    [   7.082750] am65-cpsw-Nuss c000000.Ethernet eth1:配置带内/SGMII 链路模式
    root@j784s4-evm:/opt/edgeai-gst-apps ifconfig
    eth1:flags=4099  MTU 1500
           以太网 BA:89:36:C7:7b:C4 txqueueelen 1000 (以太网)
           RX 数据包 0 字节 0 (0.0 B)
           RX 错误 0 丢弃 0 溢出 0 帧 0
           TX 数据包 0 字节 0 (0.0 B)
           TX 错误 0 丢弃 0 溢出 0 载波 0 冲突 0

     

    Lo:旗帜=73  MTU 65536
           INET 127.0.0.1 网络掩码 255.0.0.0
           inet6 :: 1 prefixlen 128 scopeid 0x10
           loop txqueueelen 1000 (本地环回)
           RX 数据包 92 字节 7654 (7.4KiB)
           RX 错误 0 丢弃 0 溢出 0 帧 0
           TX 数据包 92 字节 7654 (7.4KiB)
           TX 错误 0 丢弃 0 溢出 0 载波 0 冲突 0

     

    root@j784s4-evm:/opt/edgeai-gst-apps ethtool eth1
    eth1 的设置:
    支持的端口:[ TP mii ]
    支持的链路模式:  10BaseT/Half 10baseT/Full
                          100BaseT/Half 100BaseT/Full
                          1000BaseT/Full
                          1000baseX/全
    支持的暂停帧使用:对称
    支持自动协商:可以
    支持的 FEC 模式:未报告
    广播的链路模式: 10BaseT/Half 10baseT/Full
                          100BaseT/Half 100BaseT/Full
                          1000BaseT/Full
                          1000baseX/全
    广播的暂停帧使用:对称
    广播的自动协商:是
    广播 FEC 模式:未报告
    速度:未知!
    双工:未知! (255)
    自动协商:打开
    主从配置:强制从器件
    主从状态:未知
    端口:双绞线
    PHYAD:3.
    收发器:外部
    MDI-X:未知
    支持唤醒:目录
    唤醒:D
           SecureOn 密码:00:00:00:00:00:00
           当前消息级别:0x000020f7 (8439)
                                  如果 rx_err TX_err 硬件、则 DRV 探头链路断开
    检测到链路:否
    root@j784s4-evm:/opt/edgeai-gst-apps #ip a
    3:eth1: MTU 1500 qdisc mq 状态关闭组默认 qlen 1000
    链路/醚 BA:89:36:C7:7b:C4 Brd ff:ff:ff:ff:ff:ff:ff:ff

     

    Root@j784s4-EVM:/opt/edgeai-gst-apps phytool read eth1/0x00/0x01
    0x796d
    root@j784s4-evm:/opt/edgeai-gst-apps


    adin1300 的状态寄存器指示链路已接通且自动 协商完成。 仍然以太网无法正常工作。

    此致、
    B. Apuroop Kumar

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

    尊敬的 Apuroop:  

    如果通过以下命令强制使用 eth1 的链接:

    ethtool -s eth0 autoneg off 速度 1000 双工全速

    eth1 链路是否变为高电平?它所产生的 TX 误差是否与上次出现的 TX 误差相同?
    我想这是否会是 RGMII 延迟不匹配的问题。  

    此致、
    j

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

    尊敬的 J:
    我们尝试了命令强制 AutoNeg 关闭并将速度设置为 1000Mbps 全双工。 但链路仍断开。 您是否知道在将 dp83869hm 用作 SGMII 转 RGMII 桥接模式时如何设置延迟?

    此致、
    B. Apuroop Kumar

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

    此外、我还想提及我对 dp83869 驱动程序代码所做的更改。
    在现有驱动程序中、

    /* STRAP_STS1 位*/
    #define DP83869_STRAP_OP_MODE_MASK GENMASK(2、0) 
    static int dp83869_set_shaded_mode (struct phy_device *phydev)
    
    struct dp83869_private *dp83869 = phydev->priv
    int
    
     val;val = phy_read_MMD (phydev、DP83869_DEVADDR、DP83869_Strap_STS1); 
    if (val < 0)
     return val
    
    dp83869->mode = val DP83869_STRAP_OP_MODE_MASK
    
    return 0;
    

    但根据数据表、strap_opmode 位为[11:9]

    因此、我按如下方式修改了驱动程序:

    /* STRAP_STS1 位*/
    #define DP83869_STRAP_OP_MODE_MASK GENMASK (119)
    #define DP83869_STRAP_OP_MODE_SHIFT 9.
    static int dp83869_set_baded_mode(结构体 phy_device *phydev)
    printk (Kern_debug “dp83869:输入%s\n“、__func__);
    struct dp83869_private *dp83869 = phydev->priv;
    INT val

    Val = phy_read_MMD (phydev、DP83869_DEVADDR、DP83869_STRAP_STS1);
    if (val < 0)
    返回
    printk (Kern_debug “读取 DP83869_STRAP_STS1 寄存器=%x\n“val);
    dp83869->mode =(val & DP83869_STRAP_OP_MODE_MASK)>> DP83869_STRAP_OP_MODE_SHIFT
    printk(Kern_debug “dp83869:硬件捆绑模式=%d\n“dp83869->mode);

    返回 0
    }
    通过上述更改、现在使用 strap 配置引脚配置、它将进入正确的 op_mode

    root@j784s4-evm:/opt/edgeai-gst-apps # dmesg | grep dp83869
    [1.434298] dp83869:输入在 dp83869_probe 中
    [1.434302] dp83869:在 dp83869_of_init 中输入
    [ 1.434304] dp83869:在 dp83869_set_brapped_mode 中进入
    [1.435137] dp83869:硬件捆绑模式= 3.
    [ 1.441355] dp83869:在 dp83869_CONFIG_INIT 中输入
    [ 1.441770] dp83869:PHY_MODIFY (CFG2、downshift_EN) ret=0
    [ 1.441773] dp83869:在 dp83869_configure_mode 中输入
    [ 1.442807] dp83869:mode=0x3 在 dp83869_configure_mode 中进入了 RGMII_SGMII_BRIDGE
    [ 1.443635] dp83869:PHY_WRITE_MMD (OP_MODE、RGMII_SGMII_BRIDGE) RET=0
    [ 1.444465] dp83869:PHY_WRITE_MMD(Fx_CTRL,默认值)ret=0
    [ 1.444468] dp83869:dp83869_configure_mode ret=0
    [ 1.444470] dp83869:port_morizing=2、配置端口镜像
    [ 1.44472] dp83869:在 dp83869_config_port_mirroring 中输入
    [1.444474] dp83869:端口镜像值= 2
    [1.444476](如果 dp83869->port 镜像不等于 dp83869_config_port_mirroring 中的 DP83869_PORT_mirroring_EN)
    [ 1.445304] dp83869:dp83869_config_port_mirroring ret=0
     

    此致、
    B. Apuroop Kumar

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

    尊敬的 Apuroop:

    Strap_STS 寄存器不是可写寄存器。 如果您通过寄存器更改操作模式或其他 strap 配置、则必须写入配置 (strap) 状态寄存器直接产生影响的寄存器、而不是更改 strap 配置状态寄存器。

    此致、

    j

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

    尊敬的 J:

    但我不会写入 STRAP_STS 寄存器、 我将掩码从 GENMASK (2、0) 更改为 GENMASK (11、9)、因为根据数据表、STRAP_OPMODE 的位位置为[11:9]。 现有的驱动程序代码错误地读取位[2:0]而不是位[11:9]、这导致它始终报告 MODE = 0、即使硬件已搭接至模式 3(SGMII 转 RGMII 桥接器)也是如此。

    我的更改仅影响驱动程序解释读取值的方式 — 没有写入硬件寄存器。

    此致、

    B. Apuroop Kumar  

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

    尊敬的 Apuroop:  

    我明白了。 很有道理。 通过这一变化、是否有任何改进?
    您还能分享一下当您执行 ifconfig 时 eth1 是否有任何日志和状态吗?

    此致、
    j

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

    尊敬的 J:

    只是想让您知道我为 在 SGMII 转 RGMII 桥接器中配置 dp83869hm 做了哪些修改。 但没有任何改善。 您能否建议 在 SGMII 转 RGMII 桥接模式下运行时如何定义延迟?

    此致、

    B. Apuroop Kumar.

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

    尊敬的 Apuroop:

    好的。 您可以使用寄存器 32h 来更改 RGMII 线路上的延迟。 有关更多详细信息、请参阅数据表、但可配置为 0ns 至 4ns、默认延迟为 2ns。

    此致、

    j