imx6ull 移植 ksz8041 以太网 PHY芯片

时间:2024-03-16 17:25:36

imx6ull 移植 ksz8041 以太网 PHY芯片

调试了一天,痛苦的1天,不过值得庆幸的是,初步调通了。

1.我把LAN8720修改为KSZ8041,,因为我公司没有LAN8720, 大量使用的是KSZ8041,所以只能硬着头皮把PHY换为KSZ8041

2. 可以预料到的结果: 板子焊好之后,网口不通,  是先调uboot呢,还是先调内核呢?我没有经验,左一斧头,右一耙子,最后突然发现uboot中有一个MII命令,可以读取PHY REG中的内容,太好了,那就从uboot下手,(事实证明这是正确的一步)

imx6ull 移植 ksz8041 以太网 PHY芯片

imx6ull 移植 ksz8041 以太网 PHY芯片

3.KSZ8041的地址, 原开发板子的LAN8720的地址简单,一个配置为1,一个配置为0,于是我就比葫芦画瓢(悲伤的开始),把KSZ8041的地址也设置为1个1,1个0,  但是怎么都调试不通,一个偶然的机会我把2个KSZ8041之间的MDIO MDC线 割开了,然后就通了一个。

以此为契机,我详细的分析了KSZ8041的数据手册,发现PHY地址只能是从1~7,不能是0,(0我也试了,确实不行)。那我之前比葫芦画瓢就失败了,必须把那个之前想设置为0的KSZ8041重新配置PHY地址。 跳线,把下面高亮的引脚引出来,接到高电平上,使之PHY地址设置为3,

imx6ull 移植 ksz8041 以太网 PHY芯片

跳完线之后,上电进入uboot,mii info 顺利的读取到这个KSZ8041的信息。

imx6ull 移植 ksz8041 以太网 PHY芯片

令我疑惑的是,为什么会有0地址的信息呢,我猜,KSZ8041地址是1到7,但0这个保留地址也是有响应 的,(只是猜测)

基本就完成了在imx6ull上移植ksz8041,明天把设备树中的ETH1的PHY地址也修改为3就,应该就大功告成了!!

需要注意的:1.imx6ull给PHY提供的是50mhz的时钟,只要时钟正确,PHY模式(RMII)配置正确,接上网线,就可以点亮PHY芯片上的指示灯, 我的板子焊好之后,就可以点亮指示灯,ifconfig,也可以识别到2个网口,eth0 eth1,但由于MDIO接口的问题,imx6ull并没有通过MDIO读出PHY正确的状态,(实际已经自协商100M成功),这里印证了一点,linux中,是通过MDIO接口来获取PHY的状态的,只有这一个途径。必须正确配置MDIO接口。

2 MII指令如果读出的是FF,说明可能PHY ADDR不正确, 或者PHY没有正确配置。