【问题标题】:Sysfs GPIO level-triggered interruptsSysfs GPIO 电平触发中断
【发布时间】:2014-11-03 09:00:38
【问题描述】:

我是一个新手,试图在嵌入式 linux 板上获得电平触发中断。我正在使用 poll() 来等待中断事件。我成功地获得了边缘触发的中断。

如何获得电平触发的中断? 我将边缘设置为什么?

【问题讨论】:

  • 我不确定我是否正确理解了您想要的内容。您想对上升和下降事件都进行中断吗?
  • @MicheleD'Amico:他想要电平触发中断。如果您不知道“级别触发”是什么意思,请使用 Google——它是一个定义明确的编程术语。本质上,如果某条线上的电平低或高(取决于配置),他希望连续获取中断事件。
  • 我知道它是什么,但我不确定,因为它并不真正适用于 gpio sysfs。如果他想要它,他必须在更高级别编写它,因为 gpio sysfs 不会(恕我直言)不会给用户空间这样的东西。

标签: c linux gpio sysfs


【解决方案1】:

下降或上升转换触发边沿触发中断。虽然轮询是处理此类中断的一种选择,但为了节省 CPU 周期,创建一个可由内核调度的线程在中断发生之前休眠,并在中断发生时唤醒它。这样,主程序就不会被锁定在轮询中。

中断线处于高电平或低电平为电平触发中断。边缘的概念不适用于电平触发中断。在这里,CPU 将扫描设备以找到触发中断的设备。一旦设备被服务,它将继续重新检查其他可能需要服务的设备的中断线状态(中断共享)。如果没有立即确认(清除/处理),系统可能会由于重复/连续调用中断处理程序注意而进入挂起状态。也就是说,外部设备应断言 IRQ 信号,直到挂起的中断被软件清除,就写入设备寄存器而言。如果许多设备都触发了 IRQ 信号,则高电平或低电平将一直存在,直到所有设备驱动程序都为其各自的设备提供服务。所以,应该立即处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多