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.

[参考译文] AM3354:ETH1不工作

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/834482/am3354-eth1-not-working

器件型号:AM3354

您好!
我们正在开发基于 AM335x 入门套件的定制板、该套件配备两个具有物理器件 DP83822的以太网端口。

与以太网配置相关的 DTS 文件部分如下:

   cpsw_default:cpsw_default{
      pinctrl-single、pins =<
         /*从属设备1 */
         AM33XX_IOPAD (0x90c、PIN_INPUT | MUX_MODE1)/*(H17) gmii1_crs.rmii1_crs_dv *
         AM33XX_IOPAD (0x910、PIN_INPUT | MUX_MODE1)/*(J15) gmii1_rxer.rmii1_rxer *
         AM33XX_IOPAD (0x914、PIN_OUTPUT | MUX_MODE1)/*(J16) gmii1_txen.rmii1_txen *
         AM33XX_IOPAD (0x928、PIN_OUTPUT | MUX_MODE1)/*(K17) gmii1_txd0.rmii1_txd0 *
         AM33XX_IOPAD (0x924、PIN_OUTPUT | MUX_MODE1)/*(K16) gmii1_txd1.rmii1_txd1 *
         AM33XX_IOPAD (0x940、PIN_INPUT | MUX_MODE1)/*(M16) gmii1_rxd0.rmii1_rxd0 */
         AM33XX_IOPAD (0x93c、PIN_INPUT | MUX_MODE1)/*(L15) gmii1_rxd1.rmii1_rxd1 *
         AM33XX_IOPAD (0x944、PIN_INPUT | MUX_MODE0)/*(H18) rmii1_REFCLK/rmii1_REFCLK *

         /*从机2 */
         AM33XX_IOPAD (0x864、PIN_INPUT | MUX_MODE3)/*(U16) GPMC_A9.rmii2_crs_dv *
         AM33XX_IOPAD (0x874、PIN_INPUT | MUX_MODE3)/*(U17) GPMC_WPN.rmii2_rxer *
         AM33XX_IOPAD (0x840、PIN_OUTPUT | MUX_MODE3)/*(R13) GPMC_a0.rmii2_txen *
         AM33XX_IOPAD (0x854、PIN_OUTPUT | MUX_MODE3)/*(V15) GPMC_A5.rmii2_txd0 *
         AM33XX_IOPAD (0x850、PIN_OUTPUT | MUX_MODE3)/*(R14) GPMC_A4.rmii2_txd1 */
         AM33XX_IOPAD (0x86c、PIN_INPUT | MUX_MODE3)/*(V17) GPMC_A11.rmii2_rxd0 *
         AM33XX_IOPAD (0x868、PIN_INPUT | MUX_MODE3)/*(T16) GPMC_A10.rmii2_rxd1 *
         AM33XX_IOPAD (0x908、PIN_INPUT | MUX_MODE1)/*(H16) gmii1_col.rmii2_REFCLK *
      >;
   };

   DaVinci_MDIO_DEFAULT:DaVinci_MDIO_DEFAULT{
      pinctrl-single、pins =<
         /* MDIO */
         AM33XX_IOPAD (0x948、PIN_INPUT | MUX_MODE0) /*(M17) MDIO_DATA.MDIO_DATA *
         AM33XX_IOPAD (0x94c、PIN_OUTPUT | MUX_MODE0)/*(M18) MDIO_clk.MDIO_clk *
      >;
   };


Mac{(&M)
   pinctrl-names ="default"、"sleep";
   pinctrl-0 =<&cpsw_default>;
   pinctrl-1 =<&cpsw_sleep>;
   DUAL_EMAC =<1>;
   状态="正常";
};

DaVinci_MDIO{
   pinctrl-names ="default"、"sleep";
   pinctrl-0 =<&Davinc_MDIO_default>;
   pinctrl-1 =<&Davinc_MDIO_SLEEP>;
   状态="正常";
   RESET-GPIO =<&GPIO1 18 GPIO_ACTIVE_LOW>;
   RESET-DELAY-us =<2>;  /* PHY 数据表中的状态最小值为1uS */

   ethphy0:以太网 phy@1{
      reg =<1>;
   };

   ethphy1:以太网 phy@2{
      reg =<2>;
   };
};

cpsw_emac0{&cpsw_emac0}
   PHY-Handle =<&ethphy0>;
   PHY-MODE ="RMII";
   DUAL_EMAC_res_vlan =<1>;
};

cpsw_emac1{&cpsw_emac1}
   PHY-Handle =<&ethphy1>;
   PHY-MODE ="RMII";
   DUAL_EMAC_res_vlan =<2>;
};

phy_SEL{&
   RMII-时钟-外部;
};

第一个端口(eth0)工作正常(DHCP 在该端口上也工作)、而第二个端口(eth1)不工作。
我们与网络监听器一起检查了是否允许再发送部件(对于 eth1)(在 ping 命令期间记录了 ARP 数据包请求和响应)、物理级别(RMII_rxd0和 RMII_rxd1)似乎正常(使用示波器进行检查)、因为我们看到数据在流动。 不管怎样、网络通信仍然不工作。
我们还验证了接收器件中的所有引脚连接是否正常:我们将引脚配置为输出 GPIO、并检查物理上的输出电平是否符合预期。
我们检查了两个端口的 DP83822寄存器配置、它们是正确的、两个端口的配置是相同的。

该问题已在不同的电路板上发现和调试、因此我们排除了一个故障单元。

以下是启动时的一些内核日志:

(笑声)
[1.007968]   libphy:固定 MDIO 总线:探测
[1.078735]   DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6、总线频率1000000
[1.086779]   libphy: 4a101000.mdio:探测
[1.093311]   DaVinci_MDIO 4a101000.MDIO:PHY[1]:器件4a101000.MDIO:01、驱动器 TI DP83822 10/100Mbps PHY
[1.103566]   DaVinci_MDIO 4a101000.MDIO:PHY[2]:器件4a101000.MDIO:02、驱动器 TI DP83822 10/100Mbps PHY
[1.114605]   cpsw 4a100000.以太网:检测到的 MACID = 74:E1:82:8b:63:97
[1.121777]   cpsw 4a100000.ethernet:初始化 cpsw ale 版本1.4
[1.128440]   cpsw 4a100000.以太网:ALE 表大小1024
[1.134873]   cpsw 4a100000.以太网:cpsw:检测到的 MACID = 74:E1:82:8b:63:99
(笑声)

[5.939999]   net eth0:正在初始化 cpsw 版本1.12 (0)
[6.043537]   TI DP83822 10/100Mbps PHY 4a101000.MDIO:01:连接的 PHY 驱动程序[TI DP83822 10/100Mbps PHY](MII_BUS:phy_addr=4a101000.MDIO:01、IRQ=POLL)
(笑声)
[15.439020]  net eth1:正在初始化 cpsw 版本1.12 (0)
[  15.563550] TI DP83822 10/100Mbps PHY 4a101000.MDIO:02:连接的 PHY 驱动程序[TI DP83822 10/100Mbps PHY](MII_BUS:phy_addr=4a101000.MDIO:02、IRQ=POLL)
(笑声)

将电缆连接到 eth1链路正确连接:
[18.730744]  cpsw 4a100000.以太网 eth1:链路速率高达- 100Mbps/全速率-流控 Rx/TX

我们已将 eth1端口设置为静态 IP 配置并对我的 PC 运行 ping 命令、ifconfig 命令返回以下内容:

#ifconfig
eth0     Link encap:ethernet HWaddr 74:E1:82:8B:63:97  
         上广播多播 MTU:1500 公制:1
         RX 数据包:0错误:0丢弃:0超限:0帧:0
         TX 数据包:0错误:0丢弃:0超限:0载波:0
         冲突:0 txqueuelen:1000
         RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)
         中断:43

ETH1     链路连接:以太网 HWaddr 74:E1:82:8B:63:99  
         iNet addr:172.20.1.29 Bcast:0.0.0.0 掩码:255.255.0.0
         运行多播 MTU:1500 公制:1的上广播
         RX 数据包:0错误:0丢弃:0超限:0帧:0
         TX 数据包:9错误:0丢弃:0超限:0载波:0
         冲突:0 txqueuelen:1000
         RX 字节:0 (0.0 B) TX 字节:576 (576.0 B)

LO       链路环接:本地环回  
         iNet addr:127.0.0.1 掩码:255.0.0.0
         正在运行 MTU:65536 公制:1的上环回
         RX 数据包:11错误:0丢弃:0超限:0帧:0
         TX 数据包:11错误:0丢弃:0超限:0载波:0
         冲突:0 txqueuelen:1000
         RX 字节:1232 (1.2KiB) TX 字节:1232 (1.2KiB)

第二个端口的 ethtool 输出:

# ethtool eth1.
ETH1的设置:
   支持的端口:[ TP MII]
   支持的链路模式:  10BaseT/Half 10baseT/Full
                          100BaseT /半个100BaseT /全双工
   支持的暂停帧使用:仅对称接收
   支持自动协商:是
   通告的链路模式: 10BaseT /半10baseT/全
                          100BaseT /半个100BaseT /全双工
   广播的暂停帧使用:否
   广播自协商:是
   链接伙伴通告的链接模式: 10BaseT /半10baseT/全
                                       100BaseT /半个100BaseT /全双工
   链接伙伴通告的暂停帧使用:对称仅接收
   连接方通告的自动协商:是
   速度:100Mb/s
   双工:全双工
   端口:MII
   PHYAD:2.
   收发器:内部
   自协商:开
   支持唤醒:D
   唤醒:D
   当前消息级别:0x00000000 (0)
               
   检测到链接:是

您能帮我们解决这个问题吗?

谢谢。

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

    您好!

    请完成此检查清单并将结果发布在以下位置: processors.wiki.ti.com/.../5x_CPSW

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

    以下是检查清单结果(一些信息已发布):

    只有 ETH1连接到以太网电缆(ETH2工作正常)。

    [1.007968]   libphy:固定 MDIO 总线:探测
    [1.078735]   DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6、总线频率1000000
    [1.086779]   libphy: 4a101000.mdio:探测
    [1.093311]   DaVinci_MDIO 4a101000.MDIO:PHY[1]:器件4a101000.MDIO:01、驱动器 TI DP83822 10/100Mbps PHY
    [1.103566]   DaVinci_MDIO 4a101000.MDIO:PHY[2]:器件4a101000.MDIO:02、驱动器 TI DP83822 10/100Mbps PHY
    [1.114605]   cpsw 4a100000.以太网:检测到的 MACID = 74:E1:82:8b:63:97
    [1.121777]   cpsw 4a100000.ethernet:初始化 cpsw ale 版本1.4
    [1.128440]   cpsw 4a100000.以太网:ALE 表大小1024
    [1.134873]   cpsw 4a100000.以太网:cpsw:检测到的 MACID = 74:E1:82:8b:63:99
    (笑声)
    [18.730744]  cpsw 4a100000.以太网 eth1:链路速率高达- 100Mbps/全速率-流控 Rx/TX


    ethtool 输出:
       是否在链路的两端启用了自动协商? 是的
       TI 器件与链路合作伙伴之间的链路速度是否匹配? 是的
       链路双工模式是否正确?  是的

    # ethtool eth1.
    ETH1的设置:
       支持的端口:[ TP MII]
       支持的链路模式:  10BaseT/Half 10baseT/Full
                              100BaseT /半个100BaseT /全双工
       支持的暂停帧使用:仅对称接收
       支持自动协商:是
       通告的链路模式: 10BaseT /半10baseT/全
                              100BaseT /半个100BaseT /全双工
       广播的暂停帧使用:否
       广播自协商:是
       链接伙伴通告的链接模式: 10BaseT /半10baseT/全
                                           100BaseT /半个100BaseT /全双工
       链接伙伴通告的暂停帧使用:对称仅接收
       连接方通告的自动协商:是
       速度:100Mb/s
       双工:全双工
       端口:MII
       PHYAD:2.
       收发器:内部
       自协商:开
       支持唤醒:D
       唤醒:D
       当前消息级别:0x00000000 (0)
                   
       检测到链接:是

    # ethtool -S eth1.
    NIC 统计信息:
        正常 Rx 帧:0
        广播 Rx 帧:0
        多播 Rx 帧:0
        暂停 Rx 帧:0
        RX CRC 错误:0
        RX 对齐/代码错误:0
        超大 RX 帧数:0
        RX Jabber:0
        欠大小(短) Rx 帧:0
        RX 片段:0
        RX 八位位组:0
        正常 Tx 帧数:9.
        广播 Tx 帧:9.
        多播 Tx 帧:0
        暂停 Tx 帧:0
        延迟的 Tx 帧:0
        冲突:0
        单冲突 Tx 帧:0
        多个冲突 Tx 帧:0
        冲突过多:0
        晚期冲突:0
        TX 欠运转:0
        载波侦听错误:0
        TX 八位位组:612
        RX + Tx 64字节帧:0
        RX + Tx 65-127八位位组帧:9.
        RX + Tx 128-255八位位组帧:0
        Rx + Tx 256-511八位位组帧:0
        RX + Tx 512-1023八位位组帧:0
        Rx + Tx 1024个八位位组帧:0
        净八位位组:612
        帧溢出的 RX 起始:0
        帧的 RX 中间溢出:0
        RX DMA 超限:0
        RX DMA 通道0:head_enqueue:1
        RX DMA 通道0:tail_enqueue:127
        RX DMA 通道0:PAD_ENqueue:0
        RX DMA 通道0:排队错误:0
        RX DMA 通道0:DESC_ALLOC_FAIL:0
        RX DMA 通道0:PAD_ALLOC_FAIL:0
        RX DMA 通道0:runt_receive_buf:0
        RX DMA 通道0:runt_transmit:bu:0
        RX DMA 通道0:empty_dequeue:0
        RX DMA 通道0:BUSY_DEqueue:0
        RX DMA 通道0:Good:Dequeue:0
        RX DMA 通道0:要求:0
        RX DMA 通道0:teardown_dequeue:0
        TX DMA 通道0:head_enqueue:9
        TX DMA 通道0:tail_enqueue:0
        TX DMA 通道0:PAD_ENqueue:0
        TX DMA 通道0:排队错误:0
        TX DMA 通道0:DESC_ALLOC_FAIL:0
        TX DMA 通道0:PAD_ALLOC_FAIL:0
        TX DMA 通道0:runt_receive_buf:0
        TX DMA 通道0:runt_transmit:bu:9.
        TX DMA 通道0:empty_dequeue:9
        TX DMA 通道0:BUSY_DEqueue:0
        TX DMA 通道0:Good:Dequeue:9
        TX DMA 通道0:要求:0
        TX DMA 通道0:teardown_dequeue:0

    ifconfig 输出(eth1配置静态 IP):
    # ifconfig
    eth0     Link encap:ethernet HWaddr 74:E1:82:8B:63:97  
             上广播多播 MTU:1500 公制:1
             RX 数据包:0错误:0丢弃:0超限:0帧:0
             TX 数据包:0错误:0丢弃:0超限:0载波:0
             冲突:0 txqueuelen:1000
             RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)
             中断:43

    ETH1     链路连接:以太网 HWaddr 74:E1:82:8B:63:99  
             iNet addr:172.20.1.29 Bcast:0.0.0.0 掩码:255.255.0.0
             运行多播 MTU:1500 公制:1的上广播
             RX 数据包:0错误:0丢弃:0超限:0帧:0
             TX 数据包:9错误:0丢弃:0超限:0载波:0
             冲突:0 txqueuelen:1000
             RX 字节:0 (0.0 B) TX 字节:576 (576.0 B)

    LO       链路环接:本地环回  
             iNet addr:127.0.0.1 掩码:255.0.0.0
             正在运行 MTU:65536 公制:1的上环回
             RX 数据包:11错误:0丢弃:0超限:0帧:0
             TX 数据包:11错误:0丢弃:0超限:0载波:0
             冲突:0 txqueuelen:1000
             RX 字节:1232 (1.2KiB) TX 字节:1232 (1.2KiB)

    Wireshark 中显示的用于对我的 PC 执行 ping 命令的 ARP 数据包:
    1132054   8553.57796649   Texasins_8b:63:99   ARP   广播   64   谁拥有172.20.2.103? TELL 172.20.1.29 [以太网帧检查序列不正确]
    1132055   8553.578010044   HewletP_60:43:23   ARP   TexasIns_8b:63:99   42   172.20.2.103位于 AC:E2:D3:60:43:23


    其他要求提供的信息:
    Linux 源代码为 ti-processor-sdk-linux-4.14.y,来自 ti-processor-sdk-linux-am335x-evm-05.03.00.07
    # uname -a
    Linux 内置4.14.79 #1抢占 Thu Aug29 11:17:35 CEST 2019 armv7l GNU/Linux
    文件系统是使用 buildroot 构建的、并已在 AM335x 入门套件上成功测试、两个 eth 端口均正常工作。

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

    您好!

    感谢您提供所需的信息、并仅连接 eth1来调试接口。 ethtool -S 查看 CPSW 接口的硬件统计信息。  

    正常 Rx 帧:0
    广播 Rx 帧:0
    多播 Rx 帧:0
    暂停 Rx 帧:0
    RX CRC 错误:0
    RX 对齐/代码错误:0
    超大 RX 帧数:0
    RX Jabber:0
    欠大小(短) Rx 帧:0
    RX 片段:0
    RX 八位位组:0
    正常 Tx 帧数:9.
    广播 Tx 帧:9.
    多播 Tx 帧:0

    在 eth1上检测到链路,您将看到来自 eth1的广播包,硬件统计数据显示离开接口的包。 这表明 TX 路径良好。 但 RX 路径不是、这里会出现问题。 监听器显示正在将 ARP 响应发送到 AM335x、但在硬件级别看不到这些响应。 这将在 MAC 和连接器之间保留、前提是 PC 与您所查看的 ETH1端口之间具有直接连接。 引脚复用和 DT 条目看起来不错、但 RX 端没有数据包。

    我认为下一步是通过连接器查看 RX 路径的硬件级别。  示波器是否显示 RX 上查看 RX 线路的任何流量、以查看其上是否有任何流量?  

    此致、

    Schuyler

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

    大家好、也许我们找到了解决方案。

     请访问 http://www.ti.com/lit/ds/symlink/am3358.pdf

    (10)器件版本1.0器件仅在选择 mode3时提供 MMC2_DAT7信号。 芯片修订版本2.0和更新的器件实现了另一个级别的引脚多路复用
    选择 mode3时提供原始 MMC2_DAT7信号或 RMII2_CRS_DV 信号。 这种新级别的引脚复用通过 SMA2寄存器的位0来选择。 了解详情
    详细信息请参阅 AM335x 技术参考手册的第1.2节。

    我们的器件版本为 AM3354B (2.1)。

    当我们读取 SMA2寄存器(例如 u-boot 中)时、返回的值为0x0。
    将其设置为0x1并引导内核、eth1开始工作。

    在您看来、我们认为该解决方案是正确的吗? 此设置是否合理?
    是否有更好的方法来进行此配置(也许是引脚多路复用)?

    谢谢、
    此致。

    Paolo

     

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

    您好!

    我目前不在办公室、我将于4日返回。 您能否附上显示 CPSW 和 PHY 之间连接的原理图片段?

    此致、

    Schuyler

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

    您好!
    我更愿意将原理图片段直接发送给您、而不是公开共享、因为它是一份公司文档。

    这是可行的吗?
    如果是、您能否提供向您发送文档的方式?

    谢谢、
    此致

    Paolo

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

    您好!

    我认识到共享完整原理图的潜在敏感性。 我真的不需要整个原理图、因此我只需要一小部分来显示 SOC 和 PHY 之间的网络路径。 网络是否与页面隔离?

    此致、

    Schuyler

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

    您好!
    我认为没有必要分享原理图、因为问题现在已经解决、eth1工作正常。
    无论如何,我想确认我们找到的解决方案是正确的,是有道理的。

    SMA2寄存  器(1320h)中的位0设置为1 (在 MODE3的 GPMC_A9引脚上选择 RMII2_CRS_DV)请参阅 www.ti.com/.../am3358.pdf 第48页的(10)。

    您可以添加注释吗?

    非常感谢、
    此致

    Paolo

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

    您好!

    我相信您是正确的、我正在与开发人员核实、看看情况是否正确。 对我来说、至少看起来 eth1本质上必须设置该位。 由于您发现了错误、因此您可以将补丁发布到内核邮件列表、以获得解决问题的学分。 如果您选择这样做、请在此处附上帖子。  

    当我听到开发人员的反馈时、我将发布到此主题。

    谢谢、此致、

    Schuyler

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

    您好!

    对于您选择使用的 I/O 集、您的解决方案是正确的操作。 我不确定您在哪里应用了补丁、但 TI 建议您在 U-boot 中设置 SMA 寄存器、并让内核依赖于设置的继承。  

    此用例使用为 RMII2定义的第3个 I/O 集、如果使用前2个 I/O 集、则此 SMA 寄存器无关紧要、因为使用了不同的引脚多路复用器。  

    此致、

    Schuyler

x 出现错误。请重试或与管理员联系。