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.

[参考译文] Linux/DP8.3867万IS:带SGMII接口的驱动程序无法正常工作

Guru**** 2470770 points


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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/634672/linux-dp83867is-driver-with-sgmii-inteface-not-working

部件号:DP8.3867万IS

工具/软件:Linux

您好,

我们正在尝试在定制的k2hk主板中提供四个1Gig以太网端口。

->使用 SGMII接口的Marvell芯片的前两个以太网端口(eth0和eth1)。

    状态: 工作中, 与k2hk EVM板中的一样

      

->使用SGMII接口的TI DP8.3867万的其它两个以太网端口(eth2和eth3)。

     状态:显示接口,但无法ping

启动TI DP8.3867万所遵循的步骤

在内核中

->由于mcsdk内核中没有dp8.3867万的驱动程序,我们从mcsdk移至Processor SDK 。

->我们在设备树,设备树的PFA中进行了更改。

->我们在dp8.3867万驱动程序中进行了更改,因为它仅支持RGMII模式,但我们需要 SGMII操作模式,修改后的驱动程序的PFA和原始驱动程序。

->与SGMII模式相关的修改是从启动加载程序文件ti.c (ti.c的PFA)中借用的

我们还尝试 了 PSDK Boot Loader

->已启用路径/driver/net/phi/ti.c中的ti.c,尝试ping其它IP,但系统重新启动。

请帮助我们完成此操作。

谢谢!

Gureesh Hirmath

高级设计工程师

Lekha无线解决方案

班加罗尔

e2e.ti.com/.../files.tar.gz

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

    为了帮助您进行调试,首先我要确认您的硬件设计/路由是正确的。 请查看DP8.3867万故障排除部分2.10 “建立SGMII链路”并确认一切正常吗?

    POST This I like to check,whether the autonegotation process between SGMII and MAC is complet?(我要检查SGMII和MAC之间的自动协商过程是否已完成?)

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

    您好,
    我们已完成DP8.3867万故障排除指南的2.10 章节"建立SGMII链接",以下是检查点

    1 DP8.3867万包括内部SGMII端接。 无需外部端接。
    >未提供外部端接。


    2所有SGMII连接应通过0.1 μF Ω 电容器进行交流耦合。
    >所有SGMII连接均通过0.1 μF Ω 电容器进行交流耦合。

    3条线路应采用100 Ω μ A差分阻抗布设。
    >是

    4一对内的歪斜匹配应小于5马力,对于标准FR4,这相当于30mil。

    网络名称长度的一部分
    PHY1
    SOC_SGMII2_TXP 4232.48 MIL
    SOC_SGMII2_TXN 4224.35 MIL
    SOC_SGMII2_RXP 3231.04 MIL
    SOC_SGMII2_RXN 3254.53 MIL

    PHY2.
    SOC_SGMII3_TXP 5702.97 MIL
    SOC_SGMII3_TXN 5713.57 MIL
    SOC_SGMII3_RXP 4584.06 MIL
    SOC_SGMII3_RXN 4617.22 MIL

    5在6线模式下操作时,RX对必须将时钟对匹配到5马力以内,这两者相关
    对于标准FR4,为30mil。
    >在4线模式下工作。

    6在SGMII模式下操作时,可能需要假束带为提供平衡负载
    SGMII差分对。 因此,对于带子配置为RX_D0和/或的SGMII应用
    RX_D2,匹配终端必须用于RX_D1和/或RX_D3。 有关详细信息,请参阅PHY
    数据表的地址配置部分。
    >已提供

    7在MAC和PHY之间建立SGMII连接时,MAC和PHY都是如此
    应具有通用配置。 SGMII自动协商是的首选机制
    建立沟通。 如果未使用自动协商,则MAC和PHY都必须使用
    强制为相同的速度和双工配置。
    >在dp8.3867万.c中完成的以下寄存器设置以及带有查询的附加文件
    PHY_WRITE (phydev,MII_BMCR,
    (BMCR_ANENABLE | BMCR_FULLDPLX | BMCR_SPEED1000));/* ie:reg 0x0 = 0x1140 */

    cfg2 = phy_read (phydev,MII_DP8.3867万_CFG2);
    cfg2 &= MII_DP8.3867万_CFG2_mask;
    cfg2 ||(MII_DP8.3867万_CFG2_SPEEDOPT_10EN |)
    MII_DP8.3867万_CFG2_SGMII_AUTONEGEN |
    MII_DP8.3867万_CFG2_SPEEDOPT_ENH |
    MII_DP8.3867万_CFG2_SPEEDOPT_CNT |
    MII_DP8.3867万_CFG2_SPEEDOPT_INTLOW);/* ie:reg 0x14 = 0x29C7*/

    PHY_WRITE (phydev,MII_DP8.3867万_CFG2,cfg2);
    PHY_WRITE_MMD_INDIRECT (phydev,DP8.3867万_RGMIICCL,
    DP8.3867万_DEVADDR, 0x0);/*ie:reg 0x32=0 */

    PHY_WRITE (phydev,MII_DP8.3867万_PHYCTRL,
    DP8.3867万_PHYCTRL_SGMIIEN |
    (DP8.3867万_MDI_Crossing_MDIX <<
    DP8.3867万_MDI_Crossover)|
    (dp8.3867万->fifo_dept<< DP8.3867万_PHYCTRL_RXFifo_shift)|
    (dp8.3867万->fifo_dept<< DP8.3867万_PHYCTRL_TXFIFO_SHIFT))/*例如:reg 0x10 = 0x5840*/

    PHY_WRITE (phydev,MII_DP8.3867万_BOSCH,0x0);/*ie:reg 0x16 = 0 */

    8不稳定的MDI链路会导致SGMII连接不稳定。 如果PHY无法维护链路,则可以
    使SGMII自动协商循环。 必须解决不稳定的MDI链接才能解决问题
    SGMII自动协商环路。
    >如何测试.......................... ?



    此致,
    Gureesh Hirmath
    Lekha Wireless

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    8:说明MDI侧链节应稳定,以完成SGMII Auto Neg。 这可以通过链接状态寄存器进行检查。 此外,您还可以查看SGMII状态寄存器以了解此链接的状态。 "SGMII Auto-Negotiation Status:0x0037"(SGMII自动协商状态:0x0037)

    然后,我想尝试MAC回送模式,检查您是否能够回送数据包。

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

    此问题是否已解决? 我正面临着SerDes 0本身的lane 0的类似问题。

    如果解决了,那么您必须做什么。

    我已经有与此相关的主题。
    e2e.ti.com/.../239.1254万

    谢谢
    王子