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.

[参考译文] DP83822I:链路建立后、不发送第一个数据包

Guru**** 2589265 points
Other Parts Discussed in Thread: DP83822I, AM4376

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/956808/dp83822i-after-link-up-first-packet-is-not-being-transmitted

器件型号:DP83822I
主题中讨论的其他器件: AM4376

各位专家、您好!

此主题已作为处理器论坛主题 e2e.ti.com/.../943825的副本创建。

Dhaval Khandla 要求我创建此线程、因为他假定 PHY 启动时间存在问题。 因此、我们希望邀请 PHY 专家参加。

问题描述

我们使用的是定制硬件平台、该平台使用 TI AM4376 CPU 和两个 TI DP38322 PHY。 PRU-ICSS 和 EtherNet/IP 适配器 v1.0.3.4使用了这两个 PHY。 在此配置下、我们观察到以下行为:

  • ICSS_EMAC 和 PRU 固件初始化后、会在一个外部端口上成功检测到一个链路、并发出链路中断。
  • ISR 会向 ICSS_EmacLinkISR 和应用程序通知更改的链路状态。
  • 然后,应用程序设置静态 IP 地址,然后向网络发送一个或多个广播 ARP 请求。

根据链路伙伴的不同,网络上不会传输一个或多个 ARP 数据包。  在首次调用 ICSS_EmacTxPacket 之前添加延迟、所有 ARP 数据包都将在以太网总线上发送。

我使用自动协商和固定速度设置与两个不同的链接伙伴进行了一些进一步测试:

NIC:英特尔Registered以太网 I210-T1 GbE

自动协商:链路断开时初始数据包丢失。

100M/HD/FD: 链路断开时、初始数据包丢失。

网卡:英特尔RegisteredPRO/1000 PT

未检测到数据包丢失。

开关:D-link DGS-1210-10P

自动协商:链路断开时初始数据包丢失。

100M/HD/FD: 链路断开时、初始数据包丢失。

使用“英特尔RegisteredPRO/1000 PT”网卡时,问题似乎没有出现,因为它是一个很旧的硬件。

使用较新的 NIC 或受管交换机可以发现问题。

 

此致

Stefan

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

    您好 Stefan、

    要帮助解决您的问题、请回答以下问题或提供以下信息:

    1. 正在使用哪种 MAC 接口?
    2. 您能否共享两个 PHY 的寄存器转储?

    此外、您能否尝试发送数据并将 PHY 设置为环回模式?

    此致、

    Adrian Kam

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

    Adrian、您好!

    您的要求:

    MAC 接口是标准 MII 接口(不是 RMII 或 RGMII)。

    2.我准备了一个文本文件,其中包含两个 PHY (0和1)的 R0-.31寄存器值。

    我尝试将 PHY 设置为环回模式(R0.14 = 1和 R22.4..0 = 1)。 但是、在这种配置下、不会建立任何链路、我们的应用程序也不会传输任何数据包。

    是否可以指定寄存器设置以启用 正确的回送模式?

    您是否只想验证第一个数据包是否成功进入 PHY?

    此致

    Stefan

    e2e.ti.com/.../reg_5F00_dump_5F00_phy.txt

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

    您好 Stefan、

    查看寄存器转储文件、我没有看到 PHY 1有任何问题、但似乎 PHY 0上没有建立链路。 您能否提供应用原理图、以便我进一步了解此问题?

    至于尝试环回、您可以通过设置寄存器0x0016中的位[3]来启用模拟环回。 我建议尝试回送主要是为了验证第一个数据包是否到达 PHY。 数据表的第8.4.8节提供了回送模式及其启用方法的更详细说明。

    此致、

    Adrian Kam

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

    Adrian、您好!

    PHY 0上缺少的链路是正确的、是预期的。 我忘记说、我只测试了1个直接连接 到 PC 的英特尔(R)以太网 I210-T1 GbE 接口卡的端口。 在使用 PHY 1进行测试时、这一问题可能会在两个端口上重现、并且已进行寄存器转储。

    很抱歉缺少此信息。

    我将尝试实现环回测试并向您通报结果。

    此致

    Stefan

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

    Adrian、您好!

    我尝试使用 PHY 的模拟回路测试行为。 遗憾的是、这似乎比预期的复杂:

    • 负责从应用中传输数据包的 ICSS_EMAC 取决于 PRU 固件引起的链路中断事件。
    • 在环回模式下、不会生成此链路事件。
    • 我尝试通过设置寄存器0x16中的位6来模拟链路(在 MII 环回中发送)。 使用此设置,链路会出现不稳定的行为:MDIO 链路状态在上升和下降状态之间持续切换...

    目前、我不确定如何建立一个环回应用、以生成可靠的信息来验证第一个数据包是否到达 PHY。 因此、如果我开始更改 ICSS_EMAC 实现以模拟链路、结果可能没有意义。

    我要问 Dhaval Khandla,他是否有任何想法。

    此致

    Stefan

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

    您好 Stefan、

    请告诉我您是否能够使回送模式正常工作。 同时、您能否提供一个原理图、我可以查看一下、看看硬件方面是否有任何问题? 或者您是否正在使用 DP83822I EVM?

    此致、

    Adrian Kam

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

    Adrian、您好!

    我们正在使用我们的定制硬件、我证明、如果我可以在 E2E 论坛的此处发布我们的原理图(或其中的一部分)。

    激活的 MII 环回测试失败、因为 PHY 不会向活动链路发出信号。 因此、连接的 PRU 和 ICSS_EMAC 不会获得需要的中断事件和状态信息以进行正确初始化。 最后、不会传输任何可以环回的电池组。

    因此、我通过在以太网连接器侧连接 RxD 和 TXD 线来调整测试、以建立外部回路。 我没有更改驱动程序初始化和传输部分。 在接收端、我将所有接收到的帧记录到了内部 RAM 中。

    似乎所有传输数据包都已环回、然后被 ICSS_EMAC 接收。 此测试涵盖了整个接收和发送路径、似乎工作正常。

    我还想知道、为什么我会观察这些初始数据包损耗。 如前所述、如果速度和双工是固定的或自动协商的、则看起来没有什么不同。

    此致

    Stefan

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

    您好 Stefan、

    我想确认一点。 对于您的设置、ARP 数据包是否来自 DP83822侧? 如果是这种情况、您能否确认 DP83822正在向电缆发送 ARP 数据包? 如果您没有其他方法、则可以使用 Wireshark 工具。

    此致、

    Adrian Kam

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

    Adrian、您好!

    我看到了一张图片、其中显示了我使用的两种设置。 在图中、我连接了端口0、但可以使用端口1。

    在这两种设置中、AM4376都连接到两个 DP83822类型的 PHY、同时使用 MII-00和 MII-1。 上电后、AM4376初始化包含 PHY 配置和驱动程序初始化(ICSS_EMAC 等)的物理网络接口。 当 DP83822检测到链路连接时、AM4376中将发出中断事件、应用程序通过向逻辑网络接口分配 IP 地址(此处为静态 IP)来启动网络配置。 分配 IP 地址后、将发送多条 ARP 电报(至少6条)以通知网络并检测 IP 地址冲突。 在接收到链路建立中断(< 300ms)后、将立即发送前4个相同的 ARP。

    设置 A (原稿,不回送)

    • 我们设备的端口0直接连接 到测试 PC 的 NIC、其类型为"英特尔(R)以太网 I210-T1 Gbe"。
    • 使用 Wireshark 在 NIC 上捕获传入流量。
    • 在对设备执行电源循环时、未检测到初始 ARP 帧1-3。
    • 使用 NIC 和端口0之间的分路器时、Wireshark 捕获似乎不可靠、因为检测到链路后、分路器需要进行一些初始化。

    设置 B (端口0上有环回)

    • 回路适配器插入到连接 Rx 和 TX 信号的端口0。
    • 接收到的流量被捕获到 DDR-RAM 中的一个环形缓冲器。
    • 上电后、接收捕获缓冲区包含所有预期的 ARP 帧。

    因此、使用设置 B、我无法检测到任何数据包丢失。 但在该设置中、我不会想到会出现问题、因为我假设这是 PHY 器件的强制性测试。 此外、此设置省略了与不同链接伙伴的任何交互。 使用设置 A 时、我可以在调整链接伙伴时看到差异。 例如,当使用“英特尔(R) PRO/1000 PT”类型的 NIC 时,我没有发现数据包丢失。

    可以想象、NIC 或其他网络接口具有额外的设置时间、这会导致稳定链路连接和能够处理/转发收到的电报之间出现延迟。 如果是这种情况、并且我们可以排除其他问题、则有两种选择:我们可以在连接到应用事件链的过程中添加软件延迟(不是很吸引人)。 或者、我们可以信任网络初始化协议、这些协议会处理重复以涵盖此行为。

    此致

    Stefan

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

    您好 Stefan、

    我有两个问题:

    1. 链路伙伴之间在接收数据包的方式上是否有任何差异?
    2. 链路合作伙伴是否在链路连接和数据传输之间存在任何时间差异?

    此致、

    Adrian Kam

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

    Adrian、您好!

    两个链接合作伙伴都是使用 Windows 10提供的标准英特尔驱动程序的标准 PC 网卡。 没有其他硬件或软件更改。 为了进行测试、我启动 Wireshark 并选择了合适的接口。 我没有关于这些卡的数据包接收过程或时间差异的任何信息。

    在使用不同的链路伙伴(PC-NIC、受管/非受管/旧交换机、集线器、设备等)进行测试时、您是否观察到类似的行为?

    此致

    Stefan

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

    您好 Stefan、

    在与不同的链路伙伴进行测试时、我们没有观察到类似的行为。 您能再试一次吗? 请尝试使用标准以太网电缆将端口0连接到端口1,而不是使用外部回送适配器,并查看您是否能够发送和接收所有 ARP 数据包。

    如果上述情况不会导致数据包丢失、那么从 DP83822I 方面来看、PHY 似乎没有问题。 您可以尝试与链路伙伴进行环回设置、并查看初始数据包是否在接收端丢失。

    此致、

    Adrian Kam

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

    Adrian、您好!

    我使用标准以太网电缆连接了端口0和1。 由于 ICSS_EMAC 在开关模式下运行、我必须调整传输的数据包以避免生成的环路引起广播风暴。 因此、我将广播目标 MAC 替换为设备的单播 MAC 地址。

    启动设备时、由于切换行为、我接收两次发送的所有 ARP 数据包。

    我同意 PHY 或 ICSS_EMAC 端似乎没有问题的关联。 因此可以解决此问题。

    感谢您的支持。

    此致

    Stefan