linux下的驱动程序开发

linux下的驱动程序开发

ID:6075962

大小:102.00 KB

页数:13页

时间:2018-01-02

linux下的驱动程序开发_第1页
linux下的驱动程序开发_第2页
linux下的驱动程序开发_第3页
linux下的驱动程序开发_第4页
linux下的驱动程序开发_第5页
资源描述:

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

1、Linux下的驱动程序开发李伟民(1)胡炜(2)浙江大学计算机技术专业摘要:本文主要从学习Linux下驱动程序的基本概念入手,了解Linux下驱动程序的结构和框架。通过自己的学习深入了解在Linux环境下开发驱动程序的过程,通过学习,我们自己动手编写了一个USB的鼠标和键盘驱动程序。这对我们来说是一个从无到有的过程。关键词:Linux、驱动程序1引言1.1Linux设备驱动程序分类Linux系统将设备分为三类:字符设备(CharDevice)、块设备(BlockDevice)和网络设备(NetworkDevice)三种。字符设备(CharDevice)是

2、指存取时没有缓存的设备,典型的字符设备包括鼠标,键盘,串行口等。块设备(BlockDevice)是指读写都有缓存来支持,并且块设备必须能够随机存取(randomaccess),字符设备则没有这个要求。块设备主要包括硬盘设备,CD-ROM等。网络设备(NetworkDevice)在Linux里做专门处理。Linux的网络系统主要是基于BSDUnix的socket机制。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。1.2Linux下驱动程序的几个基本概念在

3、学习Linux下的驱动程序的时候,经常会遇到以下一些概念。1.2.1轮询与中断内核与外设间的数据传输一般可以采用轮询(polling)或中断(interrupt)方式。轮询方式:轮询方式的驱动程序在启动设备后会连续读取设备13(1)李伟民学号Z0403405UT斯达康通讯有限公司(2)胡炜学号Z0403420杭州建达软件有限公司状态直到设备完成操作,处于用户空间的进程进入内核开始执行设备驱动程序。当设备执行I/O操作时,与其相应的任务周期性地轮询设备状态寄存器以决定操作何时完成。中断方式:采用中断的驱动程序在启动设备后就挂起,直到设备完成操作并发出一个中

4、断请求(IRQ)。当IRQ产生时,中断处理程序运行(ISR)运行,他的一些代码可能会放到Bottomhalf中或者放到任务队列中。在这种情况下,用户进程使用驱动程序代码初始化I/O操作,然后阻塞自己直到设备完成操作。在收到IRQ后,运行与设备对应的中断处理程序,它会唤醒沉睡的进程重新执行用户空间进程。13(1)李伟民学号Z0403405UT斯达康通讯有限公司(2)胡炜学号Z0403420杭州建达软件有限公司1.2.2主设备号和次设备号内核使用主、次设备号来唯一标识设备。主设备号(majornumber)用于标识设备对应的驱动程序,主设备号相同的设备使用相

5、同的驱动程序。例如在linux下,软驱的主设备号是2,IDE硬盘的主驱动号是3,并口的主设备号是6。次设备号(minornumber)是一个8bit数,用来区分具体设备的实例(instance)。因此同一个机器上的两个软驱具有相同的主设备号2,但是第一个软驱的次设备号是0,第二个软驱的次设备号是1。设备号操作宏:MAJOR()和MINOR()分别用来获取主、次设备号,MKDEV()根据主、次设备号合成设备号(devnumber)。在Linux内核源码中,主、次设备号通过宏MKDEV()合成为一个变量,作为设备号(dev)保存,高位保存的是主设备号(maj

6、ornumber)低位保存的是次设备号(minornumber),需要时只需要利用MAJOR()和MINOR()两个宏定义便能够简单的将两个设备号区分出来。1.2.3设备文件Linux中各种设备的输入、输出就好像是对普通文件输入、输出一样。因此,只需要将设备映射到一种特殊的文件(采用mknod进行系统调用或者直接进行devfs中的设备结点注册)就可以可达到上述目的。系统启动的时候,内核给系统中的每个设备都创建了一个设备文件。一个设备文件是/dev目录下的一项,它用于表示设备的驱动程序。利用Linux命令mknod可以在/dev目录下生成该设备对应的结点:

7、mknod/dev/其中:参数是这个特殊文件的名字(可以在/dev目录下的特殊文件列表中看到它)。参数为c表示的是字符设备,b表示的是块设备。参数为主设备号和次设备号。如果设备文件系统devfs已经在系统中正常应用了,就不需要手工创建设备结点了。在用户的应用程序中,当需要访问该设备时,只需要采用通常的文件操作函数即可对该设备进行访问。首先采用fopen()13(1)李伟民学号Z0

8、403405UT斯达康通讯有限公司(2)胡炜学号Z0403420杭州建达软件有限

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

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

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