0
点赞
收藏
分享

微信扫一扫

[ Linux ] 网口相关BUG调试思路

雷亚荣 2022-02-23 阅读 75

在调试网口的过程中会出现很多bug现象,这里我总结了我遇到过的网口问题以及对应的解决思路,希望能给大家一些调试帮助(后续遇到其他的bug会实时更新!!!!!)

文章目录

eth0网络节点无生成

原因分析
确认MAC控制器驱动是否正常加载
eth0节点生成的情况下,MAC控制器也有可能加载不成功

PHY 初始化失败

如果 GMAC 的驱动开机 log 上出现打印:No PHY found 或者 Cannot attach to PHY,表示找不到 PHY。
驱动会通过 MDIO 先读取 PHY 的 ID,可以测量 MDC 和 MDIO 波形,波形是否正常,该总线类似于
I2C,MDC 频率要求是小于 2.5M。
原因分析:

  • 检查 MDC/MDIO IOMUX 寄存器值是否正确
  • PHY 供电是否正常
  • Reset IO 配置不正确
  • Reset IO 时序不满足 PHY datasheet 要求,不同 PHY 的时序要求不一致
  • 测试 MDIO/MDC 波形是否异常,其中 MDC 时钟频率要求小于 2.5M
终端报错:stmmac_open: DMA initialization failed

原因分析
大部分是在clock_in_out = "input"的情况下会出现(一般原因是时钟异常导致)

  • 时钟方向以及配置与硬件不匹配
  • 确认PYH提供的时钟是否正常(频率、电压幅度)
  • IOMUX是否正常
不能识别网线插拔

原因分析

  • 确认数据引脚复用关系
  • 确认PHY是否正常工作
  • 测量MAC_CLK、RX_CLK、TX_CLK引脚信号
    千兆时都为125MHz,百兆时都为25MHz,十兆时为2.5MHz
RX数据为0/TX数据为0

TX数据为0
通过 ifconfig -a 查看 eth0 节点的 TX packets 是否在不断增加,如果为0,则有可能网线没有 link 上。
假设 TX packets 是在不断增加,表示 TX 数据在 GMAC 有发出数据。
将板卡与 PC 连在同一个局域网内,在板卡上 ping PC,同时在 PC 端通过抓包工具(比如 Wireshark)抓包查看,如果有抓到板卡发过来的数据,表示 TX 数据是通的。如果没有抓到,需要确认 TX 在哪个链路位置上出现了异常,可以测试 GMAC 的 TX Clock 与 TX Data 的波形,来排除是 MAC 还是 PHY 出现了问题。
原因分析:

  • 检查 TX Clock/TX Data 的 iomux
  • TXC 时钟是否正确
  • RGMII 模式时,Tx Delayline 配置是否正确

RX数据为0
连接上网线后通过 ifconfig -a 查看 eth0 节点的 RX packets 是否在不断增加,如果为0,表示 GMAC RX 没有收到数据。
原因分析:

  • 检查 RX Clock/RX Data 的 iomux
  • RXC 时钟是否正确
  • RGMII Tx Delayline 配置是否正确
  • RGMII 模式时,Rx Delayline 配置是否正确
RX有数据,但都是错误包

原因分析

  • 125MHz时钟频率是否达标
  • 分析线路干扰
获取IP地址失败

原因分析

  • 调整rx_delay、tx_delay
  • 调整IO驱动强度
  • 尝试手动设置IP地址
连接外网域名地址失败

原因分析

  • 添加DNS配置
网络速率慢

原因分析

  • VDD10_EPHY电压纹波不超过100mv
  • 测量RX_CLK、TX_CLK、MAC_CLK,确保频率和电平正确

解决方法
使用RK提供的iperf工具测试能达到800M(Windows的iperf 对 Linux的iperf)
若使用Ubuntu服务器下载的iperf也只有300M

举报

相关推荐

0 条评论