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/AM4377:EtherCAT 主站模式下的 PRU 以太网问题

Guru**** 2595805 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/586726/linux-am4377-pru-ethernet-issue-in-ethercat-master-mode

器件型号:AM4377

工具/软件:Linux

您好!

 我遇到了 PRU-ICSS 以太网固件问题。 我想将 PRU 用作 EtherCAT 主端口,但 PRU 内部运行的以太网固件会锁定,无法恢复。 我已经快速浏览过这个论坛,我的问题与这个论坛几乎相同: https://e2e.ti.com/support/arm/sitara_arm/f/791/p/551485/2019092

如果我将 EtherCAT 从站直接连接到其中一个 PRU 端口,PRU 内的固件将锁定、停止触发中断,并且无法恢复(即使我执行“rmmod prueth”和“modprobe prueth”)。 我必须重新启动系统才能再次启动。

如果我尝试将从设备直接连接到 CPSW 端口、则它可以正常工作。

如果我尝试在 PRU 端口和 EtherCAT 从站之间放置一个以太网交换机、它将正常工作。 这可能是因为交换机正在丢弃任何无效帧。 因此、PRU 上接收到的无效帧似乎会导致其固件以某种方式崩溃。

只需明确一点:这不是 EtherCAT 问题。 这是以太网问题。 更具体地说、这是一个 PRU-ICSS 以太网固件问题。

通常我会自行修复,但 TI 尚未发布 PRU 以太网固件的源代码,仅发布二进制文件,因此我实际上无法执行任何操作。 请修复此问题。

 下面是设置:

  • AM437x IDK 板
    • 运行最新的 SDK v3.02
    • 适用于 Linux 的 IGH EtherCAT 主站

  • Beckhoff EL9800评估板
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您能否使用最新的 SDK 3.3 (刚刚发布...)进行检查? 这可以修复另一个线程中提到的 PRU 问题。

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

    您好、Frank、

    我刚刚使用新的 SDK 进行了测试、问题完全相同。
    此外、我还对照之前的 SDK (3.2)检查了 PRU 二进制文件的 CRC、它是相同的。 这意味着根本没有任何变化。 我对普鲁思的司机也做了同样的事情,再说一次,也是一样的。
    当您说这已修复时,该信息的来源是什么?
    如果您需要有关我的器件的更多信息、请告诉我、但我们需要解决该问题…

    谢谢!

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

    您好!

    很抱歉、我错过了您在 AM437x 上的机会、先前的修复显然仅针对 AM335x 完成。 现在、我们需要检查您的问题是否与另一个线程中的问题相同、以及这是否也会影响 AM437x。 我将要求进行一些内部调查。

    但是、从您的角度来看、我们还需要一些数据。 到目前为止、描述没有提供足够的详细信息和证据来证明什么是错误的。 您能否提供 Wireshark 日志?

    >>因此,PRU 上接收到的无效帧似乎会导致其固件以某种方式崩溃。

    在您的案例中、此类无效帧来自哪里?

    此致、

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

    您好、Frank、

    嗯,我认为我发现了这个问题!
    当我获取您所查找的 Wireshark 日志时、我注意到一组 ICMPv6帧与 EtherCAT 帧一起传输。 我们在过去已经注意到 IPv6帧和 EtherCAT 不能很好地融合在一起、因此我继续操作、禁用了 PRU 接口上的所有 IPv6、并且它起了作用。 现在、我能够在 PRU 接口上发送和接收 EtherCAT 帧、而不会出现任何问题。

    下面是我禁用 IPv6的步骤:
    (临时,重新引导时丢失):# echo 1 >/proc/sys/net/ipv6/conf/eth1/disable_ipv6
    (永久):# echo "net.ipv6.conf.08.disable_ipv6=1">>/etc/sysctl.conf

    尽管如此、也许这是需要研究的问题、因为 ICMPv6帧会导致 PRU 停止响应、这仍然很奇怪。

    谢谢你