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.

[参考译文] AM243X-AM243X:高中断延迟 MCU-PLUS-SDK

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1528500/mcu-plus-sdk-am243x-high-interrupt-latency

器件型号:AM243X - MCU-PLUS-SDK

工具/软件:

你(们)好  

我使用 AM243x 至来进行电机控制 EtherCAT 驱动器。  这是一个硬实时应用、它的主中断应以 32kHz 的速率(每 31.25us)运行。

当我进入 SYNC 0 中断例程时、我会生成一个数字输出。  我发现 EtherCAT sync0 信号与我在 sync0 中断中设置的数字输出之间存在高延迟。    两个信号上升沿之间的差值约为 2us。

您能解释一下这种延迟的原因是什么吗?  

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

    您好、

    在 800MHz 时、2μs 代表大约 1600 个 CPU 周期、这一数值考虑了:
    -上下文保存操作
    -矢量表查找
    -分支到 ISR 执行
    -多中断控制器转换( CPU +系统级)
    - FreeRTOS 开销(如果适用)

    您可以尝试优化以下参数、并查看~2us 的延迟是否会降低:

    中断配置:
    -为关键中断配置适当的优先级
    -尽量减少可能导致延迟的较高优先级中断
    -查看中断控制器设置

    2、代码级优化:
    -尽量减少关键 ISR 中的栈使用
    -尽可能优化上下文保存
    -降低 ISR 中的函数调用深度

    让我知道即使在优化后、延迟是否一致。

    此致、
    Aaron

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

    以下文档中的一些建议也将有助于减少中断延迟

    AM263x MCU+ SDK:使用 MCU SDK 优化应用

    AM263x MCU+ SDK:优化实时控制应用

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

    谢谢 Aaron、我会检查您的建议。 能否指定  FreeRTOS 开销的部分 ?

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

    尊敬的 Maor:

    感谢您的跟进。

    关于导致~μ s 2µs 延迟的 FreeRTOS 开销、是的、该延迟的一部分可能来自 RTOS、尤其是在您在 ISR 中调用 FreeRTOS API 时。 这些 FreeRTOS 操作可能非常重要、可能需要数百个周期、具体取决于 CPU 频率和中断嵌套。

    一般而言、我指的是、在优化 R5F 代码时、可以减少您观察到的 2 个信号之间的延迟。 务必告诉我、即使在进行上述优化后、2 个信号抽头之间是否存在一致的延迟。

    此致、
    Aaron