RTL8211E网口芯片在Uboot下调试问题

发布于:2023-01-04 ⋅ 阅读:(484) ⋅ 点赞:(0)

RTL8211E网口芯片在Uboot下调试问题

RTL8211E的原理图

原理图参考firefly的开发板,特别注意的是39号引脚RESET外接的2.49K的电阻,这个是用来进行外部的电阻参考的。这个很关键,开始时46号引脚CLK_125输出的频率不是125MHZ,而是62.5MHZ,刚好减少一半,后续在对外围电路进行检查时,发现主要是这个39号引脚焊成4.7k的电阻了,刚好是2.49k的近一半,因此导致这个频率减半。这个问题困扰了两天,刚开始以为是程序问题,后来排查另外一块板子的频率是对的。两相对比后才发现这个地方存在问题。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

uboot下的驱动调试

要改RTL8211e的驱动也不复杂,只要在ubootimx/include/configs/mx6sabre_common.h的文件里设置如下:
在这里插入图片描述
主要是开放REALTEK的驱动注释,并设置好PHY芯片的地址,此处参考原理图,设置为0

  • 然后在板级文件的目录下对网口的相关引脚进行定义,并进行初始化的设置。文件目录为board/freescale/mx6sabresd/mx6sabresd.c,首先是定义引脚

在这里插入图片描述

  • 其次是进行PHY芯片的复位,让主控能够识别到PHY芯片。
    在这里插入图片描述
  • 再者就是进行芯片的初始化的配置,可以利用mdio的协议进行PHY的寄存器的配置。
    在这里插入图片描述
    最后网络的驱动会通过boot.c一步步引导,最终调用以下函数进行网口的初始化。

在这里插入图片描述

问题排查

在完成上述设置,通电后,uboot能顺利读到PHY芯片,并能够通过mii dump 0 1进行寄存器的状态读取。但是在进行ping命令的测试时,则会出现error frame: 0x4ef44e80 0x00000884的问题。
在这里插入图片描述

  • 通过查阅代码看到,应该是进行通信时,读不到数据,那本能的想到时序异常的问题,进一步推测应该是RX_delayTx_delay的问题,因此通过修改原理图中失能RX DELAYTX DELAY。并改变对应的电阻,然后进行测试,变能进行ping通,并且通过DHCP指令获取ip。在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

网站公告

今日签到

点亮在社区的每一天
去签到