字符设备驱动----中断程序

原创 2015年11月17日 23:55:59

Linux内核将所有的中断统一编号,使用一个irq_desc结构数组来描述这些中断:每个数组项对应一个中断。

一. 中断的处理流程如下:

1. 发生中断时,CPU执行异常向量 vector_irq 的代码。
2. 在 vector_irq 里面,最终会调用中断处理的总入口函数asm_do_IRQ.
这里写图片描述
3. asm_do_IRQ 根据中断号调用 irq_desc 数组项中的handle_irq.
4. handle_irq 会使用chip成员中的函数来设置硬件。
5. handle_irq 逐个调用用户在 action 链表中注册的处理函数。

这里写图片描述
可见,中断体系结构的初始化就是构造这些数据结构,比如irq_desc数组项中的handle_irq, chip等成员。
用户注册中断时就是构造action 链表。
用户卸载中断时就是从action链表中去除不需要的项。

二. 用户注册与卸载中断

//注册
int request_irq(unsigned int irq, 
        irq_hander_t handler,
        unsigned long irqflags,
        const char* devname, 
        void * dev_id);

//卸载
void free_irq(unisgned int irq, void* dev_id)   

相关文章推荐

Linux字符设备驱动之中断按键

看了上一篇文章后,相信你们对按键有个基本的了解,在这个驱动之前写的驱动跟51是没有什么区别的,上篇文章中的读按键是一直在进行,特别是对CPU的消耗会非常大,我们一般不采用这种方法,这章我们采用中断实现...

linux设备驱动归纳总结(六):1.中断的实现

CU首页 ┊ fh265>>博客 微博 相册 个人中心 好友 消息 [退出] ┊ 随便看看   博文 博主 相册  投票 活动 发博文 公告...
  • fh400
  • fh400
  • 2011年11月02日 17:36
  • 874

linux字符驱动之中断按键

在上一节中,我们讲解了如何自动创建设备节点,实现一个查询方式的按键驱动。测试的时候,大家都看到了,使用查询式的方法,占用CPU的利用率高达99%,那么有没有好的办法来取代这惨不忍睹的方法呢?答案当然是...

linux字符驱动之初见

学习驱动也有长达一年多的时间了,受益最深的就是看韦东山老师的视频,如今已经几乎将二期三期的视频全部看完,甚至已经将二期视频看过好几遍,为了再次加深印象,我将韦老师的源码自己全部编写一遍。将所有遇到的问...

字符设备驱动----LED驱动程序

一. 概念介绍 一般用户在应用程序里调用的 open, read, write 函数是 c 库的函数, 这些函数会触发 swi val异常,从而引发系统调用,进入到内核空间, 内核通过VFS(v...

07-S3C2440驱动学习(一)嵌入式linux字符设备驱动-查询+中断+引入poll机制的按键驱动程序

一、查询方式的按键驱动程序 查询方式的按键驱动程序,与LED驱动程序类似,我们来复习一下上节的写好的LED字符设备驱动程序,改写出查询方式的按键驱动程序。首先我们要搭出字符设备驱动程序的框架: #in...

Linux应用程序访问字符设备驱动详细过程解析

在linux下对上面的文件进行静态编译(考虑到前面开发板上移植的某些库还没有添加进去)生成read-mem目标文件,然后进行反汇编并将反汇编生成的文件导入到当前目录下的dump上去。 这里红箭头指向的...

应用程序如何使用字符设备驱动例子

使用字符设备驱动

Linux设备驱动开发基础---字符设备驱动程序开发之基于中断的按键驱动

二、硬件原理分析 Mini2440 具有6 个用户测试按键,它们都是连接到CPU 的中断引脚。如图: 由原理图可知,这些引脚在按键没有按下的情况下被上拉为高电平,按键被按下的时候变为低电平。 三、实...

字符设备驱动之Buttons-中断上下部(tasklet)

buttons.c #include #include #include #include #include #include #include #i...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符设备驱动----中断程序
举报原因:
原因补充:

(最多只允许输入30个字)