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

 

  1.   1
  2.   摘要
  3.   商标
  4. 1德州仪器 (TI) 以太网 PHY 驱动程序
  5. 2以太网 PHY 驱动程序概述
    1. 2.1 了解 Linux 驱动程序类型
      1. 2.1.1 U-Boot 驱动程序
      2. 2.1.2 内核驱动程序
  6. 3驱动程序集成
    1. 3.1 Linux 器件树
    2. 3.2 集成式驱动程序
  7. 4常见终端命令
    1. 4.1 初始化命令
      1. 4.1.1 dmesg | grep -i mdio
      2. 4.1.2 ifconfig
    2. 4.2 功能命令
      1. 4.2.1 Phytool
      2. 4.2.2 ethtool
      3. 4.2.3 强制执行主/从配置
    3. 4.3 诊断命令
      1. 4.3.1 SQI
      2. 4.3.2 TDR
      3. 4.3.3 吞吐量测试 - ping 和 iPerf
  8. 5总结
  9. 6参考资料

dmesg | grep -i mdio

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

注: PHY[n],其中 n 表示 PHY 地址可以不同于 ethxx 表示 PHY 分配到的端口。例如,在分配到端口 eth0 时,PHY 地址可以是 8。