`
soboer
  • 浏览: 1307405 次
文章分类
社区版块
存档分类
最新评论

Linux设备驱动-中断处理笔记

 
阅读更多

为什么需要中断?

1)外设的处理速度一般慢于CPU

2CPU不能一直等外部事件

所以设备必须有一种方法来通知CPU它的工作进度,这就是中断。

Linux驱动程序中,为设备实现一个中断

步骤:

1)向内核注册中断

2)实现中断处理函数

中断注册

intrequest_irq(unsignedintirq,void(*handler)(int,void*,structpt_regs*),unsignedlongflags,constchar*devname,void*dev_id)

返回0表示成功,或者返回一个错误码

参数:

irq:中断号

handler:中断处理函数

flags:与中断管理有关的各种选项

devname:设备名

dev_id:共享中断时使用

flags参数中,可以选择一些与中断管理有关的选项

如:IRQF_DISABLED(SA_INTERRUPT)

如果设置该位,表示是一个“快速”中断处理程序

如果没有,表示是一个“慢速”中断处理程序

IRQF_SHARED(SA_SHIRQ)

该位表示中断可以在设备间共享

快速中断不允许中断嵌套(不被打断)

慢速中断可以中断嵌套,其它类型的中断可以得到服务(默认)

共享中断

共享中断就是将不同的设备挂到同一个中断信号线上。

Linux对共享的支持主要是为PCI设备服务

共享中断也是通过request_irq函数来注册的,但有三个特别之处:

1)申请共享中断时,必须在flags参数中指定IRQF_SHARED

2)dev_id参数必须是唯一的

为什么要唯一?

在释放中断时要voidfree_irq()不然内核不知道你要释放哪个设备(共享中断时有不只一个设备在用这个中断)

3)不能使用disable_irq(unsignedintirq)(这个函数是禁止中断的)

为什么?

如果使用了,共享中断信号线的设备同样无法使用中断,也就是无法正常工作了。

中断处理程序

中断处理程序是中断上下文件中运行的,所以它的行为受到某些限制:

1)不能向用户空间发送或者接受数据

2)不能使用可能引起阻塞的函数

3)不能使用可能引起调度的函数

中断函数实现流程:

释放中断

voidfree_irq(unsignedintirq,void*dev_id)

分享到:
评论

相关推荐

    Linux 驱动学习笔记pdf文档

    ·Linux设备驱动程序学习(11)-中断处理 ·Linux设备驱动程序学习(3-补)-Linux中的循环缓冲区 ·Linux设备驱动程序学习(12)-Linux设备模型(底层原理简介) ·Linux设备驱动程序学习(13)-Linux设备模型...

    linux内核笔记-(系统管理-内核分析-项目专题)

    系统管理: 启动 常用工具 系统安装配置 管理脚本语言 数据库 网络服务 安全 gcc ...启动 中断 内存 进程 网络 系统调用 文件系统 驱动 经验 项目专题: LFYOS OSKit MiniGUI LVS LIDS 经验 Eric S. Raymond五部曲

    linux平台下各种工具安装步骤及其linux驱动笔记新的

    笔记属于个人整理,分享给大家希望对大家有所帮助,该笔集中从前到后贯穿了几乎linux学习的全部笔记,有中断、软中断、串口驱动、读写设备文件、安装minicom、kermit、交叉编译器安装、内核编译、tftp的配置等等。

    Linux内核设备驱动之系统调用笔记整理

    在linux中,系统调用是用户空间访问内核的唯一手段,除异常和中断外,他们是内核唯一的合法入口。系统调用的数量很少,在i386上只有大概300个左右。 (2)c库和系统调用的关系 应用程序员通过C库中的应用程序接口(API)...

    嵌入式Linux入门笔记(十年程序员精品推荐、让你看得懂的笔记、结合开发板例程精心讲解)

    2.Linux驱动程序 3.驱动测试程序 4.出现的问题 八.红外学习与发射 1.硬件测试程序 2.Linux驱动程序 3.驱动测试程序, 4.出现的问题 5.总结 九,网络编程, 1.常用函数 2.服务器程序 3.测试用客户程序 4.利用I0复用...

    Linux内核设备驱动之内核的时间管理笔记整理

    /****************** * linux内核的时间管理 ******************/ (1)内核中的时间概念 时间管理在linux内核中占有非常重要的作用。 相对于事件驱动而言,内核...定时器产生中断的频率称为节拍率(tick rate)。 在内核

    Linux内核分析(《joyfire linux笔记》)

    非常强大的Linux内核分析的资料,中文版,617页,内容包括:Linux启动,中断,内存,进程,网络,系统调用,文件系统,驱动和一些经验。很全面。

    国嵌笔记。全集全集

    本人学习的国嵌笔记。操作详细! 第一季 精通嵌入式 4 一. 安装tftp服务器 4 二. Samba服务器安装 4 三. NFS服务器 5 四. 安装vsftpd FTP服务器 5 第2季-裸奔吧-ARM 6 一. 安装交叉编译器 6 二. 安装驱动 6 三...

    若干源程序资料12.rar

    2012-06-11 21:44 6,947,979 Linux内核完全注释V3.0书签版(带源码).rar 2012-06-11 21:31 11,599 MATLAB仿真程序OFDM程序.txt 2012-06-11 21:37 14,584,477 msdn for vb6.0简体中文版.zip 2012-06-11 21:02 12,288 ...

    CH367技术开发文档

    ● 驱动程序支持 Windows 98/ME/NT4.0/2000/XP/Vista 以及 Linux,通过 DLL 提供应用层 API。 ● 3.3V 电源电压,I/O 引脚支持 5V 耐压,支持低功耗睡眠模式。 ● 支持 PCMCIA 之 ExpressCard 笔记本插卡。 ● LQFP...

    台电TL-X19HD固件下载\TL-X19HD-V1.00-F340.rar )

    点击选择“是”此时机器进入固件刷新或升级中(设备在更新期间请不要中断连接)相继出现下面的图片(部分): 点击 “关闭”退出。机器刷新或升级成功.另外:如果你的电脑是首次安装使用时。可能会...

    ARM 实验指导书第一册UCOS-II.doc

    这个实时内核包含了许多传统操作系统的特征,包括任务管理,任务间通信,同步与互相排斥,中断支持,内存管理等功能,此后一些公司也纷纷推出了自己的嵌入式操作系统。这些系统均具有嵌入式的典型特点:它们都采用占...

    FlyingCarpet:通过临时WiFi进行加密的文件传输。 无需网络基础架构,只需两台便携式计算机即可近距离使用。 Linux,Mac和Windows

    没有闪存驱动器? 无法访问无线网络或不信任无线网络? 是否需要在不同的文件系统之间移动大于2GB的文件,但又不想设置文件共享? 试试看!屏幕截图:特征: 跨平台:Linux,Mac和Windows。 一次传输多个文件,如果...

    操作系统 SnailOS 学习 拼一个自己的操作系统

    对系统引导、保护模式、中断和异常、内存管理、线程及进程的实现和简单调度算法、简单图形界面、线程间通信机制、ide硬盘驱动、fat32文件系统进行了简单的介绍。本书大量参考了《操作系统真相还原》、《30天自己操作...

    自己动手写操作系统(含源代码).part2

    Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生,经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这成为了 Linux第一个内核的...

    自己动手写操作系统(含源代码).part1

    Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生,经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这成为了 Linux第一个内核的...

Global site tag (gtag.js) - Google Analytics