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.

[参考译文] Linux/AM3358:DP83867 PHY 问题

Guru**** 2614265 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/657590/linux-am3358-dp83867-phy-issue

器件型号:AM3358

工具/软件:Linux

您好!

我的定制板中的 dp83867存在一些问题、内核无法找到 phy 器件

内核日志中的内容似乎正常

[1.100566] libphy:固定 MDIO 总线:探测
[1.164521] DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6
[1.170670] libphy: 4a101000.mdio:探测
[1.175400] cpsw 4a100000.以太网:检测到的 MACID = 98:5d:AD:7b:C3:5e

但在初始 eth0中找不到 phy 设备

[6.349598] Net eth0:正在初始化 cpsw 版本1.12 (0)
[6.356709] libphy:找不到 PHY 4a101000.MDIO:00
[6.361527] net eth0:从器件0上未找到 PHY 4a101000.MDIO:00
[6.36844] libphy:找不到 PHY 4a101000.mdio:01
[6.373016] net eth0:PHY 4a101000.MDIO:01未在从器件1上找到

下面是 ifconfig 响应:

eth0 Link encap:以太网 HWaddr 98:5D:AD:7B:C3:5E
iNet addr:10.1.1.100 Bcast:0.0.0.0掩码:255.255.255.0
上广播多播 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)
中断:174

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

这是我关于网络的 DTS

&Mac{
pinctrl-names ="default"、"sleep";
pinctrl-0 =<&cpsw_default>;
pinctrl-1 =<&cpsw_sleep>;
status ="确定";
};

&Davinci_MDIO{
pinctrl-names ="默认"、"睡眠";
compatible ="ti、cpsw-mdio"、"ti、Davinc_MDIO";
pinctrl-0 =<&Davinc_MDIO_default>;
pinctrl-1 =<&Davinc_MDIO_SLEEP>;
状态="确定";

dp83867_0:ethernet-phy@0{
reg =<0>;
TI、Rx 内部延迟= ;
TI、TX 内部延迟= ;
TI、FIFO 深度= ;
ti、最小输出阻抗;
ti、dp83867-rxctrl-strap -quirk;
};
}

;&cpsw_emac0{
phy_id =<&Davinci_mdio>、<0>;
phy-mode ="RGMII-txid";
};

&cpsw_emac1{
phy_id =<&Davinci_mdio>、<1>;
phy-mode ="RGMII-txid";
}; 

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

    此处提供了一份清单、如果您可以、请遵循该清单以帮助您了解电路板上可能存在的问题。 另请将请求的结果附加到此帖子。 另外、请单独附加日志文件或 ethtool 结果、以便更轻松地进行上拉。 附加压缩文件对每个人来说都是一个更具挑战性的问题。

    processors.wiki.ti.com/.../5x_CPSW

    IP 地址是否为静态地址? 我假设这是因为没有显示任何针对将发生 DHCP 通信的 RX/TX 的数据包计数。

    检查清单将询问 ethtool 结果、以指示是否检测到链接。 由于 MDIO 驱动程序在引导期间未检测到 PHY、因此很可能 ethtool 不会返回有意义的数据。

    检查清单中还提到了使用 Wireshark 查找可能从发送或本应接收到的任何数据包。 检查数据包是否最小送达是一个很好的第一步。


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

    检查 DP83867IT 的 RESET_n 引脚后、可以在 MDIO 总线中检测到该引脚、并按如下所示进行引导日志

    [1.164483] DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6
    [1.170637] libphy: 4a101000.mdio:探测
    [1.175510] DaVinci_MDIO 4a101000.MDIO:PHY[0]:器件4a101000.MDIO:00、驱动程序未知
    [1.184211] cpsw 4a100000.ethernet:缺少从属[1] phy_id 属性
    [1.190714] cpsw 4a100000.以太网:检测到的 MACID = 98:5d:AD:7b:C3:5e

    [6.138124] Net eth0:正在初始化 cpsw 版本1.12 (0)
    [6.224995] net eth0: Phy found : id is : 0x79497949
    [6.2390086] libphy:找不到 PHY
    [6.233505]网络 eth0:从机1上找不到 PHY

    但问题仍然是找不到驱动程序,我可以在哪里检查?
    谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我认为您正处于正确的路径、需要确保 PHY 有适当的复位。 这一行将报告找到的 PHY ID、

    NET ETH0:找到的 PHY:ID 是0x79497949

    这不是所选 PHY 的正确 PHY ID、请参阅数据表、它应该是080028h。 一旦您在引导日志中看到此编号、请查看此 PHY 系列的内核配置、以确保将其配置为使用内核构建。

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

    您好!

    更改 DTS 后、我发现物理层掩码不正确的主要问题是、它的 shound be 0xfffff0 (DP83867)

    但总是会得到0xfffffffe。  

    内核中添加了 supoort DP83867 (CONFIG_DP83867_PHY=y)、但仍然不运行

    [1.184483] DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6
    [1.190608] DaVinci_MDIO 4a101000.MDIO:检测到的 phy 掩码 FFFFFFFE
    [1.197570] libphy: 4a101000.mdio:探测
    [1.201609] DaVinci_MDIO 4a101000.MDIO:PHY[0]:器件4a101000.MDIO:00、驱动程序未知
    [1.210411] cpsw 4a100000.ethernet:缺少 slave[1] phy_id 属性
    [1.216938] cpsw 4a100000.以太网:检测到的 MACID = 98:5d:AD:7b:C3:5e

    附加的文件具有 DTS 和 defconfig

    DTS 文件:

    e2e.ti.com/.../4118.am335x_2D00_evm.dts.txt

    defconfig 文件:

    e2e.ti.com/.../am335x_5F00_b4_5F00_deconfig.txt

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

    尽管内核中内置了 PHY 支持、但仍报告驱动程序未知。 尽管 MDIO 驱动程序正在检测 DTS 文件中预期地址处的 phy、但这种情况仍然存在。

    您能否发布 ethtool eth0的结果? 和 ethtool -S eth0? 我想查看是否检测到链接。

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

    您好!

    感谢你的帮助。

    使用 ethtool 命令"ethtool eth0"获取结果"Link detected: no"、这意味着 MDIO 无法识别 phy 设备?

    内核中 DaVinci_mdio.c 的函数“Davinci_mdio_reset”总是错误的 phy_mask,寄存器如何获得活动 phy?

    /*从活动寄存器获取 phy 掩码*/
    phy_mask =__raW_readl (&data->regs->alive);
    if (phy_mask){
    //将 MDIO 总线限制为仅限实况 PHY */
    dev_info (data->dev、"检测到的 phy 掩码%x\n"、~phy_mask);
    phy =~phy = phy =
    
    n_info、esn、evalthy
    n、esy 扫描所有 phy 数据;
    phy_mask = 0;
    }
    data->bus->phy_mask = phy_mask; 

    ethtool eth0

    eth0的设置:

        支持的端口:[ TP AUI BNC MII 光纤]

        支持的链路模式: 10BaseT /半双工

                    100BaseT /全双工

        支持的暂停帧使用:否

        支持自协商:否

        通告的链路模式: 10BaseT /半双工

                    100BaseT /全双工

        广播的暂停帧使用:否

        广播自协商:否

        链接伙伴通告的链接模式: 10Base/Full

                          100BaseT /全双工

        链路伙伴通告的暂停帧使用:仅发送

        连接方通告的自动协商:是

        速度:100Mb/s

        双工:全双工

        端口:MII

        PHYAD:0

        收发器:外部

        自协商:开

        支持唤醒:D

        唤醒:D

        当前消息级别:0x00000000 (0)

        检测到链接:否

    ethtool -S eth0
    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 帧:0
    广播 Tx 帧:0
    多播 Tx 帧:0
    暂停 Tx 帧:0
    延迟的 Tx 帧:0
    冲突:0
    单冲突 Tx 帧:0
    多个冲突 Tx 帧:0
    冲突过多:0
    晚期冲突:0
    TX 欠运转:0
    载波侦听错误:0
    TX 八位位组:0
    RX + Tx 64字节帧:0
    RX + Tx 65-127八位位组帧:0
    RX + Tx 128-255八位位组帧:0
    Rx + Tx 256-511八位位组帧:0
    RX + Tx 512-1023八位位组帧:0
    Rx + Tx 1024个八位位组帧:0
    净八位位组:0
    帧溢出的 RX 起始:0
    帧的 RX 中间溢出:0
    RX DMA 超限:0
    RX DMA 通道:head_enqueue:1.
    RX DMA 通道:tail_enqueue:63
    RX DMA 通道:PAD_ENqueue:0
    RX DMA 通道:错误排队:0
    RX DMA 通道:DESC_ALLOC_FAIL:0
    RX DMA 通道:PAD_ALLOC_FAIL:0
    RX DMA 通道:runt_receive_buf:0
    RX DMA 通道:runt_transmit:buf:0
    RX DMA 通道:empty_dequeue:0
    RX DMA 通道:BUSY_DEqueue:0
    RX DMA 通道:Good:Dequeue:0
    RX DMA 通道:要求:0
    RX DMA 通道:teardown_dequeue:0
    TX DMA 通道:head_enqueue:0
    TX DMA 通道:tail_enqueue:0
    TX DMA 通道:PAD_ENqueue:0
    TX DMA 通道:排队错误:0
    TX DMA 通道:DESC_ALLOC_FAIL:0
    TX DMA 通道:PAD_ALLOC_FAIL:0
    TX DMA 通道:runt_receive_buf:0
    TX DMA 通道:runt_transmit;buf:0
    TX DMA 通道:empty_dequeue:0
    TX DMA 通道:BUSY_DEqueue:0
    TX DMA 通道:Good Dequeue:0
    TX DMA 通道:要求:0
    TX DMA 通道:teardown_dequeue:0

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

    感谢你的帮助。

    使用 ethtool 命令"ethtool eth0"获取结果"Link detected: no"、这意味着 MDIO 无法识别 phy 设备?

    内核中 DaVinci_mdio.c 的函数“Davinci_mdio_reset”总是错误的 phy_mask,寄存器如何获得活动 phy?



    ethtool eth0

    eth0的设置:

    支持的端口:[ TP AUI BNC MII 光纤]

    支持的链路模式:10BaseT /半双工

    100BaseT /全双工

    支持的暂停帧使用:否

    支持自协商:否

    通告的链路模式:10BaseT /半双工

    100BaseT /全双工

    广播的暂停帧使用:否

    广播自协商:否

    链接伙伴通告的链接模式:10Base/Full

    100BaseT /全双工

    链路伙伴通告的暂停帧使用:仅发送

    连接方通告的自动协商:是

    速度:100Mb/s

    双工:全双工

    端口:MII

    PHYAD:0

    收发器:外部

    自协商:开

    支持唤醒:D

    唤醒:D

    当前消息级别:0x00000000 (0)

    检测到链接:否



    ethtool -S eth0
    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 帧:0
    广播 Tx 帧:0
    多播 Tx 帧:0
    暂停 Tx 帧:0
    延迟的 Tx 帧:0
    冲突:0
    单冲突 Tx 帧:0
    多个冲突 Tx 帧:0
    冲突过多:0
    晚期冲突:0
    TX 欠运转:0
    载波侦听错误:0
    TX 八位位组:0
    RX + Tx 64字节帧:0
    RX + Tx 65-127八位位组帧:0
    RX + Tx 128-255八位位组帧:0
    Rx + Tx 256-511八位位组帧:0
    RX + Tx 512-1023八位位组帧:0
    Rx + Tx 1024个八位位组帧:0
    净八位位组:0
    帧溢出的 RX 起始:0
    帧的 RX 中间溢出:0
    RX DMA 超限:0
    RX DMA 通道:head_enqueue:1.
    RX DMA 通道:tail_enqueue:63
    RX DMA 通道:PAD_ENqueue:0
    RX DMA 通道:错误排队:0
    RX DMA 通道:DESC_ALLOC_FAIL:0
    RX DMA 通道:PAD_ALLOC_FAIL:0
    RX DMA 通道:runt_receive_buf:0
    RX DMA 通道:runt_transmit:buf:0
    RX DMA 通道:empty_dequeue:0
    RX DMA 通道:BUSY_DEqueue:0
    RX DMA 通道:Good:Dequeue:0
    RX DMA 通道:要求:0
    RX DMA 通道:teardown_dequeue:0
    TX DMA 通道:head_enqueue:0
    TX DMA 通道:tail_enqueue:0
    TX DMA 通道:PAD_ENqueue:0
    TX DMA 通道:排队错误:0
    TX DMA 通道:DESC_ALLOC_FAIL:0
    TX DMA 通道:PAD_ALLOC_FAIL:0
    TX DMA 通道:runt_receive_buf:0
    TX DMA 通道:runt_transmit;buf:0
    TX DMA 通道:empty_dequeue:0
    TX DMA 通道:BUSY_DEqueue:0
    TX DMA 通道:Good Dequeue:0
    TX DMA 通道:要求:0
    TX DMA 通道:teardown_dequeue:0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    根据您的问题正确、必须检测到链接。 基于上面显示 PHY 未被识别且未检测到链路的日志捕获、我建议查看 PHY 功能。 要检查的一些问题是、如果连接方看到检测到链路、PHY 是否正常复位、PHY 自举是否正确。 您可能需要向支持您选择的 PHY 的以太网论坛提交帖子以了解其他信息。

    此致、
    Schuyler