Linux 混杂设备、外部中断和输入子系统
Linux 驱动开发 2010-08-14 10:59:59 阅读22 评论0 字号:大中小
混杂设备也是一种字符设备,主设备号固定为10。相对于普通字符设备驱动,它不需要自己
去生成设备文件。
1、声明使用的头文件
#include <linux/miscdevice.h>
2、定义一个混杂设备:
static struct miscdevice miscDevice = {
.minor = MISC_DYNAMIC_MINOR, //自动分配从设备号
.name = "设备名称",
.fops = &dev_fops, //设备文件操作指针
};
3、注册混杂设备:
misc_register(&miscDevice) //成功返回0
4、注销混杂设备:
misc_deregister(&miscDevice);
在驱动中使用外部中断
1、声明头文件
#include <linux/interrupt.h>
#include <mach/irqs.h>
2、申明中断处理程序
static irqreturn_t handler(int irq,void *dev_ID){
... ....
return IRQ_RETVAL(IRQ_HANDLED);
}
中断处理程序不能用户空间发送或接收数据,以及使用引起阻塞或调度的函数。
在中断处理函数中分配内存要使用 GFP_ATOMIC 标志,避免中断处理函数进入睡眠。
3、注册中断
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,const char *name, void
*dev) //成功返回返回0
irq:中断号
评论0