福州瑞芯微电子有限公司5以太网常见问题排查5.13.10版本Kernel部分
5.1.1phy寄存器读写调试系统中提供以下节点(以rk3288为例,其它芯片可通过查找关键字“phy_reg”找到具体路径)供phy寄存器读写:
/sys/devices/ff290000.eth/stmmac-0:01/phy_reg/sys/devices/ff290000.eth/stmmac-0:01/phy_regValue
5.1.2以太网无法正常工作1如果kernel打印以下异常log:
stmmac_open:DMAinitializationfailed
这种情况只有在“clock_in_out=\A)需要确认GMAC工作主时钟MAC1_CLK是否有从PHY供给主控:
使用100MPHY时,其频率是50M使用100MPHY时,其频率是125M
B)如果有clock,需要确认clock的幅度是否达标,一般需要3.0V以上。
2如果出现PHY初始化异常类似如下异常打印:
stmmac_open:CannotattachtoPHY或
eth0:NoPHYfoundPHY正常识别会有如下打印:
eth0:PHYID20005c90at1IRQ0(stmmac-0:01)active
内部资料,不得扩散Page21of28福州瑞芯微电子有限公司A)需要先确认硬件是否有异常,对比RK发布的《以太网PHY参考电路V1.0_20150129》
B)需要确认PHY的供电是否正常,复位信号是否正常C)还可以尝试增加以下delay时间试试
+++b/drivers/net/ethernet/rockchip/gmac/stmmac_platform.c@@-358,10+358,10@@staticintphy_power_on(boolenable)//resetif(gpio_is_valid(bsp_priv->reset_io)){gpio_direction_output(bsp_priv->reset_io,bsp_priv->reset_io_level);-+mdelay(5);mdelay(100);gpio_direction_output(bsp_priv->reset_io,!bsp_priv->reset_io_level);}-+}else{//pulldownreset3mdelay(30);mdelay(100);IOMUX确认
注意:GMACRGMII接口与其它功能脚利用,需要确认IOMUX状态是否正确,可通过io命令直接查看GRF寄存器确认:RK3128:与lcdc0复用
io-40x200080cc
200080cc:0000ffffio-40x200080d0
200080d0:000000ffio-40x200080d4
200080d4:0000000c
//低4bit//低8bit//低16bit
RK3288:与flash1及sdio1复用
io-4-l200xFF77002C
内部资料,不得扩散Page22of28福州瑞芯微电子有限公司ff77002c:ff77003c:
400003333000033330000333300003333//低16bit00000033
//低8bit
确认GMAC工作主时钟是否正常
确认时钟是否是有正常产生,时钟具体频率及来源如下表:
PHY
RK3288RK3288RK3128RK3128
1000M100M
(建议使用PHY提供)
1000M100M
PHYRK3128
125M50M
时钟来源PHYRK3288或PHY
50M时间频率125M
clock的幅度是否达标,一般需要3.0V以上
主控端可通过以下clocktree信息:catd/clk/clk_summary来确认clock是否设置正确(注意对应的enable_cnt需要为1,这才表示这个clock已经使能)
例如由PHY提供125Mclock:
clockgmac_clkin
例如由主控提供50Mclock:
clockclk_mac_pll
enable_cnt1
prepare_cnt1
rate50000000
enable_cnt1
prepare_cnt
1
rate125000000
注意:如果出现2小节中提到的“PHY初始化异常”,那么clock会被disable掉,所以看到的clock会是以下情况(对应的enable_cnt为0):
clockclk_mac_pll
enable_cnt0
prepare_cnt0
rate
50000000
可加以下调试代码,异常时不去关clock
内部资料,不得扩散Page23of28福州瑞芯微电子有限公司+++b/drivers/net/ethernet/rockchip/gmac/stmmac_platform.c@@-219,6+219,7@@staticintgmac_clk_enable(boolenable){
structbsp_priv*bsp_priv=&g_bsp_priv;phy_iface=bsp_priv->phy_iface;+
enable=1;if(enable){
if(!bsp_priv->clk_enable){
5如果出现无法接收RX数据busyboxifconfigeth0eth0
Linkencap:Ethernet
HWaddr7E:13:69:61:1C:32
inet6addr:fe80::7c13:69ff:fe61:1c32/64Scope:LinkUPBROADCASTRUNNINGMULTICAST
MTU:1500
Metric:1
RXpackets:0errors:83dropped:0overruns:0frame:83TXpackets:11errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:0(0.0B)Interrupt:51
那么可能是clock精度存在问题,、晶体的频偏要求在10ppm以内。
TXbytes:2188(2.1KiB)
5.1.3USB以太网异常排查5.1.3.1以太网无法使用问题排查
第一步:
USB以太网接到通过USBHOST口连接到主控,先确认是否有以下USB设备枚举到的打印:
usb2-1:newhighspeedUSBdevicenumber2usingusb20_hostusb2-1:NewUSBdevicefound,idVendor=0bda,idProduct=8152//这里打印出枚举到的设备信息
内部资料,不得扩散Page24of28福州瑞芯微电子有限公司usb2-1:NewUSBdevicestrings:Mfr=1,Product=2,SerialNumber=3usb2-1:Product:USB10/100LANusb2-1:Manufacturer:Realtekusb2-1:SerialNumber:00E04C360001EthernetDevice,00:e0:4c:36:00:01
如果没有打印以上信息,证明USB枚举失败,需要排查:
1)USBHOST口工作是否正常,可以接鼠标等设备测试;2)USBHOST口供电是否足够;
3)如果是接在HUB,确认HUB工作是否正常;第二步:
如果USB设备被正确枚举到了,那么可通过以下以下命令查看eth0接口状态:
busyboxifconfigeth0eth0Linkencap:EthernetHWaddr00:E0:4C:36:00:01//确认是否有获取到以下IP地址inetMask:255.255.255.0inet6addr:fe80::2e0:4cff:fe36:1/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1addr:192.168.0.120Bcast:192.168.0.255RXpackets:577errors:0dropped:0overruns:0frame:0TXpackets:465errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:751796(734.1KiB)TXbytes:39502(38.5KiB)如果没有正确获取到IP地址,那么可能是所在局域网有问题,可以在设置中设置成静态IP地址试试。
内部资料,不得扩散Page25of28