关于Linux驱动开发的中断处理

1.相关名词

        轮询: CPU不断的去读硬件状态。另一种是当硬件完成某种事件后,给 CPU一个中断,让 CPU 停下手上的事情,去处理这个中断。

        内部中断: 是指中断请求信号与代码指令之间的同步执行,在一条指令执行完毕后,CPU才能进行中断,不能在执行期间。

        异步中断:是由外部硬件设备产生,又称为外部中断,与同步中断相反,异步中断可在任何时间产生,包括指令执行期间,所以也被称为中断。

        IRQ:IRQ的全称是“Interrupt ReQuest”,即“中断要求。

2.中断常用的API

函数  主要功能
int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev) 注册IRQ
void free_irq(unsigned int, void *) 释放IRQ
local_irq_enable() 激活当前CPU中断
local_irq_disable() 禁止当前CPU中断
void enable_irq(unsigned int irq) 激活指定中断线
void disable_irq(unsigned int irq) 禁止指定中断线
void disable_irq_nosync(unsigned int irq) 禁止指定中断线

注:最后一个函数调用irq_chip中disable禁止指定中断线,所以不会保证中断线上执行的中断服务程序已经退出。

3.技术特点

        Linux系统把中断的意义扩展了,对于按键中断等硬件产生的中断,称之为“硬件中断”(hard irq)。每个硬件中断都有对应的处理函数,比如按键中断、网卡中断等。这里可以理解为对硬件中断的处理是用数组来实现的,数组里存放的是函数指针。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值