Linux设备驱动程序(第三版)
基本信息
- 原书名: Linux Device Drivers,3rd Edition
- 原出版社: O'Reilly
- 作者: (美)Jonathan Corbet,Alessandro Rubini, Greg Kroah-Hartman [作译者介绍]
- 译者: 魏永明 耿岳 钟书毅
- 丛书名: O'REILLY系列
- 出版社:中国电力出版社
- ISBN:7508338634
- 上架时间:2005-12-19
- 出版日期:2006 年1月
- 开本:16开
- 页码:569
- 版次:3-1
- 所属分类:
计算机 > 操作系统 > Linux
编辑推荐
本书作者均为Linux 社区的领导者。译者是MiniGUI的创始人魏永明。本书紧跟内核的发展步伐。完整地描述了2.6.10内核,希望能够成为那些想成为内核黑客但却不知如何下手的人们的良好起点。
内容简介回到顶部↑
本书是经典著作《linux 设备驱动程序》的第三版。该版本已针对 linux 内核的 2.6.10 彻底更新过了。内核的这个版本针对常见任务完成了合理化设计及相应的简化,比如即插即用,利用sysfs 文件系统和用户空间交互,以及标准总线上的多设备管理等等。本书提供了完整的示例程序,不需要特殊的硬件即可编译和运行这些示例程序。本书还在单独的章节中讲述了 pci、usb 和 tty(终端)子系统。对期望了解操作系统内部工作原理的读者来讲,本书也深入阐述了地址空间、异步事件以及 i/o 等方面的内容。本书主要介绍:完整的字符、块、tty(终端)及网络驱动程序驱动程序的调试、中断、计时问题、并发、锁定和对称多处理器系统(smp)、内存管理和 dma、驱动程序模型和 sysfs、热插拔设备、对常见总线的描述,包括 scsi、pci、usb 和 ieee1394(火线)。
[a href="http://www.farsight.com.cn/" target="_blank"][font color="#ff0000"]华清远见相关培训课程:嵌入式linux、linux驱动、arm、dsp、fpga、cadence、高速pcb设计、ic设计、j2me、symbian、palm [/font][/a]
作译者回到顶部↑
本书提供作译者介绍
关于作者之一:
魏永明( ymwei@minigui.org),工学硕士。国内最有影响的自由软件项目之一--MiniGUI 的创始人及主要开发人员。著有《Linux 实用教程》与《学用 Linux 与 Windows NT》,并主持翻译了《Red Hat Linux 奥秘》、《Linux 编程宝典》 等大量优秀的 Linux 技术著作。是清华大学 AKA Linux 编程技术系列讲座的主讲人。
.. << 查看详细
魏永明( ymwei@minigui.org),工学硕士。国内最有影响的自由软件项目之一--MiniGUI 的创始人及主要开发人员。著有《Linux 实用教程》与《学用 Linux 与 Windows NT》,并主持翻译了《Red Hat Linux 奥秘》、《Linux 编程宝典》 等大量优秀的 Linux 技术著作。是清华大学 AKA Linux 编程技术系列讲座的主讲人。
.. << 查看详细
目录回到顶部↑
前言 1
第一章 设备驱动程序简介 9
设备驱动程序的作用 10
内核功能划分 12
设备和模块的分类 14
安全问题 15
版本编号 17
许可证条款 18
加入内核开发社团 19
本书概要 19
第二章 构造和运行模块 21
设置测试系统 21
hello world模块 22
核心模块与应用程序的对比 24
编译和装载 28
内核符号表 33
预备知识 35
初始化和关闭 36
模块参数 40
在用户空间编写驱动程序 42
第一章 设备驱动程序简介 9
设备驱动程序的作用 10
内核功能划分 12
设备和模块的分类 14
安全问题 15
版本编号 17
许可证条款 18
加入内核开发社团 19
本书概要 19
第二章 构造和运行模块 21
设置测试系统 21
hello world模块 22
核心模块与应用程序的对比 24
编译和装载 28
内核符号表 33
预备知识 35
初始化和关闭 36
模块参数 40
在用户空间编写驱动程序 42
前言回到顶部↑
顾名思义,本书是讲述如何编写Linux设备驱动程序的。面对层出不穷的新硬件产品,必须有人不断编写新的驱动程序以便让这些设备能够在Linux下正常工作,从这个意义上讲,讲述驱动程序的编写本身就是一件非常有意义的工作。但本书也涉及到Linux内核的工作原理,同时还讲述如何根据自己的需要和兴趣来定制Linux内核。Linux是一个开放的系统,我们希望借助本书使它能够更加开放,从而能够吸引更多的开发人员。.
本书是《Linux设备驱动程序》的第三版。自本书第一版发行以来,内核已经发生了巨大变化,我们必须努力让本书跟上内核的发展步伐。在这一版本中,我们尽可能完整地描述了2.6.10内核。这次,我们决定略去针对先前内核版本的向后兼容性描述,这是因为从2.4以来内核发生的改变实在太大了,而针对2.4内核的接口描述在本书第二版(可免费获得)中有很好的阐述。
这一版本包括了一些2.6内核相关的新内容。关于锁和并发性的内容得到了进一步充实,而且单独成章。我们还详细描述了2.6内核中新引入的Linux设备模型。我们用新的章节来描述USB总线和串行驱动程序子系统;同时,讲述PCI的那一章也得到了加强。本书其余部分类似先前的版本,但几乎每一章都彻底更新过了。
我们希望读者能够从本书的学习中获得乐趣,就像我们自己从编写本书的过程中获得乐趣一样。
Jon的介绍
这个版本出版的时候,恰好我在Linux界工作了12年,更惊人的是恰好是我在计算机领域工作的第25个年头。1980年时,计算机领域就已经是个快速发展的领域,然而此后又加速不少。让本书保持更新状态面临越来越大的挑战;Linux内核黑客在不停地增强他们的代码,但很少有耐心去关心文档是否跟得上步伐。
在市场上Linux保持着成功,但更重要的是Linux赢得了全球开发人员的关注。很明显,Linux的成功证明了其优秀的技术质量以及自由软件的大量好处。但在我看来,其成功的真正关键在于如下事实:Linux将快乐重新带回到计算机领域。利用Linux,任何人可以了解系统并以任何可能的方式贡献自己的代码,当然,代码在技术上的优势是其中最有价值的。Linux不仅为我们提供了一个顶级质量的操作系统,而且也为我们提供了参与到其未来开发过程的机会,我们完全可以从中得到无尽的快乐。
在计算机领域的25年中,我曾经有过许多有意思的经历,从第一次为Cray计算机编程(用Fortran语言在纸带上打孔),到亲历迷你计算机和Unix工作站的变迁,一直到当前微处理器占支配地位的时代。我还没有看到哪个领域可以让人如此着迷并因此开心快乐,也从未有过像现在这样能够完全控制我们的工具及其发展的时候。很明显,Linux和自由软件是这些变化背后的驱动力。
我希望本书能将这种快乐和机会带给新的Linux开发人员。不管你的兴趣在内核级还是用户空间,我都希望本书是一本有用而且有趣的指南,它能够帮助读者发现内核是如何和硬件一同工作的。我希望本书能帮助和启发读者利用自己的编辑器让我们共享的、自由的操作系统更加美好! Linux已经走过了很长的路,然而此刻也正是起点,观察并参与其中将为你带来更大的乐趣。
Alessandro的介绍
我一直喜欢玩电脑,就因为通过电脑我可以控制外部的硬件。我曾为Apple II和ZX Spectrum系统焊接我自己的设备,之后,有了大学中学到的Unix和自由软件专业知识,通过在新的386系统上安装了GNU/Linux并再次玩起了自己的电路板,我逃离了DOS陷阱。
那时Linux社区还非常小,也没有太多的文档来描述如何编写驱动程序,于是我开始为《inuxJournal》撰稿。这就是事情的开端:当我发现我自己不喜欢撰写论文后,我离开了大学,并和O'Reilly签订了本书第一版的编写合同。
这是1996年的事情,已经过去好多年了。
现在,计算机世界已经大不相同了:自由软件已经成为一种可行方案,不论在技术上还是在政治上,然而在这两个领域仍然有许多工作要做。我希望本书能够促进如下两个目标的实现:传播技术知识并提高对传播知识必要性的认同。这也是奉书第一版被大众广泛接受以来第二版的两位作者在编辑和出版商的支持下转向自由许可证的原因。我坚信这是正确的知识传播途径,并且有利于和认同这种观点的其他人合作。
在嵌入式领域中所发生的一切令我兴奋,我希望本书能够为Linux的应用推波助澜;然而,在今天这个时代,思想的变化尤其迅速,为第四版作计划的时间已经到来,我们也正在寻求第四位作者的帮助。
Greg的介绍
从为了编写一个真实的Linux驱动程序而拿起《Linux设备驱动程序》第一版到现在,已经过很长一段时间。本书第一版帮助我理解了Linux操作系统的内部细节,而在此之前,我使用该操作系统有很长的时间,但几乎没有时间来研究内核细节。有了第一版中获得的知识,加上阅读内核中其他程序员的代码,我的第一个充满缺陷、非SMP安全的驱动程序被内核社区接受,并加入到了内核代码的主分支中。尽管在五分钟之后我就收到了我的第一个缺陷报告,但自此我就被希望尽我所能使Linux操作系统成为最好的欲望吸引住了。..
我非常荣幸能够为本书贡献一些东西。我希望本书能够帮助其他人掌握与内核相关的一些细节,你会发现驱动程序的开发并不像想像的那么可怕或吓人,当然,我也希望本书能够鼓励其他人加入或者帮助这个大的集体,以便让这个操作系统可以在每一个计算机平台上运行,并支持每一种可获得的设备。开发过程充满着乐趣,加入社区非常值得,因为每个人都能从努力付出中获得好处。
现在,让我们一起寻找这个版本的缺陷,修改API以便让它们更好地工作,或者更加简单而便于每个人理解,或者增加新的特性。来吧,参与其中我们也将得到他人的帮助。
本书的读者对象
本书是《Linux设备驱动程序》的第三版。自本书第一版发行以来,内核已经发生了巨大变化,我们必须努力让本书跟上内核的发展步伐。在这一版本中,我们尽可能完整地描述了2.6.10内核。这次,我们决定略去针对先前内核版本的向后兼容性描述,这是因为从2.4以来内核发生的改变实在太大了,而针对2.4内核的接口描述在本书第二版(可免费获得)中有很好的阐述。
这一版本包括了一些2.6内核相关的新内容。关于锁和并发性的内容得到了进一步充实,而且单独成章。我们还详细描述了2.6内核中新引入的Linux设备模型。我们用新的章节来描述USB总线和串行驱动程序子系统;同时,讲述PCI的那一章也得到了加强。本书其余部分类似先前的版本,但几乎每一章都彻底更新过了。
我们希望读者能够从本书的学习中获得乐趣,就像我们自己从编写本书的过程中获得乐趣一样。
Jon的介绍
这个版本出版的时候,恰好我在Linux界工作了12年,更惊人的是恰好是我在计算机领域工作的第25个年头。1980年时,计算机领域就已经是个快速发展的领域,然而此后又加速不少。让本书保持更新状态面临越来越大的挑战;Linux内核黑客在不停地增强他们的代码,但很少有耐心去关心文档是否跟得上步伐。
在市场上Linux保持着成功,但更重要的是Linux赢得了全球开发人员的关注。很明显,Linux的成功证明了其优秀的技术质量以及自由软件的大量好处。但在我看来,其成功的真正关键在于如下事实:Linux将快乐重新带回到计算机领域。利用Linux,任何人可以了解系统并以任何可能的方式贡献自己的代码,当然,代码在技术上的优势是其中最有价值的。Linux不仅为我们提供了一个顶级质量的操作系统,而且也为我们提供了参与到其未来开发过程的机会,我们完全可以从中得到无尽的快乐。
在计算机领域的25年中,我曾经有过许多有意思的经历,从第一次为Cray计算机编程(用Fortran语言在纸带上打孔),到亲历迷你计算机和Unix工作站的变迁,一直到当前微处理器占支配地位的时代。我还没有看到哪个领域可以让人如此着迷并因此开心快乐,也从未有过像现在这样能够完全控制我们的工具及其发展的时候。很明显,Linux和自由软件是这些变化背后的驱动力。
我希望本书能将这种快乐和机会带给新的Linux开发人员。不管你的兴趣在内核级还是用户空间,我都希望本书是一本有用而且有趣的指南,它能够帮助读者发现内核是如何和硬件一同工作的。我希望本书能帮助和启发读者利用自己的编辑器让我们共享的、自由的操作系统更加美好! Linux已经走过了很长的路,然而此刻也正是起点,观察并参与其中将为你带来更大的乐趣。
Alessandro的介绍
我一直喜欢玩电脑,就因为通过电脑我可以控制外部的硬件。我曾为Apple II和ZX Spectrum系统焊接我自己的设备,之后,有了大学中学到的Unix和自由软件专业知识,通过在新的386系统上安装了GNU/Linux并再次玩起了自己的电路板,我逃离了DOS陷阱。
那时Linux社区还非常小,也没有太多的文档来描述如何编写驱动程序,于是我开始为《inuxJournal》撰稿。这就是事情的开端:当我发现我自己不喜欢撰写论文后,我离开了大学,并和O'Reilly签订了本书第一版的编写合同。
这是1996年的事情,已经过去好多年了。
现在,计算机世界已经大不相同了:自由软件已经成为一种可行方案,不论在技术上还是在政治上,然而在这两个领域仍然有许多工作要做。我希望本书能够促进如下两个目标的实现:传播技术知识并提高对传播知识必要性的认同。这也是奉书第一版被大众广泛接受以来第二版的两位作者在编辑和出版商的支持下转向自由许可证的原因。我坚信这是正确的知识传播途径,并且有利于和认同这种观点的其他人合作。
在嵌入式领域中所发生的一切令我兴奋,我希望本书能够为Linux的应用推波助澜;然而,在今天这个时代,思想的变化尤其迅速,为第四版作计划的时间已经到来,我们也正在寻求第四位作者的帮助。
Greg的介绍
从为了编写一个真实的Linux驱动程序而拿起《Linux设备驱动程序》第一版到现在,已经过很长一段时间。本书第一版帮助我理解了Linux操作系统的内部细节,而在此之前,我使用该操作系统有很长的时间,但几乎没有时间来研究内核细节。有了第一版中获得的知识,加上阅读内核中其他程序员的代码,我的第一个充满缺陷、非SMP安全的驱动程序被内核社区接受,并加入到了内核代码的主分支中。尽管在五分钟之后我就收到了我的第一个缺陷报告,但自此我就被希望尽我所能使Linux操作系统成为最好的欲望吸引住了。..
我非常荣幸能够为本书贡献一些东西。我希望本书能够帮助其他人掌握与内核相关的一些细节,你会发现驱动程序的开发并不像想像的那么可怕或吓人,当然,我也希望本书能够鼓励其他人加入或者帮助这个大的集体,以便让这个操作系统可以在每一个计算机平台上运行,并支持每一种可获得的设备。开发过程充满着乐趣,加入社区非常值得,因为每个人都能从努力付出中获得好处。
现在,让我们一起寻找这个版本的缺陷,修改API以便让它们更好地工作,或者更加简单而便于每个人理解,或者增加新的特性。来吧,参与其中我们也将得到他人的帮助。
本书的读者对象








点击看大图





加载中...


