设备驱动程序设计基础ppt课件.ppt

设备驱动程序设计基础ppt课件.ppt

ID:59004469

大小:402.50 KB

页数:48页

时间:2020-09-27

设备驱动程序设计基础ppt课件.ppt_第1页
设备驱动程序设计基础ppt课件.ppt_第2页
设备驱动程序设计基础ppt课件.ppt_第3页
设备驱动程序设计基础ppt课件.ppt_第4页
设备驱动程序设计基础ppt课件.ppt_第5页
资源描述:

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

1、设备驱动程序设计基础2011.05本章提纲1.设备驱动程序基本概念2.加载内核模块工具3.简单模拟驱动程序4.驱动程序应用5.小结设备驱动程序基本概念设备驱动程序基本概念设备驱动最通俗的解释就是“驱使硬件设备行动”。驱动与底层硬件直接打交道,按照硬件设备的具体工作方式,读写设备的寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射等。最终让通信设备能收发数据,让显示设备能显示文字和画面,让存储设备能记录文件和数据。系统调用是操作系统内核和应用程序之间的接口,而设备驱动程序是操作系统内核和设备硬件之间的接

2、口,设备驱动程序为应用程序屏蔽了硬件的细节,这样,在应用程序看来,硬件设备只是一个设备文件(所有设备都在/dev下),应用程序可以象操作普通文件一样对硬件设备进行操作,可以使用open,read,等系统调用象操作普通文件一样操作设备文件,如open(“/dev/consle”,O_RDONLY)等。此外,设备驱动程序是内核的一部分,它需要完成以下功能:1.对设备初始化和释放。2.把数据从内核传送到硬件和从硬件读取数据.(内核和设备之间的数据传递)。3.读取应用程序传送给设备文件的数据和回送应用程序请求的数据(内核空间和用户空

3、间的数据传递)。4.检测和处理设备出现的错误。Linux设备驱动的分类(1)字符设备。(2)块设备。(3)网络设备。字符设备一个字符设备是一种字节流设备,对设备的存取只能按顺序按字节的存取而不能随机访问,字符设备没有请求缓冲区,所有的访问请求都是按顺序执行的。Linux下的大多设备都是字符设备。应用程序是通过字符设备节点来访问字符设备的。设备节点一般都由mknod命令都创建在/dev目录下,下面的例子显示了串口设备的设备节点。字符设备文件的第一个标志是前面的“c”标志。root#ls-l/dev/ttyS[0-3] crw-

4、rw---- 1root root4,64Feb1823:34/dev/ttyS0 crw-r----- 1root root4,65Nov1710:26/dev/ttyS1 crw-rw---- 1root root4,66Jul 5 2000/dev/ttyS2 crw-rw---- 1root root4,67Jul 5 2000/dev/ttyS3块设备存储设备一般属于块设备,块设备有请求缓冲区,并且支持随机访问而不必按照顺序去存取数据,比如你可以先存取后面的数据,然后在存取前面的数据,这对字符设备来说是不可能的。L

5、inux下的磁盘设备都是块设备,尽管在Linux下有块设备节点,但应用程序一般是通过文件系统及其高速缓存来访问块设备的,而不是直接通过设备节点来读写块设备上的数据。root#ls-l/dev/hda[1-3] brw-rw---- 1root root 3,1Jul 5 2000/dev/hda1 brw-rw---- 1root root 3,2Jul 5 2000/dev/hda2 brw-rw---- 1root root 3,3Jul 5 2000/dev/hda3字符设备指那些必须以串行顺序依次进行访问的设备,如触

6、摸屏、磁带驱动器、鼠标等。块设备可以用任意顺序进行访问,以块为单位进行操作,如硬盘、软驱等。字符设备不经过系统的快速缓冲,而块设备经过系统的快速缓冲。但是,字符设备和块设备并没有明显的界限,如对于Flash设备,符合块设备的特点,但是我们仍然可以把它作为一个字符设备来访问。网络设备网络设备不同于字符设备和块设备,它是面向报文的而不是面向流的,它不支持随机访问,也没有请求缓冲区。在Linux里一个网络设备也可以叫做一个网络接口,如eth0,应用程序是通过Socket而不是设备节点来访问网络设备,在系统里根本就不存在网络设备节点

7、。相对于这三类设备,Linux设备驱动程序也分为对应的三类:字符设备驱动程序、块设备驱动程序和网络设备驱动程序。设备节点、设备驱动及设备的关联当我们访问一个设备节点是,系统是如何知到使用哪个设备驱动及访问哪个设备的呢?这个是通过设备号来实现的。当我们创建一个设备节点时需要指定主设备号和次设备号。对于设备节点来说,名字不是重要的,设备号才是最重要的,它实际指定了对应的驱动程序和对应的设备。主设备号驱动程序在初始化时,会注册它的驱动及对应主设备号到系统中,这样当应用程序访问设备节点时,系统就知道它所访问的驱动程序了。你可以通过/

8、proc/devices文件来驱动系统设备的主设备号。次设备号驱动程序遍历设备时,每发现一个它能驱动的设备,就创建一个设备对象,并为其分配一个次设备号以区分不同的设备。这样当应用程序访问设备节点时驱动程序就可以根据次设备号知道它所访问的设备了。Linux中设备节点是通过“mknod”命令来

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

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

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