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.

[参考译文] RTOS/TMDXIDK5718:降低计时器 ISR 延迟/抖动

Guru**** 2615135 points

Other Parts Discussed in Thread: SYSBIOS, AM5718

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/650770/rtos-tmdxidk5718-reducing-timer-isr-latency-jitter

器件型号:TMDXIDK5718
Thread 中讨论的其他器件:SYSBIOSAM5718

工具/软件:TI-RTOS

你(们)好

我在 IDK 5718上有一个 C66程序。
使用 SYSBIOS,我已将 dmtimer 配置为定期(每100us 一次)运行 TimerFunction()。
在 TimerFunction 的开头、我设置一个 GPIO 引脚。
在 TimerFunction 结束时、我清除该 GPIO 引脚。
TimerFunction 的工作负载小于一微秒。

当我使用外部示波器测量 GPIO 引脚时、我可以看到 ISR 具有较大的抖动。
有时、两个感应定时器函数之间的时间为105us。 因此、ISR 延迟可高达5us。

根据 SYSBIOS 基准测试结果(. \packages/ti\SysBIOS\benchmarks\doc-files\benchmarks.html)
C66的最大中断延迟为268个周期。 当以700MHz 运行 C66时、这大约为0.38us。
编译配置文件设置为"Release"、BIOS Lib Type 设置为"custom"

一个或两个低优先级任务在后台运行。 已启用 L2高速缓存(128KB)、并且的活动部分
程序应轻松适应此缓存大小。

由于从 L2高速缓存运行的速度比从 L1 RAM/高速缓存运行的速度慢2-3倍、因此我的最大延迟大约为1us、但不是5us。
我的程序不会禁用/恢复 TimerFunction 之外的中断。

如何改善 TimerFunction 的延迟/抖动?

此致、
Markus

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    如果您也使用 A15和 M4、您能告诉我们吗? 或者、您只是在 C66x 上运行一些 DSP 代码、并且是否存在此抖动问题?

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

    你(们)好 Eric

    稍后、我还将运行 A15、但此时只有 C66正在运行。
    它们(A15、M4)如何影响 C66的中断延迟?

    此致、
    Markus

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

    这里有一个类似的问题: 使用 AM5718的 e2e.ti.com/.../2179819、并且在 M4内核上观察到 GPIO 抖动、抖动大约为我们数十人。 我们没有看到 DSP 内核上的抖动、可能是因为它非常小、可以容忍。 在您的情况下、如果您更改计时器间隔、抖动是否与时间间隔成正比? 计时器是任务还是 SWI? 如果计时器任务 ISR 没有任何其他任务、该怎么办?

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

    你(们)好 Eric

    感谢你的答复。
    我休息了几天、我将尽快检查。

    此致、
    Markus

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

    你(们)好 Eric

    我最终发现、大抖动是我的错误。

    我在前面禁用了共享存储器区域的高速缓存。
    因为禁用高速缓存只能在16MB 的块中执行、所以这种情况也是意外的
    已禁用整个 OCMC 内存范围的高速缓存。

    当允许缓存此存储器范围时、抖动再次降至0.1us 以下。

    此致、
    Markus