- 1、本文档共52页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10.1 Linux设备驱动开发概述 服务于I/O请求的子程序,又称为驱动程序的上半部分。调用这部分是系统调用的结果。在执行这部分程序的时候,系统仍认为和进行调用的进程属于同一个进程,只是由用户态转换为核心态,并具有进行此系统调用的用户程序的运行环境,所以可以在其中调用sleep( )等与进程运行环境有关的函数。在系统内部,I/O设备的存取通过一组固定的入口点来进行,这组入口点是由每个设备的设备驱动程序提供的。 10.1 Linux设备驱动开发概述 10.1.2 设备类型和设备号 1.字符设备 2.块设备 3.网络设备 10.1 Linux设备驱动开发概述 1.字符设备 10.1 Linux设备驱动开发概述 1.字符设备 Linux使用管理文件的方法来管理字符设备,所以每个字符设备在/dev/目录下都有一个对应的设备文件,即设备节点,它们包含了设备的类型、主/次设备号以及设备的访问权限控制等。每个字符设备文件都有自己的与普通文件相同的文件操作函数组结构(struct file_operations)。字符设备驱动通常至少需要实现文件操作函数组中的open()、release()、read()和write()四种操作方法。常见的字符设备有鼠标、键盘等。 10.1 Linux设备驱动开发概述 2.块设备 存储设备一般属于块设备,块设备有请求缓冲区,并且支持随机访问而不必按照顺序去存取数据。Linux下的磁盘设备都是块设备,尽管在Linux下有块设备节点,但应用程序一般是通过文件系统及其高速缓存来访问块设备的,而不是直接通过设备节点来读写块设备上的数据。块设备文件的第一个标志是前面的“b”标志,如“brw-rw”所代表的就是块设备。 10.1 Linux设备驱动开发概述 2.块设备 块设备既可以作为普通的设备用来存放任意数据,也可以将块设备按某种文件系统类型的格式进行格式化,然后按照该文件系统类型的格式来读取块设备上的数据,但不管哪种方式,最后访问设备上的数据都必须通过调用设备本身的操作方法实现,区别在于前者直接调用块设备的操作方法,而后者则间接调用块设备的操作方法。常见的块设备有各种硬盘、flash磁盘、RAM磁盘等。 10.1 Linux设备驱动开发概述 3.网络设备 网络设备不同于字符设备和块设备,它是面向报文的而不是面向流的,它不支持随机访问,也没有请求缓冲区。在Linux里一个网络设备也可以叫做一个网络接口,应用程序是通过Socket而不是设备节点来访问网络设备,在系统里根本就不存在网络设备节点。内核使用一套与数据包传输相关的函数来与网络设备驱动程序通信,它们不同于字符设备和块设备的read()和write()方法。 10.1 Linux设备驱动开发概述 3.网络设备 Linux系统通过设备号来区分不同设备。设备号由两部分组成:主设备号和次设备号。主设备号指明对应哪些设备驱动,这种对应关系是固定不变的并作为内核资源的一部分存在。需要注意的是,同一个主设备号可以对应两个不同的设备驱动,一个可以是字符设备另一个可以是块设备。 10.1 Linux设备驱动开发概述 3.网络设备 次设备号区分被一个设备驱动控制下的某个独立的设备。比如,同一个类型的USB设备可以在系统中存在几个,它们通过次设备号加以区分,而设备驱动可以只对应一个。 Linux支持的各种设备的主设备号定义在include/linux/major.h文件中,而已经在官方注册的主设备号和次设备号在Documentation/devices.txt文件中可以找到。 10.2 设备驱动模块化编程 模块是程序设计中一个十分重要的概念,它是一个具有独立逻辑功能的代码块,每个模块都可以被重复使用,模块化编程可以有效提高程序的编写效率,同时也能增强程序的可读性和易修改性。 10.2 设备驱动模块化编程 10.2.1 设备驱动程序原理 10.2 设备驱动模块化编程 10.2.2 设备访问方式及实现 1、查询方式 在数据传送之前,对目标设备的状态进行查询,确知外设已经做好了传送数据的准备时再进行数据传送,否则,CPU等待并持续不断的查询,一旦外设准备好,则立即进行读或写操作,这种方式称为查询方式。 10.2 设备驱动模块化编程 1、查询方式 对于查询方式来说,一个数据传送过程由三个环节组成: (1) 从接口中读取状态字。 (2) CPU检测状态字的对应位是否满足就绪条件,如果不满足,则回到前一步,继续读取状态字。 (3) 如果状态字表
您可能关注的文档
最近下载
- 【专项练习】四年级上册数学试题--第二单元专项—《填写单位》 人教版 (含答案).doc VIP
- 药学英语(上册)(第5版)史志祥课后习题答案解析.pdf
- 高中入团思想汇报范文(6篇).docx VIP
- 公路大中修工程交通组织方案设计与研究-来源:现代企业文化·下旬刊(第2021007期)-中国工人出版社.pdf VIP
- 稻盛和夫《心》读后感集合5篇.docx VIP
- 个人现实表现(现实表现).pdf VIP
- 货物运输投标文件(技术部分).pdf
- GB_T 15560-1995《流体输送用塑料管材液压瞬时爆破和耐压试验方法》.pdf
- 食材配送项目投标文件.doc
- (统编2024版)一年级道德与法治上册 第8课 课余生活真丰富 教学设计.docx
文档评论(0)