Linux设备驱动程序第三版

Linux设备驱动程序第三版

ID:46885808

大小:2.10 MB

页数:572页

时间:2019-11-28

Linux设备驱动程序第三版_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《Linux设备驱动程序第三版》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、以Linux为代表的自由操作系统的很多优点之一,是它们的内部是开放给所有人看的.操作系统,曾经是一个隐藏的神秘的地方,它的代码只局限于少数的程序员,现在已准备好让任何具备必要技能的人来检查,理解以及修改.Linux已经帮助使操作系统民主化.Linux内核保留有大量的复杂的代码,但是,那些想要成为内核hacker的人需要一个入口点,这样他们可以进入代码中,不会被代码的复杂性压倒.通常,设备驱动提供了这样的门路.驱动程序在Linux内核里扮演着特殊的角色.它们是截然不同的"黑盒子",使硬件的特殊的一部分响应定义好的内部编程接口.它们完全隐藏了设备工作的细

2、节.用户的活动通过一套标准化的调用来进行,这些调用与特别的驱动是独立的;设备驱动的角色就是将这些调用映射到作用于实际硬件的和设备相关的操作上.这个编程接口是这样,驱动可以与内核的其他部分分开建立,并在需要的时候在运行时"插入".这种模块化使得Linux驱动易写,以致于目前有几百个驱动可用.编写Linux设备驱动有许多理由让人感兴趣.可用的新硬件出现的速率(以及陈旧的速率)就确保了驱动编写者在可见的将来内是忙碌的.个别人可能需要了解驱动以便存取一个他们感兴趣的特殊设备.硬件供应商,通过为他们的产品开发Linux驱动,可以给他们的潜在市场增加大量的正在扩

3、张的Linux用户基数.还有Linux系统的开放源码性质意味着如果驱动编写者愿意,驱动源码能够快速地散布到几百万用户.本书指导你如何编写你自己的驱动,以及如何利用内核相关的部分.我们采用一种设备-独立的方法;编程技术和接口,在任何可能的时候,不会捆绑到任何特定的设备.每一个驱动都是不同的;作为一个驱动编写者,你需要深入理解你的特定设备.但是大部分的原则和基本技术对所有驱动都是一样的.本书无法教你关于你的设备的东西,但是它给予你所需要的使你的设备运行起来的背景知识的指导.在你学习编写驱动时,你通常会发现大量有关Linux内核的东西.这也许会帮助你理解你

4、的机器是如何工作的,以及为什么事情不是如你所愿的快,或者不是如你所要的进行.我们会逐步介绍新概念,由非常简单的驱动开始并建立它们;每一个新概念都伴有例子代码,这样的代码不需要特别的硬件来测试.本章不会真正进入编写代码.但是,我们介绍一些Linux内核的背景概念,这样在以后我们动手编程时,你会感到乐于知道这些.1.1.驱动程序的角色作为一个程序员,你能够对你的驱动作出你自己的选择,并且在所需的编程时间和结果的灵活性之间,选择一个可接受的平衡.尽管说一个驱动是"灵活"的,听起来有些奇怪,但是我们喜欢这个字眼,因为它强调了一个驱动程序的角色是提供机制,而不

5、是策略.机制和策略的区分是其中一个在Unix设计背后的最好观念.大部分的编程问题其实可以划分为2部分:"提供什么能力"(机制)和"如何使用这些能力"(策略).如果这两方面由程序的不同部分来表达,或者甚至由不同的程序共同表达,软件包是非常容易开发和适应特殊的需求.例如,图形显示的Unix管理划分为X服务器,它理解硬件以及提供了统一的接口给用户程序,还有窗口和会话管理器,它实现了一个特别的策略,而对硬件一无所知.人们可以在不同的硬件上使用相同的窗口管理器,而且不同的用户可以在同一台工作站上运行不同的配置.甚至完全不同的桌面环境,例如KDE和GNOME,可

6、以在同一系统中共存.另一个例子是TCP/IP网络的分层结构:操作系统提供socket抽象层,它对要传送的数据而言不实现策略,而不同的服务器负责各种服务(以及它们的相关策略).而且,一个服务器,例如ftpd提供文件传输机制,同时用户可以使用任何他们喜欢的客户端;无论命令行还是图形客户端都存在,并且任何人都能编写一个新的用户接口来传输文件.在驱动相关的地方,机制和策略之间的同样的区分都适用.软驱驱动是不含策略的--它的角色仅仅是将磁盘表现为一个数据块的连续阵列.系统的更高级部分提供了策略,例如谁可以存取软驱驱动,这个软驱是直接存取还是要通过一个文件系统,

7、以及用户是否可以加载文件系统到这个软驱.因为不同的环境常常需要不同的使用硬件的方式,尽可能对策略透明是非常重要的.在编写驱动时,程序员应当特别注意这个基础的概念:编写内核代码来存取硬件,但是不能强加特别的策略给用户,因为不同的用户有不同的需求.驱动应当做到使硬件可用,将所有关于如何使用硬件的事情留给应用程序.一个驱动,这样,就是灵活的,如果它提供了对硬件能力的存取,没有增加约束.然而,有时必须作出一些策略的决定.例如,一个数字I/O驱动也许只提供对硬件的字符存取,以便避免额外的代码处理单个位.你也可以从不同的角度看你的驱动:它是一个存在于应用程序和实

8、际设备间的软件层.驱动的这种特权的角色允许驱动程序员y严密地选择设备应该如何表现:不同的驱动可以提供不同的能

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

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

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