您好,
我们设计了一款使用 DP83869HM 作为 RGMII 与铜质接口的定制板。 所有配置都通过捆扎来完成,将设备设置为铜质 RGMII,带自动协商的1000Base-T/100Base-TX/10Base-Te,通告的1000/100/10和自动 MDI-X 它与寄存器绑带_STS (0x6E)上读取的值匹配,该值全部为0x00
我们面临着几个无法解决的问题。
第一个问题是,在启动过程中以及最终确定 PHY 自动协商后,我们将面临几个链路断开/打开周期,直到它稳定。 有时链路稳定在1 Gb,有时通过下降到100 Mb 稳定,有时根本无法稳定。 第二个问题只发生在我们正在测试的一个主板上,那就是在使用期间,链路会断开,从而重新启动自动协商,或者有时主板会自行重新启动。
当链路状态变差且链路状态恢复后,我们会读取 PHY 寄存器以尝试查找问题,除了寄存器 GEN_Status1 (0xA)上的寄存器外,没有其他真正突出的东西会将位12 (REM_RCVR_STATUS)显示为0或远程接收器不正常
我们认为,除了远程接收器不正常之外,可能还会发生其他事情,因为我们已经尝试了不同的合作伙伴(调制解调器,路由器,交换机),电缆(CAT5a,CAT6, 7类,8类)和不同的主板,它们都经历了相同的行为。
我们为问题1找到的一种黑客式解决方案是,如果我们在完成自动协商后加上50毫秒的延迟,并且在阅读链接状态寄存器之前,我们立即以1 GB 的速度获得稳定的连接,并且我们不确定50毫秒的延迟是否可以解决该问题。 但是,其中一个主板在使用过程中可能在某个时间点仍有链路断开
有什么建议?
注:我们不使用 Linux,而是使用 mAbassi RTOS
下面是我们看到的注册表
链路断开后:
[0x0]- 0x1000
[0x1]- 0x7969
[0x2]- 0x2000
[0x3]- 0xA0F1
[0x4]- 0x1E1
[0x5]- 0xCDE1
[0x6]- 0x6f
[0x7]- 0x2001
[0x8]- 0x6001
[0x9]- 0x300
[0xA]- 0x2800
[0xD]- 0x401F
[0xE]- 0x0
[0xF]- 0xF000
[0x10]- 0x5048
[0x11]- 0xA802
[0x12]- 0x0
[0x13]- 0x1C40
[0x14]- 0x29C7
[0x15]- 0x0
[0x16]- 0x0
[0x17]- 0x40
[0x18]- 0x6150
[0x19]- 0x4444
[0x1A]- 0x2
[0x1E]- 0x12
[0x1f]- 0x0
[0x25]- 0x480
[0x2C]- 0x141F
[0x2D]- 0x0
[0x2E]- 0x221
[0x31]- 0x10B0
[0x32]- 0xD0
[0x33]- 0x0
[0x37]- 0x0
[0x39]- 0x0
[0x3A]- 0x0
[0x43]- 0x7A0
[0x4F]- 0x200
[0x6E]- 0x0
[0x86]- 0x77
链路恢复后:
[0x0]- 0x1000
[0x1]- 0x796D
[0x2]- 0x2000
[0x3]- 0xA0F1
[0x4]- 0x1E1
[0x5]- 0xCDE1
[0x6]- 0x6D
[0x7]- 0x2001
[0x8]- 0x6001
[0x9]- 0x300
[0xA]- 0x3800
[0xD]- 0x401F
[0xE]- 0x0
[0xF]- 0xF000
[0x10]- 0x5048
[0x11]- 0xAC02
[0x12]- 0x0
[0x13]- 0x400
[0x14]- 0x29C7
[0x15]- 0x0
[0x16]- 0x0
[0x17]- 0x40
[0x18]- 0x6150
[0x19]- 0x4444
[0x1A]- 0x2
[0x1E]- 0x12
[0x1f]- 0x0
[0x25]- 0x480
[0x2C]- 0x141F
[0x2D]- 0x0
[0x2E]- 0x221
[0x31]- 0x10B0
[0x32]- 0xD0
[0x33]- 0x0
[0x37]- 0x0
[0x39]- 0x0
[0x3A]- 0x0
[0x43]- 0x7A0
[0x4F]- 0x200
[0x6E]- 0x0
[0x86]- 0x77