主题中讨论的其他器件:DP83869
工具与软件:
大家好、我在使用 DP83869 PHY 时遇到了问题
该 Phy 位于定制 Linux 板上。 目标是实现 RGMII 与铜缆100Mbit/s 的连接。
我有两个交换机、8端口和4端口不同品牌。 当我将设备连接到8端口1时、使用 ethtool 一切正常工作、我可以看到它们 phy 设置为100Mbit/s 半双工连接。 此外、如果我通过 USB 转 ETH 适配器将该板连接到 PC、它也可以正常工作。
当我连接到4端口开关(或直接连接到 PC)时、我可以看到开关端口上的缓慢闪烁指示灯且没有连接。 以下是 ethtool 的输出:
eth0的设置:
支持的端口:[ TP MII ]
支持的链路模式:10baseT/half 10baseT/full
100baseT/half 100baseT/Full
1000baseT/half 1000baseT/full
1000baseX/完整
支持的暂停帧使用:仅对称接收
支持自动协商:可以
支持的 FEC 模式:未报告
广播链路模式:10baseT/half 10baseT/full
100baseT/half 100baseT/Full
广播的暂停帧使用:否
广播的自动协商:是
通告的 FEC 模式:未报告
速度:未知!
双面打印:未知! (255)
端口:MII
PHYAD:0
收发器:内部
自动协商:开启
检测到链路:否
我可以使用此命令"ethtool -s eth0 speed 10 duplex half AutoNeg off"、我们可以看到我们已建立10Mbit/s 连接。 我还有 Ping 和一切。
eth0的设置:
支持的端口:[ TP MII ]
支持的链路模式:10baseT/half 10baseT/full
100baseT/half 100baseT/Full
1000baseT/half 1000baseT/full
1000baseX/完整
支持的暂停帧使用:仅对称接收
支持自动协商:可以
支持的 FEC 模式:未报告
广播的链路模式:10BaseT /半
广播的暂停帧使用:否
广播的自动协商:否
通告的 FEC 模式:未报告
速度:10MB/s
双工:半双工
端口:MII
PHYAD:0
收发器:内部
自动协商:关闭
检测到链路:是
我希望 PHY 能够在整个电路板上可靠地工作。 我无法张贴原理图、但我可以根据请求进行仔细检查。 但是、我不认为问题是硬件、因为我能够建立100Mbit/s 的连接。
我能够使用 phytool 访问 phy 寄存器。 下面是一些可能感兴趣的寄存器。 使用 AP DP83869故障排除指南- 4.2.1读取(无后增量)操作中所述的方法访问扩展寄存器
BMCR
phytool eth0/0x00/0x00
IEEE-phy:reg:BMCR (0x00) val:0x1140
BMSR
phytool eth0/0x00/0x01
IEEE-phy:reg:BMSR (0x01) val:0x7949
Anar
phytool eth0/0x00/0x04
IEEE-phy:reg:0x04 val:0x01e1
ALNPAR
phytool eth0/0x00/0x05
IEEE-phy:reg:0x05 val:0xc5e1
ANER
phytool eth0/0x00/0x06
IEEE-phy:reg:0x06 val:0x006f
ANNPTR
phytool eth0/0x00/0x07
IEEE-phy:reg:0x07 val:0x2001
ANLLNPTR
phytool eth0/0x00/0x08
IEEE-phy:reg:0x08 val:0x4806
GEN_CFG1
phytool eth0/0x00/0x09
IEEE-phy:reg:0x09 val:0000
GEN_STATUS1
phytool eth0/0x00/0x0A
IEEE-phy:reg:0x0a val:0x0800
PHY_CONTROL
phytool eth0/0x00/0x10
IEEE-phy:reg:0x10 val:0x5048
PHY_STATUS
phytool eth0/0x00/0x11
IEEE-Phy:reg:0x11 val:0x1302
GEN_CFG2
phytool eth0/0x00/0x14
IEEE-Phy:reg:0x14 val:0x
GEN_STATUS2
phytool eth0/0x00/0x17
IEEE-phy:reg:0x17 val:0x0040
GEN_CFG4
phytool eth0/0x00/0x1E
IEEE-phy:reg:0x1E val:0x0012
GEN_CFG3
phytool eth0/0x00/0x31
IEEE-Phy:reg:0x31 val:0x7302
RGMII_CTRL
phytool eth0/0x00/0x32
IEEE-phy:reg:0x32 val:0000
RGMII_CTRL2
phytool eth0/0x00/0x33
IEEE-phy:reg:0x33 val:0x9c42
Strap_STS -读取为扩展
PHYTOOL 写入 eth0/0x00/0x0d 0x1f
PHYTOOL 写入 eth0/0x00/0x0E 0x6e
PHYTOOL 写入 eth0/0x00/0x0d 0x401f
phytool eth0/0x00/0x0E
IEEE-phy:reg:0x0E val:0000
OP_MODE_DECODE -读取为扩展
PHYTOOL 写入 eth0/0x00/0x0d 0x1f
PHYTOOL 写入 eth0/0x00/0x0E 0x1df
PHYTOOL 写入 eth0/0x00/0x0d 0x401f
phytool eth0/0x00/0x0E
IEEE-phy:reg:0x0E val:0x0040
以下是使用的驱动程序:
github.com/.../dp83869.c
如果 PHY 能够在继续修复驱动程序等之前工作、具有一个我可以手动测试(使用 phytool)的配置会很好
我也尝试了这个没有成功:
•将0x0040写入寄存器1DFh //将工作模式设置为 RGMII to Copper
•将0x1140写入寄存器0h //复位 BMCR
•将0x01E1写入寄存器4h //广播100Base-TX 和10Base-T 功能
•将0x0300写入寄存器9h //复位 GEN_CFG1
•将0x5048写入寄存器10h //复位 PHY_CONTROL
•将0x4000写入寄存器1Fh //软件复位
此致。
M