博创科技之2.6.21驱动改写理论学习

一、int set_irq_type(unsigned int irq,unsigned int type);
     1.irq为所要设置触发类型的中断引脚,type表明中断引脚的触发类型。
     类如:
     set_irq_type(IRQ_EINT8,IRQ_TYPE_EDGE_FALLING);
     这里的IRQ_EINT8,中断引脚通过IRQ_TYPE__EDGE_FALLING被设置为下降沿触发。
     2. 中断的触发类型: 在set_irq_type(irq, type)中使用
         #define IRQ_TYPE_NONE 0x00000000 未指明类型
         #define IRQ_TYPE_EDGE_RISING 0x00000001 上升沿触发
         #define IRQ_TYPE_EDGE_FALLING 0x00000002 下降沿触发
         #define IRQ_TYPE_EDGE_BOTH (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)
         #define IRQ_TYPE_LEVEL_HIGH 0x00000004 高电平触发
         #define IRQ_TYPE_LEVEL_LOW 0x00000008 低电平触发
         #define IRQ_TYPE_SENSE_MASK 0x0000000f
         #define IRQ_TYPE_PROBE 0x00000010
     3.set_irq_type(IRQ_EINT22,IRQT_RISING);
         实现了从io口读取信号,在此为上升沿读取有效。
         在申请中断之前,必须对端口进行初始化,否则端口不能使用。在中断处理程序的最后,还要对端口进行复位,恢复到申请中断前初始化时的状态。
二、int register_chrdev (unsigned int major, const char *name, struct file_operations*fops);
       其中参数major如果等于0,则表示采用系统动态分配的主设备号;不为0,则表示静态注册。
       注销字符设备可以使用unregister_chrdev函数。
       注销字符设备可以使用unregister_chrdev函数。
            int unregister_chrdev(unsigned int major,const char *name);
三、int request_irq(unsigned int irq, irq_handler_t handler,unsigned long irqflags, const char *devname, void *dev_id)
       Linux内核中用于申请中断的函数是request_irq()
       irq:是要申请的硬件中断号。
       handler:向系统注册的中断处理函数,是一个回调函数,中断发生,系统调用这个函数,dev_id参数将传递给它。
       irqflags是中断处理的属性,若设置了IRQF_DISABLED (老版本中的SA_INTERRUPT,本版zhon已经不支持了),则表示中断处理程序是快速处理程序,快速处理程序被调用时屏蔽        所有中断,慢速处理程序不屏蔽;若设置了IRQF_SHARED (老版本中的SA_SHIRQ),则表示多个设备共享中断,若设置了IRQF_SAMPLE_RANDOM(老版本中的                              SA_SAMPLE_RANDOM),表示对系统很有贡献,对系统获取随机数有好处。(这几个flag是可以通过或的方式同时使用的)
       devname设置中断名称,通常是设备驱动程序的名称 在cat /proc/interrupts中可以看到此名称。
       dev_id在中断共享时会用到,一般设置为这个设备的设备结构体或者NULL。
       request_irq()返回0表示成功,返回-INVAL表示中断号无效或处理函数指针为NULL,返回-EBUSY表示中断已经被占用且不能共享。
        free_irq()释放中断源。
四、wait_event_interruptible(wq, condition);
      该函数修改task的状态为TASK_INIERRUPTIBLE,意味着该进程将不会继续运行直到唤醒,然后被添加到等待队列wq中

posted @ 2016-10-09 08:57  努力飞的小菜鸟  阅读(491)  评论(0编辑  收藏  举报