RK3588-UBOOT网络异常修复
野火RK3588开发板
野火的RK3588系列开发板有两款,分别是搭载RK3588S的LUBANCAT4和搭载RK3588的LUBAN-CAT5,笔者使用的是RK3588S的,即LUBAN-CAT4,实物如图所示!笔者买回开发板并下载SDK源码在测试过程中发现LINUX内核中100M/1000M的以太网都是正常的;笔者将开发板和100M路由器连接起来的时候发现UBOOT模式下100M网络不正常,1000M网络是正常的。
一. 网络测试思路
由于现在大多数电脑的网口都是1000M的,当把开发板的网线和开发板直连,会被自动协商为1000M的网络;而把开发板和路由器连接起来(大部分路由器的网口是100M的),会被协商为100M的网络!
二. LINUX内核启动时网络测试
2.1 1000M网络测试
如上图所示,网络eth0协商的网速是1Gbps/Full,即1000M的全双工,可以看到ping的时候是正常的!!!
2.2 100M网络测试
如上图所示,网络eth0协商的网速是100Mbps/Full,即100M的全双工,可以看到ping的时候也是正常的!!!
三. UBOOT模式下网络测试
3.1 1000M网络测试
可以看到1000M的时候网络是能够ping通的,这里虽然没打印网速,但是可以通过调试增加uboot打印,或者看电脑端状态!!
3.1 100M网络测试
可以看到100M的时候网络是不能够ping通的,这里虽然没打印网速,但是可以通过调试增加uboot打印,或者看电脑端状态!!
大多数读者和我一样,把开发板插入到路由器中,然后通过网络引导,这个时候就会发现问题了!!
四. 问题分析
4.1 网络方案分析
根据原理图,可以知道野火的RK3588使用的是GMAC1来实现网络的介质层,然后外接一个JL2101的PHY芯片,这个是一家叫鲸落的半导体公司吧!!
4.2 PHY驱动分析
由于PHY的驱动程序比较简单,通过对比linux内核和uboot的驱动发现PHY驱动是正确的,有兴趣的老哥也可以分析下PHY的驱动程序,uboot的代码较少,内核的稍微多点!
4.3 MAC驱动分析
由于MAC的驱动程序比较复杂,加上MAC是瑞芯微提供的通常不会有问题吧,但是没办法只能查下去!!通过对比linux内核和uboot的驱动发现,果然是RK的MAC驱动有问题的,有兴趣的老哥也可以分析下MAC的驱动程序!
最后黄天不负有心人,我定位到是RK官方UBOOT的问题,是因为UBOOT协商为100M的时候,RK的uboot仍然把TX_CLK配置为125MHZ,即按照1000M网络的方式去配置,这显然不合理!
我修改了下面的地方,UBOOT的100M和1000M网络都正常了!
解决方法:
drivers/net/gmac_rockchip.c 通过UBOOT源码找到这个文件!!
然后搜索函数 rk3588_set_rgmii_speed
拖到函数结尾处,删除下面两行代码,如图的712~714行!!!
5. 重新测试网络100M/1000M
可以发现修改之后,无论uboot和linux内核模式下,100M/1000M网络都是正常的!!