This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DP83TC812S-Q1: 网络eth0: Link is Up,eth0: link becomes ready,但网络ping不通

Part Number: DP83TC812S-Q1
Other Parts Discussed in Thread: DP83TC812R-Q1

芯片 :DP83TC812RRHARQ1;

调试系统:linux-5.10.y 目前将调试情况汇总如下:

验证步骤:

1、在TI官网下载 dp83tc812驱动合入代码中;

2、使用RGMII通信,测量硬件phy芯片VDD VDDIO 供电正常,外部晶体输出clkout 25MHz,TX和RX Clock都是25MHz,MDI正常,PHY寄存器读写正常;

3、通过ifconfig eth0上打开网口后,通过寄存器可以读到phy_id : 0x2000a271,strap 通过寄存器0x45D 读到的值是: 0x40A0(0x0080),通过log 看到“ethernet eth0: Link is Up - 100Mbps/Full - flow control off IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready”;

4、前面步骤的状态都感觉正常,但网络不通,ping一直超时。

存在问题:

  • 寄存器转储比较

其中,“红色”和“黄色”是两块同样板子上读取的数据与理论值之间存在的差异。

(1)寄存器0x045D的Strap为0x40A0(0x0080),与理论值“0x408C”存在差异,按照排查手册提到的《验证 Strap 配置》,连接到 PHY 的所有 MAC 引脚都置于了高阻态,但Strap采用值还是异常,请问是什么原因导致?

2 Strap验证配置

(2)寄存器0x1834,读取的值“0x8001”与理论值“0x8000”存在差异,而且这个状态是只读的,这个值受什么影响,为什么会不对?

3 0x1834寄存器比特位简介

(3)在指导手册《snla389a_ Software Configuration.pdf》中提到配置0x0834寄存器为“0x8001”,但在规格书中《dp83tc812r-q1.pdf》并没有找到0x0834寄存器。请问0x0834和0x1834是否同一寄存器,如果0x0834寄存器是0x1834寄存器,那bit[0:3]是只读模式,根本写不进“1”,这个问题怎么解决?

 

图4 《snla389a_ Software Configuration.pdf》中的软件配置截图

图5 《dp83tc812r-q1.pdf》寄存器介绍

(4)环回测试时,通过写入 0x16 = 0x0104,PHY就会“link down”,请问这个是这款芯片的原本设计就是这样吗?如果不是,请问是什么原因导致的?

(5)有数据发送,但是没有数据接收,ping 不通。

图6 设备中TX_RX统计