前 言写作背景自 1991 年问世以来,Linux 操作系统一直在创造着开源世界的神话,它已经在服务器、嵌入式系统、智能手机等领域大放异彩,当之无愧地成为了当前最重量级的操作系统。从最初的 Linux 0.01 版到现在的 Linux 4.x 版,让我们看到了 Linux 强大的生命力。我们有理由相信,Linux 操作系统将健康地发展下去。
自十多年前在 Linux 平台上开发第一个应用开始,我便喜爱上了 Linux 平台上的软件开发。从那之后,我有幸能够长期从事嵌入式 Linux 的驱动与应用开发,今后也将在 Linux 驱动开发领域持续耕耘。Linux 带给我无穷的乐趣,我也希望向读者介绍 Linux 平台的驱动开发技术,为 Linux 的发展贡献一点绵薄之力。本书上一版出版之后,很多热心读者发来建议,也促使我创作本书第 2 版。
设备驱动程序依然是 Linux 这个伟大的操作系统的最重要的部分,设备驱动程序开发也是实际项目中非常重要的任务。设备驱动程序关系到系统的稳定可靠,这就要求工程师具备严谨的工作态度。设备驱动程序开发是软件与硬件相结合的领域,希望读者能先了解一些硬件方面的知识,为学习本书打下基础。
操千曲而后晓声,观千剑而后识器。我始终认为要成为一个领域的专家,就需要长时间不断地练习以及总结,在实践中不断深入探索是最便捷的学习方法,所以本书实例驱动的学习模式。希望读者能够认真钻研每一个例程,并举一反三,早日成为一名合格的驱动开发工程师。
本书特点? 实战性:本书提供多达三十多个驱动程序例程,非常适合各种层次的驱动程序开发人员。书中例子全部基于 Linux 4.5.2 内核。本书附赠代码包含了书中大部分实例的相关代码,读者可以免费下载。
? 全面性:本书涵盖了 Linux 驱动程序基础、驱动模型、内存管理、内核同步机制、I2C驱动程序、LCD 驱动程序、网络驱动程序、USB 驱动程序、输入子系统驱动程序、块设备驱动程序、音频设备驱动等内容,是驱动程序开发人员的完整参考书。
? 易读性:本书以实例为主线,代码注释丰富,带领读者由浅入深掌握 Linux 驱动程序开发的精髓。
内容结构本书内容丰富全面,涵盖了 Linux 4.5 下的三类驱动设备,包括字符设备、块设备、网络设备的开发技术。本书第 1~5 章为 Linux 驱动程序开发入门基础知识;第 6 章介绍基本的硬件设备驱动开发;第 7~15 章介绍各种硬件接口的驱动程序体系,包括 I2C、LCD、USB、输入设备、网络、TTY、音频等接口。
读者对象本书是一本专门介绍嵌入式 Linux 驱动程序开发的书,读者应具备 C 语言编程和操作系统方面的基础知识。本书主要面向嵌入式 Linux 系统的内核、设备驱动程序、应用程序的开发工程师以及 ARM 嵌入式系统的硬件设计工程师,也可以作为各类嵌入式系统培训机构的培训实验教材和高校操作系统课程的辅导书籍。
特别致谢在朋友、家人和机械工业出版社的帮助和支持下,本书终于得以问世,在此对他们表示衷心的感谢。特别是责任编辑车忱老师,在本书编写过程中提出了大量合理的建议,使本书得以顺利出版。
本书大部分例程基于深圳友坚恒天的 idea6410 开发板,在此对他们表示特别的感谢。本人希望能够和读者一起努力,扩大交流,共同进步。由于 Linux 驱动程序开发相当博大精深,加之本人水平有限,本书错误在所难免,请各位读者原谅并指正。读者可把修改建议发送到fgjnew@163.com,以便再版时修正。
冯国进2016 年 10 月 1 日