- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 设备驱动提纲1、Linux驱动程序简介2、设备驱动程序结构3、Linux内核设备模型4、同步机制5、内存映射和管理6、工作队列7、异步I/O8、DMA1、Linux驱动程序简介设备驱动程序是操作系统内核和机器硬件之间的接口设备驱动程序为应用程序屏蔽了硬件的细节,在应用程序看来,硬件设备只是一个设备文件, 应用程序可以像操作普通文件一样对硬件设备进行操作Linux驱动程序简介设备驱动程序是内核的一部分,它完成以下的功能:(1)对设备的初始化和释放。(2)把数据从内核传送到硬件和从硬件读取数据到内核。(3)读取应用程序传送给设备文件的数据和回送应用程序请求的数据。这需要在用户空间,内核空间,总线以及外设之间传输数据。(4)检测和处理设备出现的错误。Linux驱动程序简介设备的分类字符设备无需缓冲直接读写的设备,如系统的串口设备/dev/cua0和/dev/cua1块设备以块为单位进行读写,典型的块大小为512或1024字节;块设备的存取是通过buffer、cache来进行并且可以随机访问,即不管块位于设备中何处都可以对其进行读写网络设备通过BSD套接口访问Linux驱动程序简介设备文件Linux抽象了对硬件的处理,所有的硬件设备都可以作为普通文件一样来看待:它们可以使用和操作文件相同的、标准的系统调用接口来完成打开、关闭、读写和I/O控制操作,而驱动程序的主要任务也就是要实现这些系统调用函数Linux为文件和设备提供了一致的用户接口。对用户来说,设备文件与普通文件并无区别Linux驱动程序简介主设备号和次设备号主设备号标识该设备的种类,也标识了该设备所使用的驱动程序次设备号标识使用同一设备驱动程序的不同硬件设备Linux驱动程序简介 Linux设备驱动代码的分布所有Linux的设备驱动源码都放在drivers目录中,分成以下几类:block:块设备驱动包括IDE(在ide.c中)驱动。块设备包括IDE与SCSI设备。char:包含字符设备的驱动,如ttys、串行口以及鼠标等等Linux驱动程序简介 Linux设备驱动程序的特点(1)内核代码(2)内核接口(3)内核机制与服务(4)可加载(5)可配置(6)动态性2、设备驱动程序结构Linux的设备驱动程序与外界的接口可以分成三部分:(1)驱动程序与操作系统内核的接口(2)驱动程序与系统引导的接口(3)驱动程序与设备的接口设备驱动程序结构驱动程序的注册与注销向系统增加一个驱动程序意味着要赋予它一个主设备号,这可以通过在驱动程序的初始化过程中调用定义在fs/devices.c中的register_chrdev()函数或者fs/block_dev.c中的register_blkdev()函数来完成。而在关闭字符设备或者块设备时,则需要通过调用unregister_chrdev()或unregister_blkdev()函数从内核中注销设备,同时释放占用的主设备号。设备驱动程序结构设备的打开与释放打开设备是通过调用定义在include/linux/fs.h中的file_operations结构中的函数open()来完成释放设备是通过调用file_operations结构中的函数release()来完成设备驱动程序结构设备的读写操作字符设备的读写操作相对比较简单,直接使用函数read()和write()就可以了块设备的话,则需要调用函数block_read()和block_write()来进行数据读写设备驱动程序结构设备的控制操作通过设备驱动程序中的函数ioctl()来完成设备驱动程序结构设备的轮询和中断处理设备执行某个命令时,如“将读取磁头移动到软盘的第42扇区上”,设备驱动可以从轮询方式和中断方式中选择一种以判断设备是否已经完成此命令。不支持中断的硬件设备,读写时需要轮流查询设备状态3、Linux内核设备模型内核设备模型是Linux 2.6之后引进的,是为了适应系统拓扑结构越来越复杂,对电源管理、热插拔支持要求越来越高等形势下开发的全新的设备模型。它采用sysfs文件系统,一个类似于/proc文件系统的特殊文件系统,作用是将系统中的设备组织成层次结构,然后向用户程序提供内核数据结构信息。Linux内核设备模型设备模型建立的目的代码重复最小;提供如引用计数这样的统一机制;例举系统中所有设备,观察其状态,查看其连接总线;用树的形式将全部设备结构完整、有效地展现,包括所有总线和内部连接;将设备和对应驱动联系起来;将设备按照类型分类;从树的叶子向根的方向依次遍历,确保以正确顺序关闭各个设备的电源Linux内核设备模型/sys|-- block|-- bus|-- class|-- dev|-- devices|-- firmware|-- fs|-- kernel|-- module`--
文档评论(0)