【Tiny6410 And Linux】—(2.2)—Linux 中断处理——原理

有点小烦躁!!!

1、Linux 中断接口函数

①、request_irq

request_irq 头文件#include <linux/interrupt.h>函数原型

int request_irq(unsigned int irq,irq_handler_t handler,unsigned long flags,

const char *name,void *dev);

功能描述申请中断函数参数

▲:irq:中断号,某些平台上中断号到硬件中断号的映射并不是一一对应的。

▲:handler:指向要安装的中断处理函数的指针。

▲:flags:与中断管理有关的各种选项的字节掩码。

例如:

IRQF_DISABLED(SA_INTERRUPT):如果设置该位,表示是一个快速中断处理程序,否则为慢速的!

IRQF_SHARED(SA_SHIRQ):该位表明终端可以在设备间共享(就是将不同的设备挂到同一个中断信号线上)。

▲:name:传递给 requeset_irq 的字符串,在 /proc/interrupts 中用于显示中断的拥有者。

▲:dev:共享中断信号时用于区别的标识符。多个中断使用同一个中断处理函数也可以通过该参数区分。不使用置 NULL

返回值返回值为 0 时表示成功,或者返回一个负的错误符,函数返回 -EBUSY 通知另一个设备驱动程序已经使用了要申请的中断信号线。

②、free_irq

free_irq 头文件

#include <linux/interrupt.h>

函数原型void free_irq(unsigned int irq,void *dev_id);功能描述释放中断函数参数

▲:irq:中断号

▲:dev_id:通 request_irq 的参数 dev。

返回值无。

然后贴一张国嵌制作的中断处理流程吧:

其中编写中断程序(在中断上下文中运行)必须注意一下几点:

①、不能向用户空间发送或者接收数据。

②、不能使用可能引起阻塞的函数。

③、不能引起可能引起调度的函数。

无论何时何地,只要创造就有收获,只有不息的奋进,才能证明生命的存在。

【Tiny6410 And Linux】—(2.2)—Linux 中断处理——原理

相关文章:

你感兴趣的文章:

标签云: