嵌入式linux开发,调用request_irq后,需要再做什么工作?什么时候会调用中断处理函数?
对于中断有些不解。
用系统的I2C驱动作为例子,
假设申请完中断:ret = request_irq(i2c_imx->irq, i2c_imx_isr, 0, pdev->name, i2c_imx);
i2c_imx->irq是系统已经定义过的irq号。
在platform-imx-i2c中有相关的resource定义:
#define imx_imx_i2c_data_entry_single(soc, _id, _hwid, _size) \
{ \
.id = _id, \
.iobase = soc ## _I2C ## _hwid ## _BASE_ADDR, \
.iosize = _size, \
.irq = soc ## _INT_I2C ## _hwid, \
}
那我看系统的驱动i2c-imx.c中,申请完中断后,没有做什么工作了。
那什么时候会进入中断处理函数?是不是只要中断引脚有相关信号,就会触发中断?
目前只了解到安装完中断处理函数,会在对应的linux内核代码中设置类似“中断号——>>>处理函数地址”。
但是不知道linux内核是如何知道硬件上的中断信号(如电平边缘触发)?