基本信息
【插图】

编辑推荐
荣获51CTO网站主办的2009年度最佳技术图书奖,网友好评如潮
荣获ZD.NET技术网站主办的2009年度十佳IT图书之一
首版销售达3万册,被china-pub评选进入2009年度技术图书畅销榜TOP50
2010版畅销书最新升级,基于最新Linux内核和LDD6410平台,本年度最值得期待的驱动开发技术图书
内容简介
计算机书籍
本书是一本介绍linux设备驱动开发理论、框架与实例的书,本书基于ldd6410开发板,以linux 2.6版本内核为蓝本,详细介绍自旋锁、信号量、完成量、中断顶/底半部、定时器、内存和i/o映射以及异步通知、阻塞i/o、非阻塞i/o等linux设备驱动理论;字符设备、块设备、tty设备、i2c设备、lcd设备、音频设备、usb设备、网络设备、pci设备等linux设备驱动的架构和框架中各个复杂数据架构和函数的关系,并讲解了linux驱动开发的大量实例,使读者能够独立开发各类linux设备驱动。<BR>本书内容全面,实例丰富,操作性强,语言通俗易懂,适合广大linux开发人员、嵌入式工程师参考使用。
目录
前言
·没有现成的开发环境,读者需要从头到尾构建,而构建需要花费很长的时间,许多时候会不成功,加之配套光盘中的实例没有Makefile,更加大了操作的难度。
·没有配套的开发板,大量的基于S3C2410的实例读者身边如果没有可以直接运行的平台,就无法亲身体验这些驱动。
·个别内容实用性不强或过于陈旧,也有个别知识点的讲解语言晦涩,读者不易理解,如platform驱动。
·一些知识点内容不够完整,如input驱动、USB UDC和gadget驱动、SPI驱动、ASoC驱动等。
鉴于此,作者针对以上问题对第1版内容进行修订,推出了第2版。新版中对全书超过40%的内容进行了修订。这些修订,一些是对过时内容的删除,一些是对讲解不清的知识点的修正,一些是对重点内容的增强,一些则是有用知识点的增加,其目的是为读者提供一套更加准确和完整的全方位、立体式Linux设备驱动学习平台。第2版相对第1版的主要改动如下。
(1)直接提供VirtualBox虚拟机,该虚拟机上已包含了书中所需的开发环境和源代码,读者不再需要安装环境即可进行实验,书中详细介绍了各个实验的步骤。
(2)提供了专门的配套学习板——基于三星S3C6410 SoC的LDD6410(Linux Device Drivers6410),使得书中的各种真实设备驱动实例有了实验的依托。
(3)全面升级内核至Linux 2.6.28.6,根据Linux内核APl的变更情况更新了书中的所有内容,如I2C驱动的体系结构、网络NAPI的接口等,并对delayed_work等较新的内核机制进行了介绍。
(4)删除了过时的内容,如传统的按键驱动、SAA7113H启动、传统的IDE驱动等,同时新增了大量内容,包括Linux内核的编码风格、Linux内核的移植、Android驱动、USBUDC和gadget驱动、ALSASoC驱动、input驱动、SPI驱动、基于sysfs的设备驱动、Linux设备驱动的固件加载、Linux性能调优工具、Linux设备驱动的电源管理、Linux驱动的分层设计思想、主机驱动与设备驱动分离设计思想等。
(5)在块设备驱动方面,删除了RAMDISK驱动实例,而新增了更加简单易懂的vmem』isk、类似于globalmem和globalfifo驱动。
(6)对许多关键知识点的讲解进行了语言调整和内容增强,以便读者能更好地理解,例如,以专门章节讲解platform驱动等。
全书总体结构仍然与第1版一致,共分4篇23章,内容安排如下。
第1篇(第1~3章)主要讲解Linux设备驱动的基础。
第1章主要讲解设备驱动的作用,并从无操作系统的设备驱动引出了Linux操作系统下的设备驱动以及全书所用实验环境的安装方法。
第2章系统地讲解了一个Linux驱动工程师应该掌握的硬件知识,使读者打下Linux设备驱动开发的硬件基础。本章涵盖了各种类型的CPU、存储器和常见的外设,并讲解了硬件时序分析方法和仪器使用方法。
第3章将Linux设备驱动放在Linux 2.6内核背景中进行讲解,说明Linux内核的基本原理和编程方法,为编写Linux设备驱动打下软件基础。
第2篇(第4~12章)主要讲解Linux设备驱动编程的基础理论、字符设备驱动、设备驱动设计中涉及的并发控制、同步等问题以及Linux驱动的工程化。
第4、5章分别讲解Linux内核模块和Linux设备文件系统。
第6—9章以虚拟设备globalmem和globalfifo为主线讲解了字符设备驱动的编写方法,并讲解了并发控制、阻塞与非阻塞、异步I/O等高级控制功能。
媒体评论
何小庆(北京麦克泰软件技术有限公司董事长)
“点亮LED”,寥寥几行代码,你可以做到。本书从简单入手,循序渐进。那些难以触及的理论,如并发控制、中断、内存映射等,在阶梯式的代码叠加中被你逐步掌握。熟悉硬件规范后,你只需一步步按框架实践,便可开发出一个USB设备驱动。
陈莉君(西安邮电学院教授)
本书系统讲述了Linux内核驱动的支撑技术,涉及内核编程方式、内核模块、设备文件系统、同步互斥机制等。本书针对具体硬件的真实外设。结合实际外设的硬件逻辑,讲解了常见类型驱动程序的编写方法和实现细节。对广大Linux爱好者而言,是一本值得推荐的好书。
陈渝(清华大学副教授)
本书有一个非常突出的特点——实用,全书以大量实例来引导读者编写以及移植Linux设备驱动,这些实例是作者多年Linux设备驱动开发从业经验的总结,读者一定会从中受益。
郭淳学(中国软件行业学会嵌入式系统分会副理事长兼秘书长)
在Linux内核源代码树的各个子系统中,设备驱动是最大的一个子树分支,目前最新的Linux内核支持70多种设备驱动家族。Linux下的驱动编程一直被认为是一门艺术,本书是通往Linux设备驱动开发殿堂的钥匙。
史应生(红帽专家服务团队资深咨询顾问,RHCA、RHCSS中国第一人)
设备驱动是操作系统最具多样性和复杂性的部分。回想限入式系统教学之初,我几乎买遍了市面上的Linux图书也没有找到一个模块化驱动的开发实例。本书语言通俗易懂,结构清晰,作者有丰富的培训和开发经验,是国内少有的驱动程序开发专著。
马忠梅(北京理工大学副教授)
如果说硬件是系统的躯体;软件是系统的灵魂,驱动就是连接躯体和灵魂的纽带,是系统运转的枢纽。本书旨在引导读者,消除读者对驱动开发的神秘感,同时也指出了老手常见的盲点与误区。更难得的是,本书通过大量开发实例生动、系统地讲解了Linux设备驱动开发的方方面面。
向农(电子工程世界总编)