- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第章 设备驱动
第八章 设备驱动 设备驱动 作为通用的操作系统,Linux必须支持各种硬件设备。 然而,每种硬件设备都有自己的特点,有自己独特的使用方法,也就是说每个设备都需要特定的管理与控制程序。由于这些程序直接与硬件交互,因而必须在内核中实现。 但是,要在内核中实现所有设备的控制与管理程序,必将造成以下问题: 1、内核变得十分庞大,而且包含很多无用的代码。 2、新设备的增加十分困难,必须修改内核。 因此,应该提供一种机制来解决上述问题。 设备驱动 为了能够支持各种类型的外部设备,同时又不使内核变得太大,Linux采用了如下方法: 1、为每种(类)外部设备定义一个专有的驱动程序(driver)。 2、把驱动程序从内核中独立出来,只在真正需要时才将其插入内核。 3、在内核和驱动程序之间定义统一的接口,允许用户开发自己的驱动程序。 设备驱动 设备驱动 设备驱动 要开发设备驱动程序,必须具备两方面的知识: 1、在Linux操作系统中,驱动程序是如何构成的,如何工作的,它与内核其余部分的关系,必须注意的问题等。 2、设备的硬件特性,包括计算机的总线、接口,以及设备本身的硬件构成,它与总线的关系和操作方法等。 本章只讨论第一部分。 8.1 设备驱动程序概念 设备驱动程序是内核的一部分。 驱动程序与内核其它部分的区别是: 驱动程序是与设备交互的模块; 驱动程序通常由第三方厂商开发; 一个驱动程序不与其它驱动程序交互(Windows的驱动程序可以分层叠加); 内核与驱动程序之间仅通过一个严格定义的接口交互; 驱动程序大多是可配置的,而且是可动态装入的(内核模块)。 8.1 设备驱动程序概念 设备驱动程序一般由下面几部分组成: 1、对驱动程序接口函数集的实现。对字符和块设备,要实现的接口函数集是file_operations;对于网络设备,要实现的接口函数定义在结构net_device中。 2、设备专有部分。设备驱动程序自己定义的数据结构和管理函数。 3、中断处理程序。处理设备产生的中断(上部)。 4、初始化函数。初始化函数向系统注册驱动程序自身,包括:注册自己对接口函数集的实现,申请IRQ号并注册中断处理程序,申请并注册I/O地址等。初始化函数还完成对设备硬件的检测与初始化工作。 8.1 设备驱动程序概念 内核在下面几种情况下调用设备驱动程序: 1、配置:内核在初始化时,调用驱动程序检查并初始化设备,完成设备的配置; 2、I/O:内核调用设备驱动程序从设备读数据或向设备写数据; 3、控制:向设备发出控制命令,让设备完成读写以外的动作,如修改设备配置等; 4、中断:当设备完成了I/O操作、接收到外部数据、状态改变时,它会通过中断通知CPU,内核使用驱动程序中的中断处理程序完成相应的中断处理。 8.1.1 I/O空间 每一个外设都有自己的一组寄存器(如CSR),驱动程序通过这组寄存器来控制和使用设备。 为了访问设备的寄存器,必须给每个寄存器一个地址(I/O端口)。所有设备的寄存器地址构成了系统的I/O地址空间。 I/O地址空间是有限的。在Intel处理器中,I/O地址空间只有64KB(0-0xFFFF)。 每个设备使用的I/O地址是不同的,应该动态申请和分配I/O地址空间。 为了管理的方便,Linux用结构resource_entry_t描述设备的I/O地址空间。 8.1.1 I/O空间 typedef struct resource_entry_t { u_long from, num; const char *name; struct resource_entry_t *next; } resource_entry_t; Linux预先创建了一个resource_entry_t的结构数组,其中预定义了系统需要的所有resource_entry_t结构: resource_entry_t iotable[IOTABLE_SIZE]; // 128 已经使用(分配出去)的resource_entry_t结构被串联成一个链表,iolist是表头。 8.1.1 I/O空间 函数request_region()用来注册(申请)一个设备的I/O地址空间。即在数组iotable[]中填写一个resource_entry_t结构,并按起始地址from的顺序将其加入到iolist链表中。 函数release_region()用于释放设备的I/O地址空间。 在Intel系列处理器中,I/O空间与内存空间是相互独立的,Intel处理器提供了专门的指令(in和out)来访问I/O空间。 8.1.1 I/O空间 8.1.2 轮询和中断 内核通过轮询了解外设的状态(就绪与否、完成与否)。 外设通过中断向内核报告自己的情况,并请求系统服务。 如果设备采
您可能关注的文档
- 第十一章转基因动物.ppt
- 第十七章 异步电动机的功率转矩和运行特性动画.ppt
- 第十一章 细胞外基质.ppt
- 第十七章 油箱热交换器管路及接头.doc
- 第十一讲 可持续发展的工程观.ppt
- 第十三章 刮板运输机司机岗位作业指导书.doc
- 第十三章 UNIX操作系统.ppt
- 第十一章微机系统的安装.ppt
- 第十三章 药物在体内的转运与代谢转化.ppt
- 第十三章执行机构的设计.ppt
- 光纤数字通信调试工考试《中级光纤数字通信调试工必看题库知识点》模拟卷.doc
- 光纤数字通信调试工考试《中级光纤数字通信调试工题库考点》模拟练习卷.doc
- 超深防渗墙施工工艺、质量通病及控制要点)五星.pptx
- 苏科版八年级上册数学精品教学课件 第4章 实数 4.3 实数 第2课时 实数的运算.ppt
- 苏科版八年级上册数学精品教学课件 第3章 勾股定理 3.1 勾股定理 第1课时 认识勾股定理.ppt
- 苏科版八年级上册数学精品教学课件 第6章 一次函数 6.3 一次函数的图像 第2课时 一次函数的性质.ppt
- 苏科版八年级上册数学精品教学课件 第4章 实数 章末回顾与整合提升.ppt
- 苏科版八年级上册数学精品教学课件 第1章 1.3.1 用“边角边”判定三角形全等.ppt
- 苏科版八年级上册数学精品教学课件 第6章 全章热门考点整合应用.ppt
- 苏科版八年级上册数学精品教学课件 第2章 轴对称图形 2.5 等腰三角形的轴对称性 第2课时 等腰(等边)三角形的判定与性质.ppt
最近下载
- 中华民族共同体概论课件第八讲共奉中国与中华民族聚力发展.pptx VIP
- 一种碱性磷酸酶标记抗体或抗原的方法.pdf VIP
- 2024-2025部编人教版小学语文1一年级上册(全册)优秀课件.ppt
- 手术室PDCA——提高急诊手术器械物品准备的完善率.pptx VIP
- 宠物行业宠物智能喂食器研发方案.doc VIP
- 老年人徒手肌力评定健康促进课件.pptx VIP
- TPM管理培训课件.pptx VIP
- 中华民族共同体概论大讲堂课件第七讲华夷一体与中华民族空前繁盛(隋唐五代时期).pdf VIP
- 灰库系统钢结构加固施工方案.docx VIP
- 2025至2030中国中医馆行业市场发展分析及前景趋势与投资机会报告.docx
文档评论(0)