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:RGMII 至1000-BASE-X SFP 连接不起作用

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1429932/dp83869hm-rgmii-to-1000-base-x-sfp-connection-not-working

器件型号:DP83869HM

工具与软件:

您好!
在我们的系统中、以下链接中存在相同的 eth1接口问题:

DP83869HM:链接不使用 RGMII -> SGMII 桥接器-> 1000BASE-T 使用 Linux -接口论坛-接口- TI E2E 支持论坛

使用上游 Linux 驱动程序并更新驱动程序以接受正确的 MDIO ID (0x2000a0f3)后、我们成功地将接口绑定到 PHY。  
现在、热插拔光纤连接后、会报告链路、但无法通信、我们只看到 TX 数据包但没有收到任何数据:

ethtool eth1
Settings for eth1:
Supported ports: [ TP MII FIBRE ]
Supported link modes: 100baseT/Half 100baseT/Full
1000baseT/Full
1000baseX/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 100baseT/Half 100baseT/Full
1000baseT/Full
1000baseX/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Auto-negotiation: off
master-slave cfg: forced slave
master-slave status: slave
Port: FIBRE
PHYAD: 5
Transceiver: external
Supports Wake-on: d
Wake-on: d
Link detected: yes

ifconfig eth1
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether f8:dc:7a:d7:14:37 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 465 bytes 67119 (65.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

In the previous question it's reported that some registes aren't managed correctly by the driver.

Is there an updated driver? 
I tried this:
github.com/.../dp83869.c

But it fails badly with SP/PC alignment exception.

Thanks,

Filippo

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

    只有另外一条信息、链接仅在我们禁用自动协商并强制速度和双工后出现:
    ethtool -s eth1 autoneg off speed 1000 duplex full

    请提供建议。  

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

    您好!

    为了获得最佳实践、PHY 应自举为处于 RGMII 转1000Base-X 模式。 这应该适用于大多数(如果不是所有)配置。  

    如果发送 TX 数据包、是否相反 MAC 确认接收数据包? 如果相互使用相同的板、切换到已知良好的板以确定问题所在位置可能很重要。

    一旦我们有了这个数据点、我们就可以进行更多精准的调试、以找到问题所在。

    此致、

    Gerome.

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

    大家好、 、是的、我们从一开始就将引脚配置为在 RGMII 中引导至1000Base-X。 我们将使用已知正常工作的现成以太网交换机来测试电路板。

    在对面的 MAC 上、我们不会检测到接收到的数据包。
    在这里、您可以找到具有"ethtool -d eth1"的寄存器转储:
    # ethtool -d eth1
    0x004: 0x00008000
    0x008: 0x0a0000aa
    0x010: 0x01000000
    0x014: 0x00000000
    0x024: 0x70000132
    0x040: 0x6f8e0000
    0x044: 0x0000037c
    0x064: 0x40000000
    0x084: RCR (Receive Control Register) 0x47c00044
    MAX_FL (Maximum frame length) 1984
    FCE (Flow control enable) 0
    BC_REJ (Broadcast frame reject) 0
    PROM (Promiscuous mode) 0
    DRT (Disable receive on transmit) 0
    LOOP (Internal loopback) 0
    0x0c4: TCR (Transmit Control Register) 0x00000004
    RFC_PAUSE (Receive frame control pause) 0
    TFC_PAUSE (Transmit frame control pause) 0
    FDEN (Full duplex enable) 1
    HBC (Heartbeat control) 0
    GTS (Graceful transmit stop) 0
    0x0e4: 0xf8dc7ad7
    0x0e8: 0x14378808
    0x0ec: 0x00010000
    0x0f0: 0xcc801312
    0x0f4: 0xcc801312
    0x0f8: 0xcc801312
    0x100: 0xcc801312
    0x104: 0xcc801312
    0x108: 0xcc801312
    0x118: IAUR (Individual Address Upper Register) 0x00000000
    IADDR1 0x0000000000000000
    0x11c: IALR (Individual Address Lower Register) 0x00000000
    IADDR2 0x0000000000000000
    0x120: GAUR (Group Address Upper Register) 0x00401000
    GADDR1 0x0040100000000000
    0x124: GALR (Group Address Lower Register) 0x00800001
    GADDR2 0x0000000000800001
    0x144: TFWR (Transmit FIFO Watermark Register) 0x00000100
    X_WMRK 64 bytes
    0x14c: FRBR (FIFO Receive Bound Register) 0x00000000
    R_BOUND (Highest valid FIFO RAM address) 0x00
    0x150: 0x00000000
    0x160: 0xf5b22000
    0x164: 0xf5b2a000
    0x168: 0x000007c0
    0x16c: 0xf5b24000
    0x170: 0xf5b2e000
    0x174: 0x000007c0
    0x180: 0xf5b20000
    0x184: 0xf5b26000
    0x188: EMRBR (Maximum Receive Buffer Size) 0x000007c0
    R_BUF_SIZE (Receive buffer size) 124
    0x190: 0x00000000
    0x194: 0x00000000
    0x198: 0x00000004
    0x19c: 0x00000004
    0x1c4: 0x00000086
    0x1c8: 0x00013210
    0x1cc: 0x00017654
    0x1d8: 0x00010200
    0x1dc: 0x00010200
    0x1e0: 0x01000000
    0x1e4: 0x00000000
    0x1e8: 0x01000000
    0x1ec: 0x00000000
    0x1f0: 0x00000000
    0x200: 0x00000000
    0x204: 0x000002a7
    0x208: 0x00000078
    0x20c: 0x0000022f
    0x210: 0x00000000
    0x214: 0x00000000
    0x218: 0x00000000
    0x21c: 0x00000000
    0x220: 0x00000000
    0x224: 0x00000000
    0x228: 0x00000000
    0x22c: 0x00000175
    0x230: 0x000000ba
    0x234: 0x00000078
    0x238: 0x00000000
    0x23c: 0x00000000
    0x240: 0x00000000
    0x244: 0x00019b59
    0x248: 0x00000000
    0x24c: 0x000002a7
    0x250: 0x00000000
    0x254: 0x00000000
    0x258: 0x00000000
    0x25c: 0x00000000
    0x260: 0x00000000
    0x264: 0x00000000
    0x268: 0x00000000
    0x26c: 0x00000000
    0x270: 0x00000000
    0x274: 0x00019b59
    0x284: 0x00000000
    0x288: 0x00000000
    0x28c: 0x00000000
    0x290: 0x00000000
    0x294: 0x00000000
    0x298: 0x00000000
    0x29c: 0x00000000
    0x2a0: 0x00000000
    0x2a4: 0x00000000
    0x2a8: 0x00000000
    0x2ac: 0x00000000
    0x2b0: 0x00000000
    0x2b4: 0x00000000
    0x2b8: 0x00000000
    0x2bc: 0x00000000
    0x2c0: 0x00000000
    0x2c4: 0x00000000
    0x2c8: 0x00000000
    0x2cc: 0x00000000
    0x2d0: 0x00000000
    0x2d4: 0x00000000
    0x2d8: 0x00000000
    0x2dc: 0x00000000
    0x2e0: 0x00000000

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

    大家好、我们发现 SFP 笼上的 TX-Disable 引脚与我们的预期相反。 将这个引脚设定为高电平可启用模块。
    现在我们有来自 SFP 模块的传输、但我们有几个 RX 错误、似乎 CRC 受到了影响。  


    # ethtool -S eth1.
    NIC 统计信息:
    TX_DROPLED:0
    tx_packets:416
    TX_BROADCAST:414
    TX_MULTICAST:2.
    TX_CRC_ERRORS:0
    TX_UNDERSIZE:0
    TX_超大尺寸:0
    tx_fragment:0
    TX_Jabber:0
    TX_COMPILECT:0
    TX_64字节:414
    TX_65到127字节:2
    TX_128to255byte:0
    TX_256TO511字节:0
    TX_512to1023字节:0
    TX_1024to2047字节:0
    TX_GTE2048字节:0
    TX_八 位位组:26644
    IEEE-TX_DROP:0
    IEEE-TX_FRAME_OK:416
    IEEE-TX_1col:0
    IEEE-TX_mcol:0
    IEEE-TX_def:0
    IEEE-TX_LCOL:0
    IEEE-TX_EXCOL:0
    IEEE-TX_macerr:0
    IEEE-TX_cserr:0
    IEEE-TX_SQE:0
    IEEE-tx_fdxfc:0
    IEEE-TX_OPTS_ok:26644
    RX_PACKETS:155
    RX_BROADCAST:0
    RX_MULTICASTER:0
    RX_CRC_ERRORS:42
    RX_UNDERSIZE:0
    RX_超大尺寸:0
    rx_fragment: 113
    RX_Jabber:0
    RX_64字节:0
    RX_65至127字节:1


    而 PHY 报告:  
    ethtool -d eth1
    0x004:0x00008000
    0x008:0x0a0000aa
    0x010:0x01000000
    0x014:0x00000000
    0x024:0x70000132
    0x040:0x6f8e0000
    0x044:0x0000037c
    0x064:0x40000000
    0x084:RCR (接收控制寄存器) 0x47c00044
    MAX_FL (最大帧长度) 1984
    FCE (流量控制启用) 0
    BC_REJ (广播帧拒绝) 0
    PROM (混杂模式) 0
    DRT (禁用发送时接收) 0
    环路(内部环回) 0
    0x0c4:TCR (发送控制寄存器) 0x00000004
    RFC_PAUSE (接收帧控制暂停) 0
    tFC_PAUSE (传输帧控制暂停) 0
    FDEN (全双工启用) 1.
    HBC (检测信号控制) 0
    GTS (正常传输停止) 0
    0x0e4:0xf8dc7ad7
    0x0e8:0x14378808
    0x0ec:0x00010000
    0x0f0:0xcc801312
    0x0f4:0xcc801312
    0x0f8:0xcc801312
    0x100:0xcc801312
    0x104:0xcc801312
    0x108:0xcc801312
    0x118:IAUR (独立地址高位寄存器) 0x00000000
    IADDR1 0x000000000000
    0x11c:IALR (独立地址低位寄存器) 0x00000000
    IAD2 0x0000000000000000
    0x120:Gaur (组地址高位寄存器) 0x04401002
    GADDR1 0x0440100200000000
    0x124:GALR (组地址低位寄存器) 0x00800041
    GADDR2 0x0000000000800041
    0x144:TFWR (发送 FIFO 水线寄存器) 0x00000100
    X_WMRK 64字节
    0x14c:FRBR (FIFO 接收绑定寄存器) 0x00000000
    R_bound (最高有效 FIFO RAM 地址) 0x00
    0x150:0x00000000
    0x160:0xf5b22000
    0x164:0xf5b2a000
    0x168:0x000007c0
    0x16c:0xf5b24000
    0x170:0xf5b2e000
    0x174:0x000007c0
    0x180:0xf5b20000
    0x184:0xf5b26000
    0x188:EMRBR (最大接收缓冲区大小) 0x000007c0
    R_BUF_SIZE (接收缓冲区大小) 124
    0x190:0x00000000
    0x194:0x00000000
    0x198:0x00000004
    0x19c:0x00000004
    0x1c4:0x00000086
    0x1c8:0x00013210
    0x1cc:0x00017654
    0x1d8:0x00010200
    0x1dc:0x00010200
    0x1e0:0x01000000
    0x1e4:0x00000000
    0x1e8:0x01000000
    0x1ec:0x00000000
    0x1f0:0x00000000
    0x200:0x00000000
    0x204:0x00000200
    0x208:0x000001fe
    0x20c:0x00000002
    0x210:0x00000000
    0x214:0x00000000
    0x218:0x00000000
    0x21c:0x00000000
    0x220:0x00000000
    0x224:0x00000000
    0x228:0x000001fe
    0x22c:0x00000002
    0x230:0x00000000
    0x234:0x00000000
    0x238:0x00000000
    0x23c:0x00000000
    0x240:0x00000000
    0x244:0x00008014
    0x248:0x00000000
    0x24c:0x00000200
    0x250:0x00000000
    0x254:0x00000000
    0x258:0x00000000
    0x25c:0x00000000
    0x260:0x00000000
    0x264:0x00000000
    0x268:0x00000000
    0x26c:0x00000000
    0x270:0x00000000
    0x274:0x00008014
    0x284:0x000000c4
    0x288:0x00000000
    0x28c:0x00000000
    0x290:0x00000037
    0x294:0x00000000
    0x298:0x00000000
    0x29c:0x0000008d
    0x2A0:0x00000000
    0x2a4:0x00000000
    0x2A8:0x00000000
    0x2ac:0x00000001
    0x2b0:0x00000029
    0x2b4:0x00000006
    0x2b8:0x00000007
    0x2bc:0x00000000
    0x2c0:0x00000000
    0x2c4:0x00004288
    0x2c8:0x00003852
    0x2cc:0x00000000
    0x2d0:0x00000037
    0x2d4:0x00000000
    0x2d8:0x00000000
    0x2dc:0x00000000
    0x2e0:0x00000000


    RX_128to255byte:31
    RX_256TO511字节:3
    RX_512to1023字节:7
    RX_1024to2047字节:0
    RX_GTE2048字节:0
    RX_八 位位组:13881
    IEEE-Rx_drop:10964
    IEEE-Rx_FRAME_OK:0
    IEEE_Rx_CRC:42
    IEEE-Rx_ALIGN:0
    IEEE-Rx_macerr:0
    IEEE-rx_fdxfc:0
    IEEE-Rx_octets_ok:0
    RX_XDP_REDIRECT:0
    RX_XDP_PASS:0
    RX_XDP_DROP:0
    RX_XDP_TX:0
    RX_XDP_TX_ERRORS:0
    tx_xdp_xmit:0
    tx_xdp_xmit_errors:0
    RX_PP_ALLOC_FAST:756
    RX_PP_ALLOC_SLOW:12
    RX_PP_ALLOC_SLOW_HO:0
    RX_PP_ALLOC_EMPTY:12
    RX_PP_ALLOC_RESLLARDING:0
    RX_PP_ALLOC_SAMPLE:0
    rx_pp_recycle_cached:0
    rx_pp_recycle_cache_full:0
    rx_pp_recycle_ring:0
    rx_pp_recycle_ring_full:0
    rx_pp_recycle_released_ref:0


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

    您好!

    了解 SD 引脚的向上切换如何能够启用数据包传输(即使已损坏)、我想转到隔离问题所在的方法。

    首先、我想测试 MDI;我们可以将 DUT 置于反向环回中(寄存器0x16)并让 LP 发送数据包吗? 这将使 PHY 发回数据包并确保 MDI 正常运行。

    接下来、我想测试 MII 环回。 将 DUT 置于 MII 环回中(寄存器0x0)并使 DUT 的 MAC 发送数据包。 这会让 PHY 发回数据包以验证 MII。  

    我很可能遇到的问题是 RGMII 偏斜会影响 RX 传输、可能需要进行调整。 这些测试台将有助于实现这一目标。

    此致、

    Gerome.

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

    尊敬的 Gerome:

    我将 LOOPBACK 位设置为 MII 环回:

    # mdio stmmac-0 0x05
    BMCR(0x00): 0x4000
    flags: -reset +loopback -aneg-enable -power-down -isolate -aneg-restart
    -collision-test
    speed: 10-half
    
    BMSR(0x01): 0x614d
    capabilities: -100-t4 +100-tx-f +100-tx-h -10-t-f -10-t-h -100-t2-f -100-t2-h
    flags: +ext-status -aneg-complete -remote-fault +aneg-capable +link
    -jabber +ext-register
    
    ID(0x02/0x03): 0x2000a0f3
    
    ESTATUS(0x0F): 0xf000
    capabilities: +1000-x-f +1000-x-h +1000-t-f +1000-t-h
    

    运行 ping 100次迭代得到:

    ethtool -S eth1 | grep -v " 0"
    NIC statistics:
    tx_packets: 974
    tx_broadcast: 255
    tx_multicast: 704
    tx_64byte: 113
    tx_65to127byte: 477
    tx_128to255byte: 232
    tx_256to511byte: 147
    tx_1024to2047byte: 5
    tx_octets: 146184
    IEEE_tx_frame_ok: 974
    IEEE_tx_octets_ok: 146184
    rx_packets: 654
    rx_crc_errors: 616
    rx_fragment: 38
    rx_65to127byte: 384
    rx_128to255byte: 140
    rx_256to511byte: 87
    rx_1024to2047byte: 5
    rx_octets: 93292
    IEEE_rx_drop: 9403
    IEEE_rx_crc: 616
    rx_pp_alloc_fast: 756
    rx_pp_alloc_slow: 12
    rx_pp_alloc_empty: 12
    
    # ping -I eth1 -i 0.01 -c 100 192.168.6.205
    ping: Warning: source address might be selected on device other than: eth1
    PING 192.168.6.205 (192.168.6.205) from 192.168.6.134 eth1: 56(84) bytes of data.
    
    --- 192.168.6.205 ping statistics ---
    100 packets transmitted, 0 received, 100% packet loss, time 49204ms
    
    # ethtool -S eth1 | grep -v " 0"
    NIC statistics:
    tx_packets: 1087
    tx_broadcast: 317
    tx_multicast: 755
    tx_64byte: 164
    tx_65to127byte: 509
    tx_128to255byte: 251
    tx_256to511byte: 158
    tx_1024to2047byte: 5
    tx_octets: 159345
    IEEE_tx_frame_ok: 1087
    IEEE_tx_octets_ok: 159345
    rx_packets: 767
    rx_crc_errors: 729
    rx_fragment: 38
    rx_65to127byte: 467
    rx_128to255byte: 159
    rx_256to511byte: 98
    rx_1024to2047byte: 5
    rx_octets: 106566
    IEEE_rx_drop: 9403
    IEEE_rx_crc: 729
    rx_pp_alloc_fast: 756
    rx_pp_alloc_slow: 12
    rx_pp_alloc_empty: 12

    不确定我们现在是否能够执行反向回送测试, 我们正在进行这方面的工作。

    这是否指向 RGMII 偏斜?

    谢谢!

    Filippo

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

    另外一个我们认为可能有用的信息。

    我们在 RGMII 转1000BASE-x 中使用 Phy、并需要使用 TMUX1511PWR 4通道模拟开关对 SGMII 线路进行分段。  

    为了降低功耗、我们在不使用时使用 GPIO 关闭 SFP 模块和 SGMII 线路的电源。  

    您是否认为这可能会导致 SGMII 连接出现问题?

    在所有这些测试中、模块和模拟开关显然一直被启用。  

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

    您好!

    如果出现 OFF of MII 环回问题、则很可能是 RGMII 接口问题。 偏斜是纠正误差的好方法、因为大多数情况下都可能是由于1G (125MHz DDR)的严格速度而出现的设置/保持时间问题。 有关所需偏移的更多信息、请参阅寄存器0x86和0x32。 此外、谨慎的做法是确定接收器的时钟和数据信号范围(MAC 输入)、以便更好地分析所需的偏斜调整。

    此致、

    Gerome.

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

    尊敬的 Gerome:

    你的测试是完美的定位点。 我们发现、基于1000Base-X、时钟@125 MHz 有坏的时钟、我们手动将速度降级至100BASE-X、现在终于有了可用的链接!

    我们可以看到相同的线在评估板上正常工作、相同的设置也应用于最终系统。

    我曾尝试对0x86和0x32寄存器执行操作、但在两种情况下、我们都未看到信号有改善、因为这些操作只会移位时钟。

    我们对时钟线进行了深度检查、得到了正确均衡、时间不是很长、没有干扰其他线路。 TXC 线的路由非常相似、但行为要好得多。

    您知道是否有方法优化此行为? 增加此线的驱动强度?  
    谢谢!

    Filippo

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


    25 MHz 上的一些其他示波器截图。 信号已降级。 RXC @125MHz 的峰峰值电压为48mV、基线为65mV。  

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

    尊敬的 Filippo:

    这是意料之外的。 我可以想象寄生效应会影响信号、因为随着速度的提高、我认为根据 布局检查中的建议评估 MAC 布线 是一种谨慎的做法。 MAC 段从第26行开始。

    此致、

    Gerome.