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.

[参考译文] DP83867IS:无法对外部 PC 执行 ping 操作

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/985095/dp83867is-could-not-ping-with-external-pc-issue

器件型号:DP83867IS

应用:Xilinx Zynq 系列 SOC 芯片 ARM 内核支持两个连接到两个 DP83867芯片的 RGMII 接口,这两个芯片共享一组相同的 MDC、MDIO。

问题行为: Zynq SOC 芯片 uBoot、但 ping 外部 PC 不工作时、eth0接口的 PHY 芯片可以连接。 读取寄存器操作没有问题。 该驱动器是 Xilinx peatlinux 2018.3的内置 U-Boot 2018.01-00083-gd8fc4b3b70。  

uBoot 之前和之后的 RX_CLK 125MHz 波形如下面的所示。 它似乎与这个问题有某种关系。  

    

如果硬件陷阱 IO 将 Autoneg 禁用配置模式3、并在寄存器0x1F 处写入0x8000执行全局软件复位操作、从而恢复所有寄存器配置。 DP83867IS 可以执行 ping 操作、但这会将所有寄存器值恢复为默认值。 请  在全局软件复位后清除 RX_CLK 波形

请就此问题提供帮助? 其他问题: DP83867IS 芯片是否需要在寄存器值更改后执行复位操作?

谢谢。

此致、

陈苔丝

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

    你好、苔丝、

    由于您遇到 RX_CLK 问题、PHY 可能会被绑定到不正确的模式或加电时序不正确。 您能否尝试以下操作:

    1. 您能否读取寄存器0x006E 和0x006F 并检查读取的值是否与自举设置相匹配?
    2. 您能否检查您的加电时序是否与数据表第7节图1所示相匹配?
    3. 时钟是从晶体、振荡器还是 SOC 进入 PHY? 上电前需要提供时钟。

    此致、

    Adrian Kam

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

    您好、Adrian、

    感谢您的及时反馈。  以下是可帮助解决问题的附加信息:

    • 有大约10个具有  Xilinx Zynq 内核芯片的相同原型板。 每个电路板都有3个 DP83867IS。 上述帖子中提到了两个用于 eth0和 eth1的 DP83867IS。  另一个 DP83867IS 用于 SGMII 接口。   
    • 此问题并不适用于所有电路板和 PHY。   某些电路板上的 PHY (包括 eth0和 SGMII 端口)可能存在 ping 问题。 而一些直接更换的新型板载 DP83867IS 芯片有时可以消除这一问题。 因此、我们还考虑硬件上的故障。 但我们无法理解芯片可以通过使用全局软件 reset.e2e.ti.com/.../Waves-if-ping-is-OK.rar 来工作

      

     请在下面找到与您在 EH0上的最后一个帖子相关的测试结果。  

         您能否读取寄存器0x006E 和0x006F 并检查读取的值是否与自举设置相匹配?

    加电后、寄存器0x006E 和0x006F 的值为0021、0100、驱动器初始化完成后读取寄存器、无法执行 ping 操作。 但是、在全局软件复位后、该读取寄存器0x006E 和0x006F 的值仍然为0021、0100。 现在可以执行 Ping 操作。

        2. 您能否检查您的加电时序是否与数据表第7节图1中显示的时序相匹配?

    加电时序波可满足附件中指定的数据表需求。

    e2e.ti.com/.../Power-up-wave.rar

    时钟是从晶体、振荡器还是 SOC 进入 PHY? 上电前需要提供时钟。

    该时钟使用25MHz±30ppm 晶振、在通电之前不会振动。 请参阅上面的功率波。

    SGMII 端口 PHY 的测试结果:

    • 复位时序测量也没有发现任何问题(请参阅 数据表中的图2)
    • MII 环回寄存器配置代码如下:

    Phytool 写入 eth2/0xF/0x001F 0x8000

    Phytool 写入 eth2/0xF/0x0000 0x0140

    Phytool 写入 eth2/0xF/0x0016 0x0040

    Phytool 写入 eth2/0xF/0x001F 0x4000

    • 一些电路板可以使用近端回望、但另一些电路板无法使用。
    • SGMII 良好板、MDIO 读取0和0xF 地址、两者都响应、并且值正确。 SGMII 错误 电路板、MDIO 读取0地址不响应、值为 FFFF;读取0xF 地址响应、值正确
    •  此处的附件是 SGMII 接口时序测试波形、其中包含1。 电源时序 、2.硬件复位时序、3.  良好的 PHY 差分端口波 形和4。 PHY 差分端口波错误。

    e2e.ti.com/.../SGMII-PHY-TEST-WAVE.rar

    问题:

    • 如何确定 PHY 本地时钟已通过 CDR 恢复时钟锁定?
    • 请提供环回配置说明:

      a) RGMII MII 环回/PCS 环回/数字环回/模拟环回

      b) SGMII MII 环回/PCS 环回/数字环回/模拟环回

    • 是否有其他建议需要改进以澄清问题?  

    非常感谢。  

    此致、

    陈苔丝

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

    你好、苔丝、

    1. 您能详细说明这个问题吗? 为什么需要确定 PHY 本地时钟是否与 CDR 恢复时钟锁定?
    2. 要启用 MII 回送、请将寄存器0x0000的位[14]设置为1。 对于所有其他回送模式、将寄存器0x0016中的位[5:2]配置为所需的回送模式。 请记住、并非所有回送模式都适用于所有 MAC 接口和所有速度。 数据表第8.4.4节中的表4概述了 MAC 接口和速度可用的环回模式。
    3. 我在您的加电范围截图中注意到、直到全部三个电源都加电后、时钟才会振荡。 PHY 开启之前、必须振荡时钟。 您能否尝试从外部为时钟供电、 先为时钟上电、然后再完成 PHY 的上电序列?

    此致、

    Adrian Kam

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

    您好、Adrian、

    我们是否有任何文档来指导客户进行 DP83867IS 焊接过程?  谢谢。

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

    你好、苔丝、

    我们没有专门为客户提供有关 DP83867焊接工艺的指导文档。 但是、由于封装也用于其他 TI 器件、因此 TI 网站上可能会提供一些有关您所需内容的文档。

    自我上次答复以来、您的整体问题是否已得到解决?

    此致、

    Adrian Kam

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

    您好、Adrian、

    我们已经尝试了软件配置建议、但它没有帮助。  然后、我们焊接了另外两块电路板、它们仍然无法正常工作、而 是出现了不同的现象。

    PHY 连接:在 ZYNQ7000的 PS 侧、两个 DP83867连接到 Xilinx 硬内核、该硬内核共享一组 MDC、MDIO。 在完全电路板上电启动后、进入 uBoot 并通过 QSPI 引导 Linux 系统。 除了配置为 mode3的 RX_CTRL 引脚外、DP83867芯片配置为 mode0。

    主要有两个问题:

    RX_CLK 的波形首先显示为电路板上电后的125MHz 时钟、然后变为2.5MHz 时钟。 然后在 Linux 系统启动时变为125MHz 时钟。 然后、它进入2.5MHz 时钟、最后进入具有不同脉冲宽度的低电平脉冲信号的高电平。 如下图所示:

    RX_CLK:125MHz

    RX_CLK:2.5MHz

    RX_CLK 不同的低电平脉宽异常信号

    在配置中、0x6E 寄存器读作8881、 寄存器的 Autoneg Disable Read 应为0、但从寄存器读取的状态为1。 全局软件复位后、RX_CLK 波形变为2.5MHz、 0x6E 寄存器仍为8881。

    问题:

    如上所述、两个 PHY 共享一个 MDC、MDIO 专用引脚用于 Xilinx PS 接口、这是否有任何问题?

    — —有没有其他的建议可以找出原因?

    非常感谢您的支持。

    此致、

    苔丝

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

    你好、苔丝、

    1. 异常信号持续多长时间? 复位前它是否是永久性的? 如果 RX_CLK 看起来很奇怪、则可能意味着 PHY 卡在复位状态或处于未知状态。 当 Linux 系统启动时、它是否会在启动过程中的某个位置触发复位? 此外、您能否检查以确保在 Linux 系统启动时、软件不会错误地配置某些寄存器、从而可能使 PHY 进入未知状态?
    2. 您能否在加电和复位期间检查自举引脚上的电压值? 如果电压不在所需配置的规格范围内(请参阅数据表8.5.1节的表5)、则 PHY 将配置为不同模式或未知模式。 如果配置为未知模式、则可能导致 RX_CLK 看起来很奇怪、以及寄存器0x6E 中的值与预期值不符的原因。

    此致、

    Adrian Kam

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

    你好、苔丝、

    此外、只要两个 PHY 具有不同的地址、共享一条 MDC/MDIO 线路的两个 PHY 就可以正常工作。

    此致、

    Adrian Kam