linux设备驱动课件

linux设备驱动课件

ID:1230253

大小:764.00 KB

页数:39页

时间:2017-11-09

linux设备驱动课件_第1页
linux设备驱动课件_第2页
linux设备驱动课件_第3页
linux设备驱动课件_第4页
linux设备驱动课件_第5页
资源描述:

《linux设备驱动课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第九章设备驱动设备驱动概述设备驱动程序专用I/O端口字符设备驱动程序块设备驱动程序Linux操作系统把设备纳入文件系统的范畴来管理每个设备都对应一个文件名,在内核中也就对应一个索引节点对文件操作的系统调用大都适用于设备文件从应用程序的角度看,设备文件逻辑上的空间是一个线性空间(起始地址为0,每读取一个字节加1)。从这个逻辑空间到具体设备物理空间(如磁盘的磁道、扇区)的映射则是由内核提供,并被划分为文件操作和设备驱动两个层次<>计算机中三个最基本的物质基础是CPU、内存和输入输出(I/O)设备,文件操作是对设备操作的组织和抽象,而设备操作

2、则是对文件操作的最终实现设备驱动概述对于一个具体的设备而言,文件操作和设备驱动是一个事物的不同层次。从这种观点出发,从概念上可以把一个系统划分为应用、文件系统和设备驱动三个层次Linux将设备分成两大类。一类是像磁盘那样以块或扇区为单位,成块进行输入/输出的设备,称为块设备;另一类像键盘那样以字符(字节)为单位,逐个字符进行输入/输出的设备,称为字符设备。文件系统通常都建立在块设备上设备驱动概述<>从普通文件的逻辑空间到设备逻辑空间的映射从设备逻辑空间到设备物理空间的映射从设备逻辑空间到设备物理空间的映射设备1设备2设备

3、n进程File结构File结构File结构普通文件文件系统层设备文件设备驱动层应用层<>为什么要把繁杂的设备归为“块设备”和“字符设备”两大类?代表着设备的索引节点中记载着与特定设备建立连接所需的信息:文件(包括设备)的类型、主设备号和次设备号要使一项设备可以被应用程序访问,首先要在系统中建立一个代表此设备的设备文件,这是通过系统调用mknode()实现的。此外,更重要的是在设备驱动层要有这种设备的驱动程序。设备驱动层直接与物理设备打交道,在实际的实现中则因系统的结构和具体设备的物理特性不同而有不同的驱动方式设备驱动概述设备驱动程序:处

4、理和管理硬件控制器的软件Linux内核的设备管理是由一组运行在特权级上,驻留在内存以及对底层硬件进行处理的共享库的驱动程序来完成的设备管理的一个基本特征是设备处理的抽象性,即所有硬件设备都被看成普通文件,可以通过用操纵普通文件相同的系统调用来打开、关闭、读取和写入设备系统中每个设备都用一种设备文件来表示<>设备驱动程序基础<>图9.2用户进程请求设备服务的流程设备驱动程序基础I/O端口设备文件中断处理设备驱动程序框架I/O端口设备驱动程序要直接访问外设或其接口卡上的物理电路,通常以寄存器的形式出现外设寄存器也称为I/O端口,通常包括控制

5、寄存器、状态寄存器和数据寄存器三类“内存映射(Memory-mapped)”方式:寄存器参与内存统一编址,访问寄存器就通过访问一般的内存指令进行“I/O映射(I/O-mapped)”方式:将外设的寄存器看成一个独立的地址空间,为对外设寄存器的读/写设置专用指令<>系统设计者为了对I/O编程提供统一的方法,每个设备的I/O端口都被组织成如图9.3所示的一组专用寄存器。为了降低成本,通常把同一I/O端口用于不同目的内核使用iotable表来记录分配给每个硬件设备的I/O端口<>I/O端口控制寄存器状态寄存器输入寄存器输出寄存器CPU设备I/

6、O接口图9.3专用I/O端口设备文件设备文件用来表示Linux所支持的大多数设备,每个设备文件除了设备名外,还有类型、主设备号、次设备号这三个属性设备文件是通过mknod系统调用创建的。其原型为:mknod(constchar*filename,intmode,dev_tdev)同一主设备号既可以标识字符设备,也可以标识块设备一个设备文件通常与一个硬件设备相关联,或硬件设备的某一物理或逻辑分区。但有时,设备文件不会和任何实际的硬件关联,而是表示一个虚拟的逻辑设备。<>中断处理当设备执行某个命令时,设备驱动程序可以从查询方式和中断方式中选

7、择一种来判断设备是否已经完成此命令基于中断的设备驱动程序,指的是在硬件设备需要服务时向CPU发一个中断信号,引发中断服务处理程序执行假定要实现一个简单的输入字符设备的驱动程序。当用户在相应的设备文件上发出read()系统调用时,一条输入命令就发往设备的控制寄存器。在一个不可预知的长时间间隔后,设备把一个字节的数据放在输入寄存器。设备驱动程序返回这个字节作为read()系统调用的结果。<>设备驱动程序框架Linux的设备驱动程序与外设的接口可以分为三部分:驱动程序与内核的接口,这是通过数据结构file_operations来完成的。驱动程

8、序与系统引导的接口,这部分利用驱动程序对设备进行初始化。驱动程序与设备的接口,这部分描述了驱动程序如何与设备进行交互,这与具体设备密切相关<>根据功能,驱动程序的代码可以分为如下几个部分:(1)驱动程序的注

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

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

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