最近调试遇到一些问题,T3的两个网口,一个GMAC用的mdio,一个EMAC用的是EMDIO,GMAC一直都正常,EMAC的不停的down,up,会有概率性的UP不起来,PHY的BMCR寄存器被改写成了0x19c0.
怀疑跟MDIO时序有关系,量了GMAC的mdio时序,和EMAC的EMDIO时序,发现GMAC的mdio时序正常,为上升沿采样,而EMAC的时序EMDIO时序异常,为下降沿采样,或者说上升沿时数据跳变。
有没有哪位大神清楚这块的内容的,帮忙一起看看。感谢!
下面是EMAC的EMDIO时序:
下面时GMAC的MDIO时序:
离线
您指的GMAC1是EMAC嘛?共用一个MDIO,不同phy地址是可以的,我们目前是各用各的,量的EMAC的mdio时序有点问题。您知不知道EMDIO和MDIO到底有什么区别?
离线
补充一下,后来又继续量EMDIO,时钟信号是一直都有。有没有大神帮忙分析分析的
离线
目前通过在drivers/net/phy/mdio-sun4i.c驱动中的sun4i_mdio_read函数的开头部分加了一个usleep延时,延时了1微妙,目前反复测试4小时暂未复现该问题。但是对于这个问题还是没有搞明白原因。
离线
这个是gmac的,我这个有问题的是emac的mdio
&gmac0 { phy-mode = "rgmii"; ... tx-delay = <3>; rx-delay = <0>; .... };
调整这两个参数试一试?
离线