相关疑难解决方法(0)

什么是linux irq域名,为什么需要它们?

什么是irq域,我读了内核文档(https://www.kernel.org/doc/Documentation/IRQ-domain.txt),他们说:

注册为唯一irqchips的中断控制器的数量显示出上升趋势:例如,GPIO控制器等不同类型的子驱动器通过将其中断处理程序建模为irqchips,即实际上是级联中断控制器,避免重新实现与IRQ核心系统相同的回调机制.

如何将GPIO控制器称为中断控制器?

linux interrupt linux-device-driver linux-kernel embedded-linux

7
推荐指数
2
解决办法
4936
查看次数

什么是linux中的链接irq,何时需要使用?

什么是链式IRQ?做什么chained_irq_enterchained_irq_exit做什么,因为在中断发生后IRQ线被禁用,但是chained_irq_enter调用与屏蔽中断有关的功能.如果该行已被禁用,为什么要屏蔽中断?

linux irq linux-kernel interrupt-handling embedded-linux

7
推荐指数
2
解决办法
3301
查看次数

我的中断处理程序是应该禁用中断还是ARM处理器自动执行?

我们小组正在使用自定义驱动程序在共享I2C总线上连接四个MAX3107 UART.四个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())

arm interrupt linux-kernel interrupt-handling

3
推荐指数
1
解决办法
4499
查看次数