rk356x gmac 问题分析

文章详细分析了GMAC驱动中DMAInitializationFailed、PHY初始化失败、Link问题、数据不通(包括TX和RX)以及TXqueue0timeout等问题的原因,涉及时钟设置、IOMUX配置、PHY状态检查和MDIO/MDC信号测试等内容。

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 数据不通<

root@RK356x-Tronlong:~# dmesg | grep -i gmac [ 0.699601] rk_gmac-dwmac fe2a0000.ethernet: Looking up phy-supply from device tree [ 0.699620] rk_gmac-dwmac fe2a0000.ethernet: Looking up phy-supply property in node /ethernet@fe2a0000 failed [ 0.699642] rk_gmac-dwmac fe2a0000.ethernet: no regulator found [ 0.699677] rk_gmac-dwmac fe2a0000.ethernet: clock input or output? (input). [ 0.699694] rk_gmac-dwmac fe2a0000.ethernet: TX delay(0x3c). [ 0.699709] rk_gmac-dwmac fe2a0000.ethernet: RX delay(0x2f). [ 0.699728] rk_gmac-dwmac fe2a0000.ethernet: integrated PHY? (no). [ 0.699777] rk_gmac-dwmac fe2a0000.ethernet: cannot get clock clk_mac_ref [ 0.699803] rk_gmac-dwmac fe2a0000.ethernet: clock input from PHY [ 0.700048] rk_gmac-dwmac fe2a0000.ethernet: init for RMII [ 0.700312] rk_gmac-dwmac fe2a0000.ethernet: User ID: 0x30, Synopsys ID: 0x51 [ 0.700332] rk_gmac-dwmac fe2a0000.ethernet: DWMAC4/5 [ 0.700350] rk_gmac-dwmac fe2a0000.ethernet: DMA HW capability register supported [ 0.700363] rk_gmac-dwmac fe2a0000.ethernet: RX Checksum Offload Engine supported [ 0.700377] rk_gmac-dwmac fe2a0000.ethernet: TX Checksum insertion supported [ 0.700389] rk_gmac-dwmac fe2a0000.ethernet: Wake-Up On Lan supported [ 0.700432] rk_gmac-dwmac fe2a0000.ethernet: TSO supported [ 0.700448] rk_gmac-dwmac fe2a0000.ethernet: Enable RX Mitigation via HW Watchdog Timer [ 0.700463] rk_gmac-dwmac fe2a0000.ethernet: TSO feature enabled [ 2.982096] rk_gmac-dwmac fe2a0000.ethernet eth0: Could not attach to PHY [ 2.982111] rk_gmac-dwmac fe2a0000.ethernet eth0: stmmac_open: Cannot attach to PHY (error: -19) root@RK356x-Tronlong:~# dmesg | grep -i mdio [ 0.858603] mdio_bus stmmac-0: MDIO device at address 0 is missing.
08-08
root@RK356x-Tronlong:~# dmesg | grep dwmac [ 0.698022] rk_gmac-dwmac fe2a0000.ethernet: Looking up phy-supply from device tree [ 0.698042] rk_gmac-dwmac fe2a0000.ethernet: Looking up phy-supply property in node /ethernet@fe2a0000 failed [ 0.698065] rk_gmac-dwmac fe2a0000.ethernet: no regulator found [ 0.698095] rk_gmac-dwmac fe2a0000.ethernet: clock input or output? (input). [ 0.698113] rk_gmac-dwmac fe2a0000.ethernet: TX delay(0x3c). [ 0.698128] rk_gmac-dwmac fe2a0000.ethernet: RX delay(0x2f). [ 0.698146] rk_gmac-dwmac fe2a0000.ethernet: integrated PHY? (no). [ 0.698190] rk_gmac-dwmac fe2a0000.ethernet: cannot get clock clk_mac_ref [ 0.698216] rk_gmac-dwmac fe2a0000.ethernet: clock input from PHY [ 0.698464] rk_gmac-dwmac fe2a0000.ethernet: init for RMII [ 0.698710] rk_gmac-dwmac fe2a0000.ethernet: User ID: 0x30, Synopsys ID: 0x51 [ 0.698729] rk_gmac-dwmac fe2a0000.ethernet: DWMAC4/5 [ 0.698747] rk_gmac-dwmac fe2a0000.ethernet: DMA HW capability register supported [ 0.698756] rk_gmac-dwmac fe2a0000.ethernet: RX Checksum Offload Engine supported [ 0.698770] rk_gmac-dwmac fe2a0000.ethernet: TX Checksum insertion supported [ 0.698783] rk_gmac-dwmac fe2a0000.ethernet: Wake-Up On Lan supported [ 0.698821] rk_gmac-dwmac fe2a0000.ethernet: TSO supported [ 0.698836] rk_gmac-dwmac fe2a0000.ethernet: Enable RX Mitigation via HW Watchdog Timer [ 0.698851] rk_gmac-dwmac fe2a0000.ethernet: TSO feature enabled [ 2.970597] rk_gmac-dwmac fe2a0000.ethernet eth0: Could not attach to PHY [ 2.970618] rk_gmac-dwmac fe2a0000.ethernet eth0: stmmac_open: Cannot attach to PHY (error: -19)
08-08
root@rv1126b:/# dmesg | grep -i eth [ 1.465779] psci: probing for conduit method from DT. [ 2.189779] rk_gmac-dwmac 21c70000.ethernet: IRQ eth_lpi not found [ 2.189967] rk_gmac-dwmac 21c70000.ethernet: supply phy not found, using dummy regulator [ 2.190062] rk_gmac-dwmac 21c70000.ethernet: clock input or output? (output). [ 2.190072] rk_gmac-dwmac 21c70000.ethernet: TX delay(0x30). [ 2.190080] rk_gmac-dwmac 21c70000.ethernet: RX delay(0x28). [ 2.190094] rk_gmac-dwmac 21c70000.ethernet: integrated PHY? (no). [ 2.190107] rk_gmac-dwmac 21c70000.ethernet: cannot get clock mac_clk_rx [ 2.190116] rk_gmac-dwmac 21c70000.ethernet: cannot get clock mac_clk_tx [ 2.190137] rk_gmac-dwmac 21c70000.ethernet: cannot get clock clk_mac_refout [ 2.190146] rk_gmac-dwmac 21c70000.ethernet: cannot get clock clk_mac_speed [ 2.190389] rk_gmac-dwmac 21c70000.ethernet: init for RMII [ 2.190538] rk_gmac-dwmac 21c70000.ethernet: User ID: 0x40, Synopsys ID: 0x51 [ 2.190548] rk_gmac-dwmac 21c70000.ethernet: DWMAC4/5 [ 2.190558] rk_gmac-dwmac 21c70000.ethernet: DMA HW capability register supported [ 2.190565] rk_gmac-dwmac 21c70000.ethernet: RX Checksum Offload Engine supported [ 2.190571] rk_gmac-dwmac 21c70000.ethernet: TX Checksum insertion supported [ 2.190578] rk_gmac-dwmac 21c70000.ethernet: Wake-Up On Lan supported [ 2.190620] rk_gmac-dwmac 21c70000.ethernet: TSO supported [ 2.190627] rk_gmac-dwmac 21c70000.ethernet: Enable RX Mitigation via HW Watchdog Timer [ 2.190634] rk_gmac-dwmac 21c70000.ethernet: TSO feature enabled [ 2.190641] rk_gmac-dwmac 21c70000.ethernet: Using 40/40 bits DMA host/device width [ 2.327238] usbcore: registered new interface driver cdc_ether [ 5.003010] rk_gmac-dwmac 21c70000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0 [ 5.004038] rk_gmac-dwmac 21c70000.ethernet eth0: PHY [stmmac-0:01] driver [Generic PHY] (irq=POLL) [ 5.004332] rk_gmac-dwmac 21c70000.ethernet eth0: No Safety Features support found [ 5.004358] rk_gmac-dwmac 21c70000.ethernet eth0: IEEE 1588-2008 Advanced Timestamp supported [ 5.004604] rk_gmac-dwmac 21c70000.ethernet eth0: registered PTP clock [ 5.006462] rk_gmac-dwmac 21c70000.ethernet eth0: configuring for phy/rmii link mode [ 6.030332] rk_gmac-dwmac 21c70000.ethernet eth0: Link is Up - Unknown/Unknown - flow control off
09-09
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一叶知秋yyds

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

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

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

打赏作者

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

抵扣说明:

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

余额充值