如何编写Linux设备驱动程序
如何编写Linux设备驱动程序
Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便。
以下的一些文字主要来源于khg,johnsonm的Writelinuxdevicedriver,Brennan'sGuidetoInlineAssembly,TheLinuxA-Z,还有清华BBS上的有关devicedriver的一些资料。
一、Linuxdevicedriver的概念
系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它完成以下的功能:
1。对设备初始化和释放。
2。把数据从内核传送到硬件和从硬件读取数据。
3。读取应用程序传送给设备文件的数据和回送应用程序请求的数据。
4。检测和处理设备出现的错误。
在Linux操作系统下有三类主要的设备文件类型,一是字符设备,二是块设备,三是网络设备。字符设备和块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,块设备则不然,它利用一块系统内存作缓冲区,当用户进程对设备请求能满足用户的要求,就返回请求的数据,如果不能,就调用请求函数来进行实际的I/O操作。块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待。
已经提到,用户进程是通过设备文件来与实际的硬件打交道。每个设备文件都都有其文件属性(c/b),表示是字符设备还是块设备?另外每个文件都有两个设备号,第一个是主设备号,标识驱动程序,第二个是从设备号,标识使用同一个设备驱动程序的不同的硬件设备,比如有两个软盘,就可以用从设备号来区分他
你可能喜欢
- Linux编程
- Linux入门
- Linux操作系统
- Linux内核
- USB驱动
- Linux系统命令使用详解
- Linux编程白皮书 (2)14页
- Linux编程实验内容7页
- Linux Shell编程 [兼容模式]47页
- Linux开源编程期末考试13页
- Linux的shell编程11页
- Linux系统编程第2章64页
- Linux入门713页
- Linux入门610页
- Linux入门325页
- Linux入门233页
- Linux 入门常用命令23页
- Linux(入门命令)19页
- Linux操作系统考试题库14页
- Linux操作系统错误代码解释 (中英文对照)13页
- 操作系统Linux操作34页
- 嵌入式Linux操作系统的移植与研究3页
- ST-006 Linux和UNIX操作系统基础知识V2.0(H3C)50页
- 安装过Windows后如何安装Linux操作系统2页
- Linux内核红黑树使用方法10页
- 优化Linux的内核参数来提高服务器并发处理能力3页
- Linux 内核分析一8页
- Linux2.6内核启动流程13页
- Linux内核Makefile文件17页
- 设备驱动加到Linux内核中3页


