【问题标题】:fast interupt handler needed需要快速中断处理程序
【发布时间】:2014-11-22 03:06:03
【问题描述】:

我的手臂板上连接了一个外部设备,它会在微秒间隔内产生中断。 我想要的是一个快速的 irq 处理程序,它可以将 jiffies 时间戳放入一个数组中。

linux irq 处理程序正在获取大部分 irq,但并未真正运行所有处理程序。对于应该每 25 微秒运行一次的 irq,我得到了 10 毫秒的时间。一些处理程序以 0 延迟运行。看来他们排队了。如何获取实时的 IRQ 处理程序?

我使用的是高通 800 系列板,速度非常快。

【问题讨论】:

  • Jiffies 在 CONFIG_HZ 运行;无法使用它们来测量微秒。
  • 我说,外部设备会产生中断。我没有在系统中设置时间。我希望 IRQ 运行得更快。 IRq 必须根据事件触发,而不是在 20 毫秒后触发。
  • 中断运行正常;如果 jiffies 仅每 20 毫秒增加一次,您将无法注意到这一点。

标签: linux linux-kernel linux-device-driver


【解决方案1】:

Jiffies 不是您将使用并保存到数组中的正确时间戳。您必须使用的是高分辨率计时器(以 ns 为单位提供时间戳),与 jiffies 相比,它更合适。 Jiffies 是一个基于 CONFIG_HZ 递增的全局变量(通常每 10 毫秒),但它取决于平台。 如果您可以阐明目标用例,那么这将有助于获得正确的答案。 使用简单的中断可以满足您的需要,但您必须保留正确的时间戳。 Jiffies 不是那个。

无论如何,如果您对了解本地计时器的分辨率感兴趣,可以尝试此处发布的代码:How to implement elapsed time by jiffies

希望对您有所帮助。 艾门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 2011-07-20
    相关资源
    最近更新 更多