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.

[参考译文] AM6422:MSRAM 和 DDR 的中断延迟

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1499739/am6422-inttrupt-delay-on-msram-and-ddr

器件型号:AM6422

工具/软件:

您好、

   我使用 SDK 8.6版、通过 A53引导 R5F、并涉及 IPC (处理器间通信)。 在运行期间、我发现从检测到硬件 IO 端口的变化到开始进入中断处理功能的延迟时间不稳定。 有时延迟超过500纳秒、有时会达到1微秒、甚至达到2微秒。 我使用逻辑分析仪并通过在中断进入功能中切换 IO 引脚电平来测量此情况。 当 R5F 内核在 DDR 上运行时、会发生这种情况。 当我不使用 A53引导 R5F、而是从 MSRAM 运行整个程序时、测量结果也不稳定。 我对这部分感到很困惑。 您能帮助分析一下吗? 即使在此过程中执行堆栈操作、是否会发生如此大的延迟? 值得注意的是、我正在使用的外部中断的优先级设置为0、这应该是最高优先级。

绿色(信号)的上升沿是硬件外部中断到达的实际时刻、蓝色(信号)的下降沿是刚刚进入中断处理函数的时刻。

整个方案包括三项任务:

  1. UART 数据处理任务
    • 优先事项:30
    • UART 使用中断驱动的接收、中断优先级为4。
  2. SPI 无线模块通信任务
    • 优先事项:33
    • 仅每2秒处理一次、使用轮询模式进行 SPI 通信。
  3. LED 控制任务
    • 优先事项:25

此配置在实时响应能力(例如 UART 处理高优先级中断)与周期性后台任务(SPI)和低优先级视觉反馈(LED 控制)之间实现了平衡。

很高兴收到您的消息!

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

    您好、

    我正在查看您的查询,你可能会期待下星期的答复。

    此致、

    Anil.

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

    您好:

       你对我在上面提出的问题有什么建议吗?

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

    您好:

    调试中断延迟–分步方法

    要确定 FreeRTOS 任务或关键部分是否导致观察到的中断延迟(2 µs 延迟为500ns)、请按照以下基于隔离的方法操作:

    步骤1:从 MSRAM (内部 SRAM)运行示例

    确保将整个应用程序(包括中断矢量表、ISR 代码和堆栈)放置在 MSRAM 中而不是 DDR 中。 这样就消除了 DDR 延迟和总线争用的影响。

     

    步骤2:仅运行一个任务(或无任务)

    不必运行三个 FreeRTOS 任务、而是简化设置:

    • 只运行一个极少的任务。
    • 只需启用外部中断并在 ISR 中对其进行处理。

    第3步:使用逻辑分析仪再次测量

    采用此极小设置时:

    • 在 ISR 开始时切换 GPIO 以标记 ISR 进入时间。
    • 与外部中断信号(输入边沿)进行比较。

    您现在应该观察到更一致的中断延迟。 如果抖动消失或显著降低、则根本原因可能是:

    • FreeRTOS 在关键部分期间禁用中断
    • 上下文切换开销。

    此致、

    Anil.

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

    您好、

      很抱歉更新。按照您的重新测试建议、仅运行一个任务时、中断响应延迟显著降低。 根本原因似乎是您提到的两个因素:关键部分中 FreeRTOS 的中断禁用操作和上下文切换开销。 如何优化这两个因素以减少延迟?

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

    您好、

    我不确定应用程序是在 MSRAM 还是 DDR 上运行。

    如果应用程序在 DDR 上运行、请将其保留在 MSRAM 中。

    如果 MSRAM 不足以运行应用程序、至少应将 FreeRTOS 库文件保留在 MSRAM 中。 这将减少抖动。

    除了这种方法外、没有减少抖动的方法。

    此致、

    Anil.

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

    您好:

    我需要使用内核间通信、因此必须在 DDR 上运行。 是否有任何方法可以减少此延迟响应?

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

    您好、

    为了减少抖动、我们需要将 FreeRTOS 库代码保留在 MSRAM 内存中、并将剩余代码保留在 DDR 内存中。

    FreeRTOS 库需要几乎40KB 的内存。 所以,尝试这种方法,除此之外,我们不能删除应用程序中的关键部分。

    下面的链接中提供了链接器 cmd 补丁详细信息。

    https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1326858/am243x-freertos-jitter?pifragment-323357=2#5433121

    此致、

    Anil.