E2000 RGMII0通讯异常问题总结

文摘   科技   2024-07-25 17:03   江苏  


欢迎点击蓝字关注我

扫二维码回复“加群”加入飞腾爱好者交流群



最近让新来小朋友做了一款E2000Q的板卡,使用了E2000Q上的两个RGMII资源,外接YT8521转出了电口。

但是他调试中遇到了一个比较奇怪的问题,两套YT8521的电路都一样,但是一路通一路不通。

也就是框图中MAC2(芯片RGMII0,系统对应eth1)那路网络不通,图中MAC3(芯片RGMII1,系统对应eth2)那路网络能测通。

〇、故障状态

把两路网线都插好。异常的情况下进入到系统,使用ethtools查看link状态。可以发现RGMII0那路是no link的状态,RGMII1那路是可以查到link状态的。

在系统下使用裕泰给的工具读取PHY的状态,需要读的地址为0xa001。

因为读写PHY数据需要先传入要读写的地址到PHY寄存器0x1E,再操作读写数据在PHY寄存器0x1F。所以我们要先给0x1E中配入地址0xa001,再去从0x1F里去取数据。

操作记录如下(工具我重命名为ioctl.dat了,裕泰给的叫ioctl):

可以看出来,正常的网口(上图右边eth2)bit[2:0]=000的工作模式为UTP TO RGMII,但是异常的网口(上图左边eth1)bit[2:0]=001工作模式为FIBER TO RGMII,说明PHY的工作模式就不对的。

那下面就开始进行排查。

一、原理检查

首先E2000芯片端接口,使用了MAC2、MAC3,引出了RGMII0和RGMII1信号,MDIO也没有接错。

RGMII0和RGMII1的两个PHY电路是一样的。YT8521端的配置电阻也没有问题,是配置的UTP<->RGMII。

电路这里没有啥问题。那上面读取PHY工作模式不知道为啥只有RGMII0是FIBER TO RGMII,和硬件配置的不一致。

二、layout走线检查

根据如下布线要求复查layout走线,也符合要求,没有发现有啥问题。

三、固件检查

E2000的固件中需要使用windows工具配置低速管脚配置,同时需要在linux下的打包工具配置芯片。

低速管脚配置,查看配置的是对的。

打包工具里查看rgmii配置,也是对的。

四、抛开系统排查

为了排除掉系统的影响,我们在uboot下进行了ping测试,这样对这个现象影响的就只有硬件和固件了。

但是发现也是RGMII0不通,RGMII1能ping通。

五、PHY工作模式配置排查

综合上面看,最终还是认为应该因为PHY的工作模式状态有异常导致的。

结合PHY的说明,PHY是在复位的时候去锁存配置,那复位拉起来的时候去生效了。

那怀疑,是不是这里复位有异常?因为这几个配置管脚是和E2000也连一起了的。是不是拉起的时候E2000的RGMII对PHY的这个配置有了一些影响呢。

随即展开对E2000的POR复位和PHY的RESET复位的排查。

板子上这两个复位是由FPGA控制的。现在他的处理方式是POR_N和RESET_N同时拉起,也就是E2000和YT8521同时解复位开始工作。这不是很合理。

因此修改FPGA,将PHY的复位RESET_N提前拉起来,提前拉起来100ms,之后再拉起来E2000的复位POR_N。

再进行测试,RGMII0也通了,问题解决了。

总结

原因是电源管理逻辑里,把E2000的复位POR_N和PHY的复位RESET_N,同时拉起来进行了解复位。导致E2000 RGMII0的IO引脚状态影响了PHY的工作模式配置,由设计的UTP TO RGMII变为了FIBER TO RGMII,导致PHY工作不符合设计需求,造成了E2000 RGMII0网络通信异常。

解决方案就是提前拉起PHY的复位RESET_N,100ms后再拉起E2000的复位POR_N

这样也是符合逻辑的,就是外设应该先准备好工作状态,CPU再开始工作。希望通过这次问题,我们的小朋友再进行设计的时候能多加注意了。



欢迎点击“点赞、收藏、在看”,分享给更多人看到

扫二维码回复“加群”加入飞腾爱好者交流群


往期文章

交流群:
PSPA:
硬件:
固件:
调试:

欢迎飞腾爱好者加入微信交流群。 群内大家可以在群内交流遇到的问题,分享自己的调试心得。 希望大家共建飞腾友谊!

乌拉大喵喵
建立了飞腾爱好者技术交流群,公众号文章扫码进群,或私信加vx进群。
 最新文章