rk356x gmac 问题分析

1 DMA Initialization Failed


如果 GMAC 的驱动开机 log 上出现打印:  DMA engine initialization failed ,可以认为是 GMAC
的工作时钟出问题了。先测量时钟引脚是否有时钟,时钟频率以及幅度等指标是否正常,主要确认以下
几个方面:
IOMUX 出错,检查时钟脚寄存器值是否正确
时钟方向以及配置与硬件不匹配,参考本文第四章节的时钟设置
检查 clock tree 和 CRU 寄存器,确认时钟频率大小和时钟是否有使能


2 PHY 初始化失败


如果 GMAC 的驱动开机 log 上出现打印:No PHY found 或者 Cannot attach to PHY,表示找不到 PHY。
驱动会通过 MDIO 先读取 PHY 的 ID,可以测量 MDC 和 MDIO 波形,波形是否正常,该总线类似于
I2C,MDC 频率要求是小于 2.5M。一般来说,找不到 PHY 有以下几个原因:
检查 MDC/MDIO IOMUX 寄存器值是否正确
PHY 供电是否正常
Reset IO 配置不正确
Reset IO 时序不满足 PHY datasheet 要求,不同 PHY 的时序要求不一致,具体配置参考本文 DTS 章

测试 MDIO/MDC 波形是否异常,其中 MDC 时钟频率要求小于 2.5M

3 Link 问题


如果出现了 Link 问题,有个排除法,即将 MDC/MDIO 与主控断开,与电脑直连,查看电脑端是否有同
样的问题,以此排除软件上的干扰,那么需要重点排查下硬件上的影响,先测试 TXN/P 以及 RXN/P 是
否有 Link 波形。
如果不断出现 Link up/Link down,可能原因 PHY 收到了错误的数据,
EEE 模式下,发送的波形在 delayline 配置错误的情况下可能会导致不断 link up/down
供给 PHY 的时钟不对也会导致该问题


4 数据不通


首先排查一下是否是 TX 问题,或者 RX,还是二者都有问题。


4.1 TX


通过 ifconfig -a 查看 eth0 节点的 TX packets 是否在不断增加,如果为0,则有可能网线没有 link 上。通过
查看节点可以看到网线是否是连接上的,carrier 为1表示是 link up,反之 0 为 link down。例如 RK3328:
console:/ # cat /sys/devices/platform/ff550000.ethernet/net/eth0/carrier
1
假设 TX packets 是在不断增加,表示 TX 数据在 GMAC 有发出数据。
将板卡与 PC 连在同一个局域网内,在板卡上 ping PC,同时在 PC 端通过抓包工具(比如 Wireshark)抓
包查看,如果有抓到板卡发过来的数据,表示 TX 数据是通的。如果没有抓到,需要确认 TX 在哪个链
路位置上出现了异常,可以测试 GMAC 的 TX Clock 与 TX Data 的波形,来排除是 MAC 还是 PHY 出现
了问题。MAC 可以检查以下几个方面:
检查 TX Clock/TX Data 的 iomux
TXC 时钟是否正确
RGMII 模式时,Tx Delayline 配置是否正确
PHY 端也可以测试 PHY 的 TXN/P 信号确认 PHY 是否有数据发出;对于不同的 PHY 来说,其配置可能
是不一样,具体需要查看其 Datasheet。


14.2 RX


通过以上排查确定不是 TX 问题,重点排查 RX;连接上网线后通过 ifconfig -a 查看 eth0 节点的 RX
packets 是否在不断增加,如果为0,表示 GMAC RX 没有收到数据
同样可以测试 PHY 的 RXN/P,以及 GMAC 的 RX Clock/RX Data,来排除是 MAC 还是 PHY 出现了问
题。MAC 可以检查以下几个方面:
检查 RX Clock/RX Data 的 iomux
RXC 时钟是否正确
RGMII Tx Delayline 配置是否正确
RGMII 模式时,Rx Delayline 配置是否正确
假设 TX packets 是在不断增加,但以太网还是不正常通讯,则有可能是以下原因:
RMII 模式下 MAC 和 PHY 的参考时钟不是同一个
PHY 模式配置不对,例如硬件上配置成了 MII 模式
eth0 Link encap:Ethernet HWaddr 16:21:8d:d9:67:0b Driver rk_gmac-dwmac
inet6 addr: fe80::c43d:3e5d:533:b7ea/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:2848
Interrupt:45
eth0 Link encap:Ethernet HWaddr 16:21:8d:d9:67:0b Driver rk_gmac-dwmac
inet6 addr: fe80::c43d:3e5d:533:b7ea/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:341 errors:0 dropped:0 overruns:0 frame:0
TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:48928 TX bytes:3741
Interrupt:355


5 TX queue0 timeout


认为是 TX 无法发出,一般是控制器异常了,可能是以下几个原因引起的控制器异常:
时钟问题,检查时钟配置是否正确,参考本文第三章节
PHY 时序问题,PHY 的复位时序不对导致 PHY 给的时钟不对
PHY 硬件问题,导致出现了冲突检测,无法发送数据
逻辑电压太低

  • 30
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
为了调试rk3399的gmac驱动记录,首先需要确认设备的连接情况。检查网线是否正常连接到gmac接口,确保与外部网络连接的网线正常。然后,需要查看系统日志,以确定是否有与gmac驱动相关的错误或提示信息。可以使用dmesg命令来查看系统日志,寻找与gmac驱动相关的错误信息。 在确认设备连接和系统日志后,可以尝试重新加载或卸载再加载gmac驱动。可以使用modprobe命令加载或卸载再加载gmac驱动。加载驱动时,可以通过设置modprobe的参数来调试驱动。常用的参数包括verbose、debug以及err_mask等,这些参数可以输出更详细的驱动信息,帮助定位问题。 如果以上方法没有解决问题,可以查阅rk3399和gmac驱动的官方文档,了解更多相关信息。在官方文档中,可以找到驱动的配置选项和参数,以及一些常见问题的解决方法。可以尝试按照官方文档中的建议进行调试。 此外,还可以尝试使用一些网络诊断工具来测试gmac驱动的性能和稳定性。例如,可以使用ping命令来测试网络连通性,iperf命令测试网络带宽,以及wireshark命令来抓取网络数据包进行分析。 在调试过程中,要注意保护设备的安全性,避免对系统或网络造成不必要的损坏。同时,建议备份系统数据,以防止误操作导致数据丢失。 总之,对于rk3399的gmac驱动调试,需要确认设备连接情况,查看系统日志,重新加载驱动并设置调试参数,参考官方文档解决问题,并利用网络诊断工具进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶知秋yyds

分享是一种美德,感谢金主打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值