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.

[参考译文] DP83869HM:PHY 可与一些开关配合使用、但不能与其他开关配合使用。

Guru**** 2455360 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1482032/dp83869hm-phy-works-with-some-switches-but-not-others

器件型号:DP83869HM
主题中讨论的其他器件: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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 M:

    这很有趣。 10Mbps 到100Mbps 不应与 MDI 有太大区别。 我在寄存器0x5上确实看到 DUT 正在获取100M 的 LP 广播、但不清楚为什么自动协商未在任一侧收敛。 我建议我们检查以下几点:

    -原理图审阅。 请填写 本文档 、以排除任何与硬件相关的运行状况检查

    -电缆类型/长度。 此行为是否取决于类型和长度?

    -在有问题的交换机上,其他设备是否连接到交换机?

    -如果 DUT 被强制100M 速度,会发生什么情况?

    此致、

    Gerome.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    -这将需要一分钟  
    -尝试不同类型/长度。 故障是一致的  
    -有问题的交换机可与其他设备配合使用。 已尝试多种配置。  
    -强制100M 速度没有任何作用。

    但是、启用速度优化:

    PHYTOOL 写入 eth0/0x00/0x14 0x2BC7
    PHYTOOL 写入 eth0/0x00/0x1F 0x4000

    让我在这里:

    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 模式:未报告
    链路伙伴通告的链路模式:10BaseT /半10 baseT/full
    100baseT/half 100baseT/Full
    1000baseT/Full
    连接方广播的暂停帧使用:对称
    连接方广播了自动协商:是
    连接伙伴通告的 FEC 模式:未报告
    速度:100MB/s
    双工:全双工
    端口:MII
    PHYAD:0
    收发器:内部
    自动协商:开启
    检测到链路:是

    但仍然没有对器件执行 ping 操作。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 M:

    令人鼓舞的是、速度优化使 PHY 能够以100Mbps 建立链路。 在这种情况下、我想以这种速度通过环回检查 MDI 和 MII 信号完整性、以确保一切正常。 当10Mbps 运行时、同一硬件上的更高速度如果布局微不足道、则可能会引起问题。  

    您能否列举几个实验:

    - DUT 上的反向环回(寄存器0x16)。 这会将来自 MDI 接收的流量重定向至链路伙伴。 然后、链路伙伴 MAC 可以确定是否存在数据包错误。

    - MII 环回(寄存器0x0)、同时将 PHY 设置为100Mbps 模式、DUT MAC 将数据包发送到 DUT。 除了在该速度下的 MII 部分上、这将执行类似的环回。

    -检查 RX 错误。 寄存器0x15将有助于确定数据包是否损坏进入 DUT、从而帮助隔离 MDI。

    此致、

    Gerome.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有很多东西可以从你的帖子中解包。 过程。 我已在环回主题上创建了一个与您为硬件检查提供的类似的 Excel 文档。

    我按照数据表中"7.3.5 BIST 配置"部分的说明进行了操作。

    -加电-
    PHYTOOL 写入 eth0/0x00/0x0d 0x1f
    PHYTOOL 写入 eth0/0x00/0x0E 0xFE
    PHYTOOL 写入 eth0/0x00/0x0d 0x401f
    PHYTOOL 写入 eth0/0x00/0x0E 0xe720
    PHYTOOL 写入 eth0/0x00/0x00 0x2100
    PHYTOOL 写入 eth0/0x00/0x10 0x5028
    PHYTOOL 写入 eth0/0x00/0x16 0x4

    -链路接通-
    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 模式:未报告
    速度:100MB/s
    双工:全双工
    端口:MII
    PHYAD:0
    收发器:内部
    自动协商:关闭
    检测到链路:是

    PHYTOOL 写入 eth0/0x00/0x16 0xF004

    -这个寄存器中的11位变为高电平-
    phytool eth0/0x00/0x17
    IEEE-phy:reg:0x17 val:0x0a40

    PHYTOOL 写入 eth0/0x00/0x0d 0x1f
    PHYTOOL 写入 eth0/0x00/0x0E 0x72
    PHYTOOL 写入 eth0/0x00/0x0d 0x401f
    PHYTOOL 写入 eth0/0x00/0x0E 0x201

    PHYTOOL 写入 eth0/0x00/0x0d 0x1f
    PHYTOOL 写入 eth0/0x00/0x0E 0x71
    PHYTOOL 写入 eth0/0x00/0x0d 0x401f
    phytool eth0/0x00/0x0E
    IEEE-phy:reg:0x0E val:0x8426

    PHYTOOL 写入 eth0/0x00/0x0d 0x1f
    PHYTOOL 写入 eth0/0x00/0x0E 0x72
    PHYTOOL 写入 eth0/0x00/0x0d 0x401f
    phytool eth0/0x00/0x0E
    IEEE-phy:reg:0x0E val:0x0200

    PHYTOOL 写入 eth0/0x00/0x0d 0x1f
    PHYTOOL 写入 eth0/0x00/0x0E 0x1A8
    PHYTOOL 写入 eth0/0x00/0x0d 0x401f
    phytool eth0/0x00/0x0E
    IEEE-phy:reg:0x0E val:0xb0e6

    PHYTOOL 写入 eth0/0x00/0x0d 0x1f
    PHYTOOL 写入 eth0/0x00/0x0E 0x1A9
    PHYTOOL 写入 eth0/0x00/0x0d 0x401f
    phytool eth0/0x00/0x0E
    IEEE-phy:reg:0x0E val:0x0003

    这是正确的测试吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    再进行一个测试。

    我给 DUT 上电

    此时链路未建立。

    对连接到 DUT 的 PC 执行 ping 操作、两个系统上都没有发送或接收的数据包。 从 PC 对 DUT 执行 ping 操作、并且按预期 在这两个系统上都没有接收或发送任何数据包。

    我启用速度优化

    PHYTOOL 写入 eth0/0x00/0x14 0x2BC7
    PHYTOOL 写入 eth0/0x00/0x1F 0x4000

    在全双工模式下、链路以100Mbit/s 的自动协商速度建立。

    如果我从 DUT 对 PC 执行 ping 操作、可以在 DUT 上看到正在发送数据包。  在 PC 上不接收任何内容。
    如果我从 PC 对 DUT 执行 ping 操作、可以在 PC 上看到正在发送数据包。 此时、  DUT 正在接收数据包。

    看起来是单向通信。

    现在我启用反向环回。

    PHYTOOL 写入 eth0/0x00/0x16 0x20

    如果我从 PC 对 DUT 执行 ping 操作、可以在 PC 上看到正在发送和接收数据包 (我想是通过回送)。

    此外、问题是、一些器件100Mbit/s 如何能够实现、而另一些器件却不能实现?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我认为这些测试不正确。

    具体思路是、对于 MII 环回、MAC 将流量发送到 PHY。 MII 环回中的 PHY (通过寄存器0x0)需要仅接收并将流量重定向出。 只需要寄存器0x0。

    对于反向环回、PHY 将以类似的方式重定向 MDI 流量、因此链路伙伴的 MAC 将需要向外发送数据并在返回后报告完整性。

    在反向环回中、PHY 的 RX 错误寄存器还将能够帮助确定是否损坏了进入 DUT 的数据包。

    关于测试、MAC 接口存在问题是有原因的。 我建议检查 MAC 侧的设置/保持时间、尤其是 TX 线路、因为当 DUT 尝试 ping PC 时报告问题、没有任何显示。

    此致、

    Gerome.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我希望能有更详细的介绍。  

    对于 MII 环回、仅将寄存器0x00中的14位设置为高电平。 我需要将自动协商设置为开启、双工还是其他任何设置吗? 我如何发送/解析 MAC 数据、即我需要安装什么工具以及如何使用它。

    对于 反向环回、问题与 MII 环回相同。 运行测试前是否需要链接?应该使用哪些工具?


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    对于 MII 环回、您应禁用自动协商并设置速度、因为 MAC 接口需要使用该功能以正确的数据速率正确发送数据。

    要发送 MAC 数据、您需要联系供应商获取此信息。 我会建议查看是否有任何内置内容来自动发送流量、而不管链路如何、或者是否需要实现客户功能。

    对于反向环回、建议进行自协商、因为将连接 PHY (启用速度优化)。

    此致、

    Gerome.