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.

[参考译文] PRU 示例工程以读取以太网帧

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1121094/pru-example-project-to-read-ethernet-frame

主题中讨论的其他器件:TMDS64GPEVMTIDEP0032

您好!

我正在使用 TMDS64GPEVM 电路板[使用 SDK 08.03.00.18]、我想开发一个 PRU 项目、能够在收到 EtherCAT、Profinet 或以太网 IP 数据包时读取以太网帧并生成到 R5F 内核的中断。

我没有找到这样的示例项目、查看指定 SDK 中的示例[关于"工业通信"示例 PRU 二进制文件已在"工业通信"二进制文件中编译]。

您是否正在考虑开发类似的 PRU 项目示例?

此致

Andrea

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

    安德烈

    您能否使用混杂模式(或 tcpdump)和标准以太网来捕获网络流量、对常规 ARM 内核中的帧进行逆向工程、然后确定网络中的活动协议? 或者您为什么需要尝试在 PRU 级别执行此操作。

     Pekka

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

    尊敬的 Pekka:

    我真的不需要在 PRU 级别进行设计、但我想遵循您在 AM335器件[TIDEP0032代码示例]中所做的操作。

    一个问题:我不需要 EtherCAT 协议的 PRU 吗?

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

    是对于 EtherCAT 或 EtherNet/IP 或 PROFINET、您需要特定于协议的固件和软件堆栈。 这些协议中的每一种协议都具有不同的固件、它们不能并行存在于 ICSS 的程序存储器中。

    我对您尝试执行的操作的理解:

    1.在以太网线路上侦听流量,尝试对 LAN 中使用的工业协议进行逆向工程。 实现这一目标的构建块是捕获原始以太网帧、查看用于 PROFINET 和 EtherCAT 的 EtherType、然后深入了解 EtherNet/IP 的数据包。 这是您的代码、没有标准或一般规范来完成此操作。 一种可能是以太网处于混杂模式、或者例如运行标准以太网的 ICSS 的 tcpdump。 我们在 PRU 中有 AM335x 的旧演示、但在 PRU 或 Arm 内核上检测协议没有任何优势。

    2.决定使用何种协议

    3.在检测到协议的情况下加载并重新启动 ICSS

    ICSS 运行 TI 的特定于协议的固件、R5运行软件堆栈(TI 工业通信工具套件或第三方)

     Pekka

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

    添加到 Pekka 的响应:

    我们确实为通用 PRU 编程提供了基本资源(例如 ,https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/08_02_00_17/exports/docs/linux/Foundational_Components_PRU-ICSS_PRU_ICSSG.html 上的最新 AM64x 文档 )。 我们将继续添加一些其他资源,例如我们在 SDK 8.3 (AM62x 文档: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/08_03_00_19/exports/docs/common/PRU-ICSS/PRU-Getting-Started-Labs.html )中开始记录的这组新的入门实验。

    但是、PRU 网络固件 非常复杂、我们不能在论坛上回答有关编写或修改 PRU 网络固件的问题。 如果需要特定的协议或软件栈、我们可以帮助您连接到 TI 内部或第三方开发人员的合适资源。

    此致、

    Nick

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

    您好 Pekka、是否有实现 tcpdump 的代码示例?

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

    也许值得采取的步骤是使用 tcpdump 捕获网络流量,并使用 Wireshark https://www.wireshark.org/docs/wsug_html_chunked/AppToolstcpdump.html 进行分析 。 Wireshark 文档包括 EtherCAT https://wiki.wireshark.org/Protocols/ethercat 等工业协议的示例捕获

    tcpdump 的完整手册页位于 https://www.tcpdump.org/manpages/tcpdump.1.html 。

     Pekka

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

    尊敬的 Pekka:

    非常感谢您的回答、但我已经做过。

    我曾尝试问您[可能我的请求不是很清楚]、是否有一个代码示例来了解如何初始化和管理 AM64x [R5F 内核]以尝试捕获和分析以太网帧[我在分析或打印的 SDK 代码示例中找不到该示例 接收到的终端以太网帧]、以了解我必须使用哪些 SDK 驱动程序来实现它。

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

    安德烈

    对于演示、我建议使用 Linux 和可用的广泛工具。 使用 Linux 作为标准以太网、扫描线路上的流量以尝试确定使用的工业协议、然后使用适当的堆栈和 ICSS 固件重新引导 R5。 我想提醒一下、正如我之前所说的、没有任何一般情况或标准可以保证检测所使用的工业网络、因此演示显然是可行的、但可能会有一些难以涵盖的临界情况。 如果您尝试在 R5 FreeRTOS 中复制 Linux 工具或功能子集、它们当然可以在源代码中使用。

    在 R5 FreeRTOS 上、以太网第2层功能的基本示例为:

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/latest/exports/docs/api_guide_am64x/EXAMPLES_ENET_LAYER2_ICSSG.html 

    要启用混杂模式(您正在尝试反向设计 LAN 中其他设备的通信),就像有一个 API:

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/latest/exports/docs/api_guide_am64x/group__NETWORKING__ICSS__EMAC__MODULE.html#gaa99712fc609fb0a9bf7a11eb4d854336 

    修改示例以开始使用此示例获取 LAN 中的所有帧、并添加从 LAN 中活动工业协议的角度确定此流量含义的逻辑。

     Pekka

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

    线程已解锁。

    -Nick