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.

[参考译文] AM2434:AM2434 EtherCAT 从站(完整 TI 栈):在 ICSSG PRU 上正确取消初始化/重新初始化

Guru**** 2928980 points

Other Parts Discussed in Thread: AM2434

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1645378/am2434-am2434-ethercat-slave-full-ti-stack-proper-deinit-reinit-on-icssg-pru

器件型号: AM2434

您好、


我正在使用 Sitara AM2434 上的完整 TI 协议栈和 AM243x 工业通信 SDK 11.00.00 开发 EtherCAT 从站应用。

我当前正在 ICSSG PRU 上运行 EtherCAT 从站协议栈(如工业通信 SDK 示例中所述)。 堆栈的初始化和固件加载按预期工作、从站在 EtherCAT 网络中正常运行。

但是、我遇到了 EtherCAT 从站的受控关断和重启问题

应用场景

我需要:

  1. 正确 停止/停用正在运行的 EtherCAT 从站
  2. 取消初始化所有相关资源 (PRU,驱动程序,栈,存储器等)
  3. 随后 在同一应用运行时内重新初始化并再次重新启动 EtherCAT 协议栈

->目标是  在不重新引导系统的情况下启用运行时重新启动功能

问题描述

  • 初始启动工作正常
  • 但是、在尝试执行以下操作后:
    • 停止 EtherCAT 堆栈
    • 取消 ICSSG/PRU 和堆栈组件 的 初始化无法可靠地重新初始化
  • 似乎并非所有资源都已完全复位、或者某些内部状态仍然存在(可能在 PRU 固件,共享存储器或驱动程序层中)

问题

  1. 是否有 正式或推荐的顺序

    • 停止 EtherCAT 从站堆栈
    • 卸载或复位 PRU 固件
    • 取消初始化 ICSS/驱动程序组件
    • 会发生什么情况?
  2. 工业通信 SDK 中是否有任何特定 API 可用于:

    • EtherCAT 协议栈取消初始化
    • PRU-ICSSG 复位(除了基本的驱动程序关闭调用之外)?
  3. 正确重启是否需要:

    • 完全的 ICSSG 子系统复位、或
    • 甚至 进行了器件复位、是否完全在软件中可实现这一点?
  4. 当前 SDK (11.00.00) 对于 EtherCAT 的多个 init/deinit 周期是否存在已知限制?

非常感谢提供任何指导、建议的顺序或参考示例。

此致
Andreas

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

    您好 Andreas、

    目前、我们没有记录停止和重新启动 EtherCAT 子器件堆栈的步骤。 您能告诉我们需要受控关断和运行时堆栈重新启动功能的应用上下文吗?

    此致、

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

    您好:

    感谢您的答复。

    应用环境如下:

    我想在工业通信 SDK 提供的 ICSSG PRU 上运行 EtherCAT 子器件堆栈。 不过、根据系统配置或工作模式、也应使用相同的 ICSSG 实例进行 标准以太网/TCP/IP 通信、而无需任何现场总线

    因此、需要:

    • 完全停止和关闭 在 ICSSG PRU 上运行的 EtherCAT 堆栈
    • 取消初始化所有与 EtherCAT‑相关的软件组件、包括 PRU 固件、共享存储器和 ICSSG 驱动程序
    • 随后、 重新初始化 ICSSG PRU 、使其可用于不同的固件和通信模式(标准 TCP/IP)

    此切换应 完全在运行时在软件中完成、而无需完全重置或重新启动器件。

    因此、为了在以下各项之间实现安全转换、必须对 ICSSG PRU 进行受控关断和干净的重新初始化:

    • EtherCAT 操作 (PRU 上的完整 TI Stack);和
    • 在同一 ICSSG 实例上进行非‑Ω 现场总线以太网操作。

    有关是否支持此用例、建议的复位/取消初始化序列或当前 SDK 的架构限制的任何指导都将非常有用。

    此致
    Andreas

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

    尊敬的 Andreas:

    感谢应用环境。 您能否告诉我们 EOE(EtherCAT 以太网)是否可用于您的应用中的标准 TCP/IP 通信? 请参阅  EtherCAT 子器件文档中的以太网 over EtherCAT (EOE) 页面。 另请参阅  工业通信 SDK 中的示例 Webserver 演示示示例。

    此致、

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

    您好、

    感谢您的建议。

    当 EtherCAT 处于活动状态时、我们的应用中已经使用了 EOE(基于 EtherCAT 的以太网)、非常适合通过 EtherCAT 主站提供 TCP/IP 通信。

    但是、我的要求略有不同:

    我想实现一个额外的工作模式、在 该模式下不存在 EtherCAT 主站、并且该器件完全 使用同一 ICSSG 实例进行标准以太网/TCP/IP 通信。

    这意味着:

    • EtherCAT(包括 EOE)已 完全禁用
    • ICSSG PRU 与 不同的固件/配置一起用于标准以太网操作
    • 系统应该能够 在运行时在这两种模式之间切换、理想情况 下无需重新启动

    因此、关键要求是能够:

    • 完全关闭 EtherCAT 协议栈并释放所有 ICSSG/PRU 资源
    • ‑重新初始化 ICSSG、以供非现场总线以太网使用

    您能否告知是否支持此类运行时转换、或者当前 SDK 中是否存在关于在 EtherCAT 和标准以太网模式之间重复使用 ICSSG 的已知限制?

    此致
    Andreas

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

    尊敬的 Andreas:

    不支持完全关闭 EtherCAT 协议栈和释放 ICSSG/PRU 资源。

    可以从 EtherCAT 子器件应用对 AM243x 器件执行软件复位、并加载非 EtherCAT 应用程序、该应用程序通过使用自定义 SBL 初始化 PRU 以实现标准 TCP/IP 通信、该 SBL 根据某些条件(例如 EEPROM 中的特定值)决定要加载的应用程序类型 (EtherCAT 子器件或非 EtherCAT)。  

    此致、