转载地址:https://blog.youkuaiyun.com/charliewangg12/article/details/39697287
首先要给88E1111复位信号信号,复位引脚电平 高电平->低电平->高电平保持,低电平要维持10ms以上,
可以给15ms。
复位之后,最好的情况就是LED_LINK引脚的LED点亮,连接网线后电脑这边的本地连接由叉号变为正在
连接,LED_RX和LED_TX引脚连接的LED灯也会闪。如果这样的话,证明你的板子网口这一块的硬件电路
都是正常的,硬件工程师是下了功夫的在CONFIG0-CONFIG6的配置上。
很遗憾,我的板子LED_LINK没有亮,那只有通过MDIO接口配置里面的寄存器了。读状态寄存器可以发现,
自动协商没有完成Auto-Negotiation process not complete,link down。
解决方案:重点关注的几个寄存器R0,R4,R9,R20,R27。
首先确保自动协商Auto-Negotiation Enable,交叉线使能Crossover Enable,
光纤/电缆自动选择使能 Enable fiber/Copper auto selection。这几个都是硬件配置了的,可以通过读寄存器
确认一下。我的这些都没问题,问题出在R4[9:5],这几个位置1,advertise,PHY自协商的时候告诉对方我
支持这种工作方式。我的PHY在这几个位置位之后,软件复位芯片,LIINK灯马上亮了。R4的这几位是支持
10M,100M的全双工,半双工。R9是设置1000M的全双工,半双工支持。
网口通了,下一步就是如何让它支持tftp通信了。我的板子ping之后,显示接口not alive。现象是LINK_RX和
LINK_TX的灯都亮了,表明有数据收发,但是ping不同,说明数据收发有误。通过分析uboot里面程序,发现
大多数PHY都会使能发送延迟,不同的PHY这个寄存器位置不同。88E1111是在R20[1],使能之后还没好。
又重新把硬件配置的那些位打印出来重新分析,问题出在R27[3:0],硬件复位之后的配置时0011,RGMII to Fiber,
改为1011,RGMII to Copper。软件复位之后,ping正常。所以一旦你一定要读出这个寄存器来查看一下是否
和你期望的一致。
通过这几个寄存器配置,一切正常。