一、阻塞与非阻塞
阻塞与非阻塞是设备访问的两种方式。在写阻塞与非阻塞的驱动程序时,经常用到等待队列。
阻塞调用是指调用结果返回之前,当前线程会被挂起,函数只有在得到结果之后才会返回。
非阻塞指不能立刻得到结果之前,该函数不会阻塞当前进程,而会立刻返回。
函数是否处于阻塞模式和驱动对应函数中的实现机制是直接相关的,但并不是一一对应的,例如我们在应用层设置为阻塞模式,如果驱动中没有...
分类:
系统相关 时间:
2016-07-06 15:04:21
阅读次数:
404
一、linux系统将设备分为3类:字符设备、块设备、网络设备。
应用程序调用的流程框图:
三种设备的定义分别如下,
字符设备:只能一个字节一个字节的读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后顺序进行。字符设备是面向流的设备,常见的字符设备如鼠标、键盘、串口、控制台、LED等。
块设备:是指可以从设备的任意位置读取一定长度的数据设备。块设备如硬盘、磁盘...
分类:
系统相关 时间:
2016-07-03 19:42:38
阅读次数:
307
linux设备驱动归纳总结(六):2.分享中断号 转自:http://blog.chinaunix.net/uid-25014876-id-90837.html xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
分类:
系统相关 时间:
2016-07-01 15:59:10
阅读次数:
307
Linux设备驱动代码一枚,可用于练习各种漏洞利用。 一、设备驱动 /* demo.c */ #include <linux/cdev.h> #include <linux/device.h> #include <asm/uaccess.h> #include <linux/init.h> #inc ...
分类:
系统相关 时间:
2016-06-27 21:25:18
阅读次数:
206
Linux内核学习,推荐的书籍: 《linux设备驱动开发详解第二版》、《Linux内核设计与实现第三版》、《嵌入式Linux应用开发完全手册》 第一篇:讲解Linux内核的基础知识,先有一个整体的框架,后续会逐步讲解,一步步深入。 1.物理地址和虚拟地址 地址转换:内核所使用的地址一定是虚拟地址, ...
分类:
系统相关 时间:
2016-06-25 06:12:59
阅读次数:
208
作为一个驱动作者, 你可能发现你面对一个设备必须在它能支持工作前下载固件到它里面. 硬件市场的许多地方的竞争是如此得强烈, 以至于甚至一点用作设备控制固件的 EEPROM 的成本制造商都不愿意花费. 因此固件发布在随硬件一起的一张 CD 上, 并且操作系统负责传送固件到设备自身.
硬件越来越复杂,硬件的许多功能使用了程序实现,与直接硬件实现相比,固件拥有处理复杂事物的灵活性和便于升...
分类:
系统相关 时间:
2016-06-24 16:14:01
阅读次数:
202
《UNIX环境高级编程》(第2版),史蒂文斯著 《深入理解 Linux 内核》(第三版) ,博韦等著 Linux设备驱动开发详解:基于最新的Linux 4.0内核 宋宝华 ...
分类:
系统相关 时间:
2016-06-21 22:39:40
阅读次数:
196
从本章开始引入所有关于模块和内核编程的基本概念,并编写一个完整模块来实践这些基本的概念。3.1搭建测试环境由于所有测测试代码都是基于Ubuntu14.04.2Desktop的3.16.0-30-generic内核,所以最好是到Linux官方网站去下载一份该版本内核的源代码。另外,建议在虚拟机里面安装你..
分类:
系统相关 时间:
2016-06-20 19:05:04
阅读次数:
191
虽然网络上已经有很多Linux设备驱动开发学习的文章和博客,更是有很多经典的Linux设备驱动开发的书籍,写这些博文似乎意义不大,但把自己的学习过程、学习心得记录下来,一方面有着强化巩固的意义,另一方面也是把所学知识转化为自己所得的必要途径之一,这是我写这些的博客的原..
分类:
系统相关 时间:
2016-06-16 00:13:58
阅读次数:
185