IMX6Q在uboot下调试AR8031网口芯片驱动问题
主要问题
在迅为的IMX6Q开发板进行UBoot调试时,发现网络phy 0 not found PHY reset timed out
问题。但是进文件系统后,网口驱动正常。
问题排查
通过查阅mx6sabresd.c文件(主要是进行板载设备的准备和初始化工作的代码) 和mx6sabre_common.h
(主要是uboot的配置程序,很多环境变量和参数配置的宏定义文件)
详细查阅了网口初始化的整个过程,主要的流程是在board.c
的文件中的initr_net-----entinital-phyconnnect
等函数进行mac与PHY的连接。通过打印函数发现,phy.c的函数读不到phy设备芯片。并且通过电压的测试,发现主控芯片给到的复位电压正常,因此不太可能是硬件异常。
因为在文件系统里面看到徐东正常,因此进入到文件系统,打印网口信息进行查看。命令为ethtool eth0
发现了PHYAD
为4,并不是代码里的0;这时对比芯片手册的地址描述和开发板原理图
可以看到PHYADDRESS0-2,分别为0,0,1,因此对应的地址为PHYADDRESS=00100B(4),因此怀疑此处有异常,将mx6sabre_common.h
里的CONFIG_FEC_MXC_PHYADDR
参数改为4,编译后烧录;
结论
利用现成的网络驱动进行调试,出现这种问题,驱动代码异常的概率较小,在排除硬件电路之后的问题后,很可能出现在参数配置上,因此排查问题一定要从问题异常概率较高处着手。