IORESOURCE_IRQ(地址)如何在soc芯片中工作?

时间:2012-08-01 06:50:40

标签: linux embedded embedded-linux

我们可以在ic规范中读取寄存器映射,我们可以发现中断有一些地址。 我们注册片上控制器的中断,如usb控制器等,我们使用资源类型来注册中断处理程序。如果我们检查proc / interrupts中的信息,我们可以看到中断类型是GIC(通用中断控制器)。

中断如何工作?这就像GPIO中断吗?为什么地址可以代表中断信号?这是否意味着系统将gpio /地址映射到中断号码? 我想知道这方面的细节。

提前感谢。

1 个答案:

答案 0 :(得分:0)

我很高兴分享这个。

因为我只使用PowerPC,MIPS核心的嵌入式设备,所以我不会谈论x86,抱歉。

中断信号通常由模块控制器触发,例如SD控制器,UART控制器,SPI控制器等。

如您所知,该信号表示该设备上发生了事件,需要CPU注意。

在芯片上,通常有一个中断处理模块,来自各种控制器的中断信号将被发送到该模块。

通常,中断处理模块中有多个信号引脚,但通常情况下,只有一个引脚输出到CPU内核。

如果中断信号引脚仅由一个设备使用,或者说一个控制器使用,我们可以说中断不是共享的。 我们引用共享中断的原因是它的处理流程与非共享中断不一样。

即使存在一个中断,并且已经发送到核心,如果没有软件愿意为其提供服务,也不会处理它。

因此,在系统的引导或初始化过程中,共同的是,每个模块中都会有一个代码块,主要是设备模块,它将负责irq的初始化,例如调用request_irq()。

request_irq()的确切作用是将softare附加到某个中断信号,这样就建立了硬件中断信号和软件ISR之间的关系。

通过调用request_irq(),系统被告知有人想要处理该事件,如果该事件发生,系统将通过调用传递给request_irq()的函数使该人知道。与irq号码。

顺便说一句,当你说“中断有一些地址”时,我不是很清楚。 你能提供更多细节吗?