linux设备驱动程序示范

linux设备驱动程序示范

ID:10231545

大小:241.00 KB

页数:36页

时间:2018-06-12

linux设备驱动程序示范_第1页
linux设备驱动程序示范_第2页
linux设备驱动程序示范_第3页
linux设备驱动程序示范_第4页
linux设备驱动程序示范_第5页
资源描述:

《linux设备驱动程序示范》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第十一章设备驱动程序11.1概述在Linux中输入/输出设备被分为三类:块设备,字符设备和网络设备。这种分类的使用方法,可以将控制不同输入/输出设备的驱动程序和其它操作系统软件成分分离开来。例如文件系统仅仅控制抽象的块设备,而将与设备有关的部分留给低层软件,即驱动程序。字符设备指那些无需缓冲区可以直接读写的设备,如系统的串口设备/dev/cua0和/dev/cua1。块设备则仅能以块为单位进行读写的设备,如软盘,硬盘,光盘等,典型块的大小为512或1024字节。从名称使人想到,字符设备在单个字符的基础上接收和发送数据。为了改进传送数据的速度和效率,块设备在整个数据缓冲区填满时才一起传送数据。网

2、络设备可以通过BSD套接口访问数据,关于这方面的内容我们将在第十二章中进行讨论。在Linux中,对每一个设备的描述是通过主设备号和从设备号,其中主设备号描述控制这个设备的驱动程序,也就是说驱动程序和主设备号是一一对应的,从设备号是用来区分同一个驱动程序控制的不同设备。例如主IDE硬盘的每个分区的从设备号都不相同,/dev/hda2表示主IDE硬盘的主设备号为3而从设备号为2。Linux通过使用主、从设备号将包含在系统调用中的设备特殊文件映射到设备的管理程序,以及大量系统表格中,如字符设备表—chrdevs。块(磁盘)设备和字符设备的设备特殊文件可以通过mknod命令来创建,并使用主从设备号来描

3、述此设备。网络设备也用设备相关文件来表示,但Linux寻找和初始化网络设备时才建立这种文件11.1.1I/O软件I/O软件的总体目标就是将软件组织成一种层次结构,低层软件用来屏蔽具体设备细节,高层软件则为用户提供一个简洁规范的界面。这种层次结构很好的体现了I/O设计的一个关键的概念:设备无关性,其含义就是程序员写的软件无须修改就能读出软盘,硬盘以及CD-ROM等不同设备上的文件。  输入/输出系统的层次结构及各层次的功能如图11.1所示:从图可以看出,用户进程的下层是设备无关的软件,在Linux中,设备无关软件的功能大部分由文件系统去完成,其基本功能就是执行适用于所有设备的常用的输入/输出功能

4、,向用户软件提供一个一致的接口。其结构如图11.2所示:图11.1输入/输出系统的层次结构及各层次的功能图11.2设备无关软件的功能设备无关的软件具有以下特点:·文件和设备采用统一命名。设备无关软件负责将设备名映射到相应的驱动程序,一个设备名唯一地确定一个索引节点,索引节点中包含了主设备号和次设备号,通过主设备号可以找到相应的设备驱动程序,通过次设备号确定具体的物理设备。·对设备提供的保护机制同文件系统一样都采用rwx权限。·数据块的大小可能对于不同的设备其大小不一样,但操作系统屏蔽这一事实,向高层软件提供了统一的逻辑块的大小。·为了解决数据交换速度的匹配问题,采用了缓冲技术,对于缓冲区的管理

5、由文件系统去完成。·块设备的存储分配也是由文件系统去处理。·对于独占设备的分配和释放属于对临界资源的管理。11.1.2设备驱动程序CPU并不是系统中唯一的智能设备,每个物理设备都拥有自己的控制器。键盘、鼠标和串行口由一个高级I/O芯片统一管理,IDE控制器控制IDE硬盘而SCSI控制器控制SCSI硬盘等等。每个硬件控制器都有各自的控制状态寄存器(CSR)并且各不相同。例如Adaptec2940SCSI控制器的CSR与NCR810SCSI控制器完全不一样。这些寄存器用来启动、停止、初始化设备以及对设备进行诊断。在Linux中管理硬件设备控制器的代码并没有放置在每个应用程序中而是由内核统一管理,这

6、些处理和管理硬件控制器的软件就是设备驱动程序。Linux内核的设备管理是由一组运行在特权级上,驻留在内存以及对底层硬件进行处理的共享库的驱动程序来完成的。设备管理的一个基本特征是设备处理的抽象性,即所有硬件设备都被看成普通文件,可以通过用操纵普通文件相同的系统调用来打开、关闭、读取和写入设备。系统中每个设备都用一种设备特殊文件来表示,例如系统中第一个IDE硬盘被表示成/dev/hda。那么,系统是如何将设备在用户视野中屏蔽起来的呢?图11.3说明了用户进程请求设备进行输入输出的简单流程。图11.3用户进程请求设备服务的流程首先当用户进程发出输入输出时,系统把请求处理的权限放在文件系统,文件系统

7、通过驱动程序提供的接口将任务下放到驱动程序,驱动程序根据需要对设备控制器进行操作,设备控制器再去控制设备本身。 这样通过层层隔离,对用户进程基本上屏蔽了设备的各种特性,使用户的操作简便易行,不必去考虑具体设备的运作,就象对待文件操作一样去操作设备,因为实际上在驱动程序向文件系统提供的接口已经屏蔽掉了设备的电器特性。设备控制器对设备本身的控制是电器工程师所关心的事情,操作系统对输入/输出设备的管理只

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。