linux驱动编写之中断处理
一、中断
1、概念
学过单片机的应该非常清楚中断的概念,也就是CPU在正常执行程序过程中,出现了突发事件(中断事件),于是CPU暂停当前程序的执行,转去处理突发事件。处理完毕后,CPU又返回被中断的程序位置继续执行。
2、处理流程
单片机的中断处理程序相对简单,包含中断源的配置和中断服务程序的编写。中断源配置包含中断源类型、触发方式、优先级等内容;中断服务程序包含服务历程、中断标志位清楚等内容。
linux中断程序,以特有的操作系统linux为基本平台,实现了其特有的中断程序处理方式,为开发者也提供了一套开发流程。但是,无论系统怎么封装,这套流程与单片机的中断处理流程差别不大,主要包含中断源的配置和中断服务程序的编写。涉及到的主要函数有:
request_irq() 申请中断
free_irq() 释放中断
irq_interrupt() 中断服务
二、中断编程
1、申请中断
int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *name, void *dev_id)
- irq 申请的硬件中断号
- handler 中断处理函数,回调函数
- irqflags 触发方式、工作方式
- name 中断名称,在cat /proc/interrupts中可以看到此名称
- dev_id 一般设置为这个设备的设备结构体或者NULL
2、释放中断
void free_irq(unsigned int irq, void *dev_id)
3、中断服务
typedef irqreturn_t (*irq_handler_t)(int, void *);
中断服务程序,输入参数有两个,分别是中断号irq和dev_id,返回参数类型irqreturn_t。
参考博客: Linux设备驱动中断机制
linux驱动编写之中断处理的更多相关文章
- Linux驱动开发8——中断处理
中断包括软中断和硬中断两种,中断是一种异步I/O机制,即中断可以发生在任意时间点. 1.硬中断 硬件中断包括触发中断和处理中断两部分,而维系两者的是中断号,中断号是一种硬件资源. 1.1.注册和释放中 ...
- Linux驱动实践:中断处理函数如何【发送信号】给应用层?
作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++.嵌入式.Linux. 关注下方公众号,回复[书籍],获取 Linux.嵌入式领域经典书籍:回复[PDF],获取所有原创文章( PDF 格式). ...
- Ubuntu 16.04下Linux驱动编写第一步
源码环境的搭建 Install源码 >sudo apt-cache search linux-source linux-source - Linux kernel source with Ubu ...
- linux驱动编写之poll机制
一.概念 1.poll情景描述 以按键驱动为例进行说明,用阻塞的方式打开按键驱动文件/dev/buttons,应用程序使用read()函数来读取按键的键值.这样做的效果是:如果有按键按下了,调用该re ...
- linux驱动编写(Kconfig文件和Makefile文件)
在Linux编写驱动的过程中,有两个文件是我们必须要了解和知晓的.这其中,一个是Kconfig文件,另外一个是Makefile文件.如果大家比较熟悉的话,那么肯定对内核编译需要的.config文件不陌 ...
- Linux驱动编写(块设备驱动代码)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 按照ldd的说法,linux的设备驱动包括了char,block,net三种设备.char设备 ...
- linux驱动编写之阻塞与非阻塞
一.概念 应用程序使用API接口,如open.read等来最终操作驱动,有两种结果--成功和失败.成功,很好处理,直接返回想要的结果:但是,失败,是继续等待,还是返回失败类型呢? 如果继续等待,将进 ...
- linux驱动编写之进程独占驱动
一.描述 嵌入式开发系统中,有各种硬件资源,而有些硬件资源使用时候是需要进程独占的.也就是说,同一时刻只有一个进程允许使用这个硬件资源,其他的进程只能放弃执行或者挂起等待.在设计其对应驱动的时候,就需 ...
- linux驱动编写(电源管理驱动)
对于嵌入式设备来说,合适的电源管理,不仅可以延长电池的寿命,而且可以省电,延长设备运行时间,在提高用户体验方面有很大的好处.所以,各个soc厂家在这方面花了很多的功夫.下面,我们可以看看linux是如 ...
随机推荐
- vue.js及项目实战[笔记]— 05 WebPack
一. 历史介绍 1. 规范 AMD Commonjs||CMD UMD 参考:认识AMD.CMD.UMD.CommonJS 2. 工具 npm bower webpack browserify 参考: ...
- http请求之get和post的区别
前言:大家现在度娘一下,查得最多的区别,可能就是: “Get把参数写在URL中,Post通过请求体来传参的” “GET没有POST安全,因为Get参数直接显示在URL上” “Get请求在URL中传送的 ...
- JSP内置对象——pageContext对象和config对象
它对应的常用方法有: 现在,我新建一个“pageContext.jsp”页面,可以获得“session_page1.jsp”这个页面中保存的用户名: pageContext.jap: session_ ...
- Linux 学习笔记之超详细基础linux命令 Part 5
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 4----------------- ...
- Android JNI c/c++调用java 无需新建虚拟机
近期通过研究SDL源码 得出android JNI c/c++调用java 无需新建虚拟机: 具体步骤如下 第一步获得:两个参数 JNIEnv和jclass void Java_com_Test_A ...
- Django基础篇--模板和路由分发
Django模板 首先什么是一个模板? 简单来说就是一个网页,可以被view响应给用户 目的是为了解决复杂的显示问题 2. 模板的设置问题 setting.py中的TEMPLATES配置 1)BACK ...
- (网页)alert()怎么回事出不来,代码没有写错
1.不报错,请查看浏览器是否禁掉了alter. 2.console.log()输出,避免这种尴尬.
- python中常用函数整理
1.map map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象. class map(object): ""&q ...
- django模板语言之Template
当前端的一些数据需要后端传送过来并展示时,用到了django的模板语言,模板语言的作用就是,在后端把一些处理好的数据,通过模板语言所规定的格式,通过render渲染,放到前端页面固定的位置展示.这之间 ...
- 根据id来大量删除数据between
id的范围来删除数据 比如要删除 110到220的id信息:delete id from 表名 where id between 110 and 220;