ZHCAES5 July 2024 DP83822H , DP83822HF , DP83822I , DP83822IF , DP83826E , DP83826I , DP83848-EP , DP83848Q-Q1 , DP83867CR , DP83867CS , DP83867E , DP83867IR , DP83867IS , DP83TC812R-Q1 , DP83TC812S-Q1 , DP83TC813R-Q1 , DP83TC813S-Q1 , DP83TC814R-Q1 , DP83TC814S-Q1 , DP83TG720R-Q1 , DP83TG720S-Q1 , DP83TG721R-Q1 , DP83TG721S-Q1
dmesg 是一个 Linux 命令,显示写入内核的消息。| 符号叫做 pipe 命令,它将一条命令的输出直接连接至另一个命令的输入。grep 是用于查找字符串的 Linux 命令,-i 参数忽略字符串的大小写。总之,dmesg | grep -i mdio 会查找所有写入内核的消息并筛选出包含 mdio 的消息。MDIO 接口是处理器访问 PHY 寄存器的方式。
该命令的目的是,确认驱动程序是否正确加载,或者从软件角度提供有关 PHY 行为错误起因的几条调试线索。
不良输出示例:
davinci_mdio c000f00.mdio: phy[10]: device c000f00.mdio:0a, MDIO device at address 10 is missing.
该消息指示未在 MDIO 总线上找到 PHY,这可能是由多个问题引起的。最常见的原因是器件树缺失或不正确(更多信息参阅节 3.1),但也可能是因为 PHY 无法正常工作或 MDIO 连接不良。
一旦可以在 MDIO 总线上检测到 PHY,另一个常见的错误消息是:
am65-cpsw-nuss c000000.ethernet eth1: PHY [c000f00.mdio:0a] driver [Generic PHY] (irq=POLL)
davinci_mdio c000f00.mdio: phy[10]: device c000f00.mdio:0a, driver unknown
驱动程序未知 和通用 PHY 消息均指示驱动程序文件未正确加载、未编译或完全丢失;Linux 加载的通用驱动程序无法配合 PHY 正常运行。在这种情况下,请验证驱动程序是否已成功编译并添加到 Linux。更多有关该过程的信息,请参阅节 3.2。
最后,良好输出示例如下所示:
root@j7-evm:~# dmesg | grep mdio
davinci_mdio 46000f00.mdio: phy[0]: device 46000f00.mdio:00, driver TI DP83867
am65-cpsw-nuss 46000000.ethernet eth0: PHY [46000f00.mdio:00] driver [TI DP83867] (irq=POLL)
在此处我们可以看到,phy[0] 识别为 DP83867 并分配为端口 eth0