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.

[参考译文] AM3356:1Gbps 时的 EMAC 引导问题

Guru**** 2618835 points

Other Parts Discussed in Thread: AM3356

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/642786/am3356-emac-boot-issue-at-1gbps

器件型号:AM3356

您好、TI、

我们将使用 AM3356的网络引导功能。 与之前的项目一样、我们使用 RGMII 连接到 PHY。 我们有一台用于 TFTP 和 BOOTP 服务器的 Linux PC。 如果我们强制 PC 为100Mbps、则每次启动似乎都是第一次工作。 如果我们让它使用1000Mbps、它很少会第一次工作。 我们通常在 Wireshark 上看不到任何数据包、直到它重新启动启动过程、并且可能需要5分钟才能完成该过程。 最终、它会以1000Mbps 的速率启动。 除了启动之外,在1000Mbps 时似乎没有任何网络问题。 您是否听说过类似的问题?

根据数据表,PHY_MODE[3:0]设置为1110 =“通告除1000Base-T 半双工之外的所有功能”。 启动后、它在1000Mbps 下似乎始终工作正常。

谢谢、

Dan

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

    根据 AM335x TRM 修订版 P 的第26.1.9.4.1节:

    "器件在 MDIO 接口上检测 PHY 是否处于活动状态、并且:
    –读取状态寄存器以检查以太网链路是否处于活动状态
    –读取控制寄存器以检测自动协商的操作模式:
    •是全双工或半双工模式
    •运行速度、1000/100/10 Mbps。 通过读取自协商通告和自协商链路来确定链路速度
    外部 PHY 中的合作伙伴基页能力寄存器。"

    您能否尝试更改 PHY_MODE[3:0]设置以查看是否会产生任何影响?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此问题是否已解决? 如果是、请关闭线程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Biser、

    不、这还没有解决。   

    我们将 PHY_MODE[3:0]更改为1111、但没有效果。

    还有其他想法吗?

    谢谢、

    Dan

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

    您是否使用 AM335x 定制板? 您是否使用 AM335x TI PSDK、哪个版本?

    您的 AM3356器件的器件版本是什么? 我们有几个与 CPSW 模块相关的器件勘误表建议、请参阅例如 Advisory 1.0.7。如果您遇到了其中一些器件勘误表建议、请仔细检查。

    另请参阅以下链接:

    processors.wiki.ti.com/.../Linux_Core_U-Boot_User's_Guide
    processors.wiki.ti.com/.../AM335x_board_bringup_tips

    e2e.ti.com/.../194680


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

    我是一名工程师、负责执行 OP 中所述的项目。 很抱歉、这里的回复很慢、但我被其他事件分散注意力。

    我们使用的是基于 BeagleBone Black 的定制板、我们使用的是芯片修订版本2.1 (AM3356BZCZA80)、因此我不认为 Advisory 1.07对我们来说是一个问题。

    我们使用的是通过 buildroot 构建的自定义内核。 但是、问题发生在内核或 u-boot 出现之前。 如强制为100Mbps 时所述、每次引导都正常、即 ROM 代码成功引导至 u-boot 并最终引导内核。 在1000Mbps 时、它仅偶尔工作。 但是、一旦启动了所有器件、就没有问题、并且所有器件在1000Mbps 下都能正常工作。

    我在运行 Ubuntu 16.04或12.04的至少3台计算机上尝试过此操作、结果相同。 当在不启动的情况下使用 Wireshark 或 tcpdump 时、没有引导请求通过线路、因此 DHCP 服务器似乎没有响应。

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

    Trevor、

    您能否尝试使用 AM335x TI PSDK 4.02附带的最新 u-boot? 您可以从安装了 PSDK 4.02的软件包中获取该软件包、或使用 git 下载该软件包:

    processors.wiki.ti.com/.../Processor_SDK_Linux_U-Boot_Release_Notes
    processors.wiki.ti.com/.../Linux_Core_U-Boot_User's_Guide

    还尝试在 BeagleBoneBlack 板上重现此问题、从而确定是否涉及硬件问题。

    在 ROM 尝试访问以太网 PHY 之前、请确保以太网 PHY 已正确上电。 以太网 PHY 可能需要一段时间进行电源排序和复位信令、然后才能进行访问。 根据所选的引导顺序、ROM 可能会在以太网 PHY 准备就绪前访问它。

    确保 sysboot[7:6]引脚为0x3 (B11)。

    查看 AM335x 数据表、验证您在千兆位模式下具有正确的 RGMII 数据和时序-第7.6.1.4节

    确保 GMII_SEL 寄存器中的值正确。

    您还应检查引导是否停留在 ROM 代码阶段或 u-boot-spl 阶段。 您可以通过跟踪矢量来检查这一点。 您还可以为顺序 EMAC 第1次、MMC0第2次配置 sysboot[4:0]引脚、并检查您的电路板是否会尝试从 MMC0进行引导。 您还可以配置 sysboot[4:0]引脚以进行顺序外部引导第一、EMAC 第二和 UART 第三、从而检查引导流程是否会到达 UART、其中您将具有 CCCCCCC... 打印在控制台上。 请查看 AM335x TRM、第26.1.9.4节 EMAC 启动程序

    另请检查:


    e2e.ti.com/.../558760

    此致、
    帕维尔

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

    感谢您的支持和建议、我们似乎已通过将 SYSBOOT 配置更改为在引导顺序中最后使用 EMAC 来解决此问题。 这大概为 PHY 提供了更多的时间。

    自做出此更改以来、每次都成功引导电路板。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Trevor、

    感谢您分享准确的解决方案。 请关闭/验证/解决此主题。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不幸的是、这不是我的线程、我不相信我可以关闭它
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、只有 Dan 才能将其关闭。