如何在 Linux 中以 4kHz 的精确速率执行任务(如有必要,使用 PREEMPT-RT)



在我的嵌入式C代码中,我需要以精确的4kHz速率运行一个函数来模拟一些波形。我正在运行一些带有PREEMPT-RT补丁的Linux 3.10内核。这个问题与这篇文章非常相似:Linux的hrtimer - 微秒精度?但我的特殊问题是:最近的 PREEMPT-RT 内核是否提供了一些用户 API 或更方便的方式来达到这种目的?

我刚刚通过使用Xenomai框架提出了一个替代解决方案。我在我的Linux中构建并安装了Xenomai,并安装了Xenomai用户空间支持。然后有一个简单的 API rt_task_set_periodic允许您精确地安排定期任务。下面是示例:https://github.com/meeusr/xenomai-forge/blob/master/examples/native/trivial-periodic.c

在我看来

..不。PREEMPT_RT只在需要时中断内核。我个人的意见是尝试找到一个延迟例程,并在示波器上对其进行调整。

有一个类似的问题,我发现"睡眠"和"usleep"不是那么准确,我最终编写了自己的延迟例程。

希望这有帮助。

最新更新