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:AM243x-LP

Guru**** 2392905 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1465358/am2434-am243x-lp

器件型号:AM2434

工具与软件:

你(们)好、
我想知道用户如何添加将在 EtherCAT 中断中调用的用户代码。  
供您参考、我在本页面上看到了一些 API: EtherCAT 堆栈的中断管理 API

Sync0Isr()、Sync1Isr()、EcatIsr()和 EscCmdLowAckIsr():这些 API 是否打算供最终用户使用?  

此致、
Jinlong

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

    您好、Jinlong:

    [quote userid="61717178" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1465358/am2434-am243x-lp 我想知道用户如何添加将在 EtherCAT 中断中调用的用户代码。  [报价]
    • 我可以知道您要添加什么类型的附加代码吗?
    [quote userid="61717178" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1465358/am2434-am243x-lp ()Sync0Isr()、Sync1Isr()、EscIsr()和 EscCmdLowAckIsr():这些 API 是否打算供最终用户使用?  [报价]
    • 您可以参考 source\industrial_comms\ethercat_slave\icss_fwhal\tiescbsp.c 中的 ISR 定义
    • 用户可以将用户代码添加到 ISR、但必须确保该添加不影响其他事件、因为中断子例程应该尽可能短且快。此外、通过添加代码块来增加 ISR 的大小可以影响其他在当前 ISR 完成之前保持挂起的任务或中断。 因此、您必须确保修改中断子例程不会破坏其他 EtherCAT 功能、并且已建立适当且稳定的 EtherCAT 通信。

    此致、
    亚伦  

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

    问:您的意思是 TI 没有提供注册回调的方法以便可以在 Sync0Isr ()或 Sync1Isr ()中调用客户回调?  
    问:如果客户在 Sync0Isr()或 Sync1Isr()中手动添加回调,如何重建库?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    问:您是说 TI 没有提供可在 Sync0Isr ()或 Sync1Isr ()中调用客户回调的注册回调方法吗?  [报价]
    • 客户可以将回调添加到  Sync0Isr()或 Sync1Isr()中。 它取决于应用的使用情况。 确保添加的内容不会影响 EtherCAT 的整体功能。
    • 您是指指导原则吗?  
    问:如果客户在 Sync0Isr ()或 Sync1Isr ()中手动添加回调、如何重建库?  [报价]
    • 在 Sync0Isr()或 Sync1Isr()中完成添加后、您就可以运行 "gmake -s -f makefile.am243x.r5f.ti-arm-clang" 对于版本构建和 "gmake -s -f makefile.am243x.r5f.ti-arm-clang 曲线=debug"  来进行调试构建。 这需要在 /source/industrial_comms/ethercat_slave/icss_fwhal.上运行

    此致、
    亚伦

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

    跟进:我想将中断可视化以便了解何时以及哪个中断被激活。 您能提供一些指导吗?  

    另外、我想看看 CPU 使用率、内存消耗和堆栈使用情况。 再说一次、您能给我一些指导吗?

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

    您好、Jinlong:

    有关跟进要求、请于下周中回复。

    此致、
    亚伦

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

    您好、Aaron、尽管在 SDK 中使用了 Sync0Isr ()。 可以在 sync0上创建一个额外的中断、用户可以在该中断中调用自己的函数、对吧?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可以在 sync0上创建额外中断(用户可以调用自己的函数)、对吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能否详细介绍一下如何做到这一点?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否分享该怎么做的详细信息?
    • 我会检查一下、如果有针对此类情况的推荐指南文档、我们会回来解答。

    此致、
    亚伦

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

    您好、Jinlong:

    我 找不到这种情况的官方指导文件。

    对于此类情况、需要注意以下几点:

    1. 如果用户函数需要执行复杂的操作、请注意栈溢出和 PRU 内的执行上下文。 确保中断处理不会阻止关键时序或使可用堆栈空间过载。
    2. 如果您的用户函数被阻塞(即、运行时间很长)、请考虑管理中断优先级或排队任务、而不是直接在 ISR 中执行长操作。
    3. 如果需要处理更复杂的任务、可以在 ISR 中设置一个标志、然后在主 PRU 循环中处理该标志(在中断上下文之外)。
    4. 确保对中断处理的任何修改都不会干扰 EtherCAT 协议的时序或同步要求。 PRU 通常在对时间敏感的循环中运行 EtherCAT 通信、因此在 SYNC0中断期间引入显著延迟或额外处理会破坏 EtherCAT 数据周期。
    5. 通过测试实现方案、确保您的自定义函数不会在 EtherCAT 过程中引入任何延迟或时序问题。

    您可以有效地组织自定义代码并确保中断服务例程保持轻量级、从而在保持系统性能的同时提供所需的功能。

    此致、
    亚伦