.最后国内linux主机,本书能得以出版,要谢谢率领我往前的人生导师和我的诸多男子伴,她们或则在我人生的关键时刻改变了我,或则给我黑暗的程序生涯带来了无尽的快乐和动力。我的男子伴,她们抨击我、鼓励我,也侮辱我、奚落我,那些都是真诚的友情。
谨借此书,致以对杨平先生、何昭然、方毅伟、李华毅、宋志武、杜向龙、叶祥振、刘昊、王榕、何晔、王立赛、曾过、刘永生、段丙华、章君义、王文琪、卢鹏、刘涛、徐西安、吴赫、任桥伟、秦龙廷、胡良兵、张家旺、王雷、BryanWu、EricMiao、CliffCai、QipanLi、GuoyingZhang、陈健松、HaoyuZhong、刘洪涛、季久峰、邴杰、孙志忠、吴国举、BobLiu、赵小吾、EJZhao、贺亚锋、刘仕杰、HaoYin等老师和男子伴的深深感激;谨借此书,致以对我的父亲大人、老婆大人、兄长和弟弟、伟大婆婆的深深感激,本书的写作时间超过一年,其过程是一种巨大的肉体和精神摧残linux驱动下载,没有她们的默默支持和不断鞭策,本书是不可能完成的;谨借此书,对为本书作出巨大贡献的编辑、策划老师,尤其是张国强老师致以深深的感激!
因为篇幅的关系,我没有办法一一列出我要感激的所有人,然而,那些年从大家那儿获得的,远远小于我付出的,所以,在内心深处,惟有怀着对大家的深深感恩,不断前行。时光如歌,吾歌狂行。
全书结构
本书首先介绍Linux设备驱动的基础。第1章简略地介绍了设备驱动,并从无操作系统的设备驱动引出了Linux操作系统下的设备驱动,介绍了本书所基于的开发环境。第2章系统地讲解了Linux驱动工程师应当把握的硬件知识,为工程师打下Linux驱动编程的硬件基础宋宝华linux设备驱动开发详解:基于最新的linux4.0,详尽介绍了各种类型的CPU、存储器和常见的外设,并探讨了硬件时序剖析方式和数据指南阅读技巧。第3章将Linux设备驱动置于Linux2.6内核背景中进行讲解,说明Linux内核的编程技巧。因为驱动编程也在内核编程的范畴,因而,这一章实质是为编撰Linux设备驱动打下软件基础。
其次,讲解Linux设备驱动编程的基础理论、字符设备驱动及设备驱动设计中涉及的并发控制、同步等问题。第4、5章分别讲解Linux内核模块和Linux设备文件系统;第6~9章以虚拟设备globalmem和globalfifo为主线,逐渐给其添加中级控制功能;第10、11章分别论述Linux驱动编程中所涉及的中断和定时器、内核和I/O操作处理方式。
接着,分析复杂设备驱动的体系结构以及块设备、网络设备驱动。该篇讲解了设备与驱动的分离、主机控制器驱动与外设驱动的分离,并以大量实例(如input、tty、LCD、platform、I2C、SPI、USB等)来旁证。其中第12章和第17章遥相呼应,力图全面地展示驱动的构架。Linux有100多个驱动子系统,挨个讲解和学习都是不现实的,授人以鱼不如授人以渔,因而我们将更多的焦点放到了构架讲解方面,便于读者可以举一反三。
本书最后4章剖析了Linux的设备树、Linux移植到新的SoC上的具体工作以及Linux内核和驱动的一些调试方式。那些内容,对于理解怎么从头开始搭建一个Linux,以及整个Linux板级支持包上上下下的关系尤为重要。
另外,本书的主要代码都引用自Linux源代码,为保留原汁原味,均沿用了代码的英语注释,而其他非引用的代码则使用了英文注释或无注释,特此说明。
本书配套的相关素材和代码,读者均可从与本书相关的陌陌公众号中获得,相关公众号是:Linuxer宋宝华linux设备驱动开发详解:基于最新的linux4.0,欢迎扫描二维码。
宋宝华
2015年4月于南京闵行