你好。 我们将推出基于 NXP LS1046A 的定制板。 我们有的
4个 TI DP83867。 其中2个使用 SGMII、以1Gb 和的方式进行连接
它们工作正常(U-Boot 中至少可以使用简单的 ping / DHCP)。
另外2个使用 RGMII、连接方式为100Mb (4根导线)。
U-Boot ti.c 驱动程序用于 PHY:
source.codeaurora.org/.../ti.c
在 ping 测试期间、RGMII 接口在(首次执行时)发生故障
时间):
```μ A
=> ping 192.168.10.1
使用 FM1@DTSEC3器件
超过 ARP 重试计数;重新开始
Ping 失败;主机192.168.10.1不活动
```μ A
和 AT (对于连续执行):
```μ A
=> ping 192.168.10.1
使用 FM1@DTSEC3器件
FM1@DTSEC3:TX 错误、Txbd->STATUS = 0x8800
FM1@DTSEC3:TX 缓冲区未就绪、Txbd->STATUS = 0x8800
FM1@DTSEC3:TX 缓冲区未就绪、Txbd->STATUS = 0x8800
FM1@DTSEC3:TX 缓冲区未就绪、Txbd->STATUS = 0x8800
超过 ARP 重试计数;重新开始
Ping 失败;主机192.168.10.1不活动
```μ A
MDIO 与芯片的通信完美无瑕。 RGMII 模式和 PHY
验证地址。
出于测试目的、我们准备了隔离式网络。 我们具有支持100Mb 的功能
连接伙伴在另一端连接 我们能够将数据包转储到另一个上
但我们还无法通过 RGMII 接口发送单个数据包。
我们已经在 PHY 和的 MII 上尝试了远端反向回送
从链路伙伴发送的数据包被接收回。
我怀疑问题出在 MAC-PHY RGMII 接口上。
我们尝试了各种 TX_DELAY 值、但没有成功。
我们已检查 RGMII 模式是否已启用:
*自举_STS1 (0x0E)寄存器:
```μ A
=> MII 写入0 000d 001f
=> MII 写入0 000e 006E
=> MII 写入0 000d 401F
=> MII 读取0 000e
0000
```μ A
- RGMII 绑定到启用(位12为0)
- SGMII 绑定到禁用(位11为0)
-地址为0x0 (位0:1)
* PHYCR (0x10)寄存器
```μ A
MII 写入0 000d 001f
MII 写入0 000e 0010
MII 写入0 000d 401F
MII 读数0 000e
4040.
```μ A
- SGMII 被禁用(位11为0)
* RGMIICTL (0x32)寄存器
```μ A
MII 写入0 000d 001f
MII 写入0 000e 0032
MII 写入0 000d 401F
MII 读数0 000e
00D3
```μ A
- RGMII 被启用(位7为1)
* 0x6f 寄存器转储:
=> MII 写入0 000d 001f
=> MII 写入0 000e 006F
=> MII 写入0 000d 401F
=> MII 读取0 e
0000
标准寄存器:
* 0x00 - 0x1f 寄存器转储:
```μ A
=> MII 读数0-1f
ADDR=00 RE=00 DATA=1140
ADDR=00 reg =01 DATA=796D
ADDR=00 REG=02 DATA=2000
ADDR=00 reg =03数据=A231
ADDR=00 reg =04数据=01E1
ADDR=00 reg =05 DATA=C1E1
ADDR=00 reg =06数据=006F
Addr=00 reg =07 data=2001
ADDR=00 reg =08数据=6801
ADDR=00 reg =09数据=0200
ADDR=00 REG=0A 数据=0C00
ADDR=00 REG=0b DATA=0000
ADDR=00 reg =0c 数据=0000
ADDR=00 reg =0d 数据=0000
ADDR=00 REG=0e DATA=0000
ADDR=00 REG=0f DATA=3000
ADDR=00 reg =10数据=4040
ADDR=00 reg =11数据=7C02
ADDR=00 reg =12数据=0000
ADDR=00 reg =13数据=9C40
ADDR=00 reg =14数据=29C7
ADDR=00 reg =15数据=0000
ADDR=00 reg =16数据=0000
ADDR=00 reg =17数据=0040
ADDR=00 reg =18数据=6150
ADDR=00 reg =19数据=4444
ADDR=00 reg =1a 数据=0002
ADDR=00 reg =1b DATA=0000
ADDR=00 reg =1c 数据=0000
ADDR=00 reg =1D 数据=0000
ADDR=00 reg =1e data=0002
ADDR=00 reg =1f DATA=0000
```μ A
通过寄存器0x11、我们可以验证自动协商速度是否为100Mb。
在寄存器0x0/0x1中、我们可以看到自动协商已启用、并且
链路已建立。 链路 LED 也处于活动状态。
欢迎提供有关如何解决此问题的任何其他提示。
谢谢
随附的是 RGMII 接口之一的原理图中的相关页面: 





