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.

[参考译文] AM2432:EtherCAT 应用中的 PRU 复位指示

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1522164/am2432-pru-reset-indication-in-ethercat-application

器件型号:AM2432

工具/软件:

你(们)好

我们的一位客户抱怨节点地址突然更改、因此我们遇到了问题。

该问题仅在系统正确配置并运行后的某个时间出现、我们看到寄存器0x0012从原始节点地址更改为0。

我们希望确保没有不必要的 PRU 复位。 是否有办法进行检查? 这种情景听起来可能吗?

我们使用 ICSSG0来运行 ECAT 协议栈

谢谢您、

Sahar Schwartz

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

    尊敬的 Sahar:

    Unknown 说:
    我们要确保没有不必要的 PRU 复位。 是否有办法进行检查? 这种情景听起来可能?
    • 发生 PRU 复位的可能性很小。
    • 确保将0x0103.bit0设置为激活0x012:0x013。

    如果在0x012发生更改后正在处理非 FPxx 数据包(WKC 递增)、则意味着 PRU 仍在运行并处理传入的数据包。 此外、您能否共享此场景的 Wireshark 日志?0x010寄存器正在被0覆盖? 观察到这种情况的频率有多高?

    此外、您可以参考 ICSSG_PRU_STATUS 寄存器(地址偏移0x30022004和0x30024004)以获取程序计数器值、然后查看 PRU 是否仍在运行:

    此致、
    Aaron

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

    嗨、Aaron。

    感谢您的答复。

    确保0x0103.bit0设置为激活0x012:0x013。

    我真的尝试过。 在将状态更改为 OP 之前、我向该位写入1、并且控制器将节点设置为 OP 后、该位再次被覆盖为0。

    我可以尝试在 OP 期间将其设置为1。 会有同样的影响吗?

    此外、您能否分享此场景的 Wireshark 日志?是否也是0x010寄存器被0覆盖? 观察到这种情况的频率有多高?

    这个问题不是很频繁和难以"抓住"。 这就是为什么我们还没有 Wireshark 日志。 我们希望找到这个问题的复制步骤,然后我们就能得到它们。  

    关于0x010寄存器、它不显示0、但更改为一些垃圾值。 寄存器0x012有时显示为0、有时显示为垃圾(不同于0x010)

    您能否分享一个链接、指向您从中获取状态寄存器描述的文档?

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

    尊敬的 Sahar:

    我可以尝试在 OP 中将其设置为1。 它会有同样的影响吗?
    • 是的、我认为这应该很好。
    这个问题不是很频繁、很难"捕捉"。 这就是为什么我们还没有 Wireshark 日志。 我们希望找到这个问题的复制步骤,然后我们就能得到它们。  [/报价]
    • 我知道误差频率非常低。
    • 我们必须查看谁覆盖了这些值、是 EtherCAT 主设备、EtherCAT 子设备协议栈还是 EtherCAT 子设备固件。
      • 如果 Wireshark 日志可用、则可以排除 EtherCAT 主设备干预。
      • 可通过在地址0x30090103处添加硬件观察点来检查 EtherCAT 子设备栈干预(假设您正在使用 ICSSG1实例)。 您可以使用以下步骤添加观察点:
        • 右键点击"Breakpoints"窗口、然后选择 Breakpoint -> Hardware Watchpoint。
        • 在 Hardware Watchpoint 框中、输入地址  0x30090103  在"位置"字段中、然后选择  写入  进行存储器编程。
      • 您可以对覆盖以排除堆栈干预的所有地址空间执行此操作。
    • 通过上述检查的状态、我们可以看到固件是否干扰。

    另外、当您能够重现此问题时、请提供 ESC 寄存器空间的完整内存转储。 此外、您使用哪个 EtherCAT 主设备进行测试? 这是同一个在 这个线程中提到的 吗?

    此致、
    Aaron