我们的组使用定制的驱动程序相接口4克MAX3107的UART一个共享的I2C总线上。 四个MAX3107的的中断连接(通过逻辑或所得即共享的中断))到ARM9处理器(LPC3180模块)上的GPIO引脚。 当一个或多个这些设备的中断,它们拉GPIO线,其被配置为电平敏感中断,低。 我的问题是关于需要,还是不行,禁止在处理程序代码的具体断线。 (我要补充一点,我们运行的是Linux 2.6.10)。
根据我对中断几个特定ARM的应用笔记阅读,似乎当ARM处理器接收到中断时,它会自动禁用(口罩?)相应的中断线路(在我们的情况下,这似乎是对应于行GPIO引脚我们选择)。 如果这是真的,那么我们似乎不应该在我们的中断处理程序代码的GPIO引脚禁止中断,因为这样做会显得多余(虽然它似乎工作没关系)。 换句话说,在我看来,如果ARM处理器会自动禁用GPIO中断时产生中断发生,那么如果有的话,我们的中断处理程序代码应该只需要重新启用中断一旦设备被服务。
我们使用的是中断处理程序代码包括disable_irq_nosync(irqno);
在处理程序和相应的最开始enable_irq()
在处理程序结束。 如果ARM处理器已经禁用了中断线路(硬件),什么是这些调用(即调用效果disable_irq_nosync()
然后调用enable(irq())