嵌入式linux开发,调用request_irq后,需要再做什么工作?什么时候会调用中断处理函数?

mx_try 2018-09-21 01:46:40
对于中断有些不解。
用系统的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内核是如何知道硬件上的中断信号(如电平边缘触发)?
...全文
747 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigPillow 2018-09-27
  • 打赏
  • 举报
回复
GIC 传过去的。
飞翔的笨蛋 2018-09-27
  • 打赏
  • 举报
回复
引用 2 楼 mx_try 的回复:
[quote=引用 1 楼 fafactx 的回复:]
问题是什么?


就是不知道Linux内核怎么知道中断的到来?是不是有一个专门的线程,不断地监测引脚信号的变化,然后通知中断信号的到来?[/quote]
建议查看下 《Linux设备驱动开发详解:基于最新的Linux 4.0内核 》宋宝华 的书,里面有对中断部分详细讲解。
whoami_I 2018-09-25
  • 打赏
  • 举报
回复
中断是硬件级别就可以触发的
mx_try 2018-09-23
  • 打赏
  • 举报
回复
引用 1 楼 fafactx 的回复:
问题是什么?
就是不知道Linux内核怎么知道中断的到来?是不是有一个专门的线程,不断地监测引脚信号的变化,然后通知中断信号的到来?
文虫并雕 2018-09-22
  • 打赏
  • 举报
回复
问题是什么?

1,319

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧