ZHCADI8 December 2023 DP83822H , DP83822HF , DP83822I , DP83822IF , DP83826I
使用终端命令“dmesg | grep mdio”,从软件的角度来看,可能会有几条线索显示是什么原因导致 PHY 无法正常工作。
$ dmesg | grep "mdio"
可能的输出之一如下所示:
$ mdio_bus xxx.ethernet-x: MDIO device at address 8 is missing
该消息指示 PHY 未在 MDIO 总线上找到,这可能是由多个问题引起的。一种常见原因是器件树缺失或不正确,但也可能是由于 PHY 无法正常工作或 SMI 连接不良。
一旦可以在 MDIO 总线上检测到 PHY,另一个常见错误消息如下所示:
$ Generic PHY xxx.ethernet-x: attached PHY driver [Generic PHY]
该消息指示相应 PHY 的驱动程序文件未正确加载或根本不存在,并且加载到通用驱动程序中的 Linux 很可能无法与 PHY 配合使用。在这种情况下,请验证驱动程序是否已成功编译并已添加到 Linux,并确保驱动程序与所使用的 PHY 型号相匹配。
最后,可能会显示如下类似消息:
$ am65-cpsw-nuss c000000.ethernet eth3: PHY [c000f00.mdio:05] driver [TI DP83822] (irq=POLL)
该消息显示 PHY 已加载正确的驱动程序并成功检测到。 运行 ifconfig 验证网络接口是否存在。
当 PHY 成功识别为网络适配器时的示例 ifconfig 输出:
root@j7-evm:~# ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 metric 1
ether 24:76:25:a2:62:8b txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 metric 1
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 82 bytes 6220 (6.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 82 bytes 6220 (6.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
下一步是验证数据传输是否成功。