深入理解嵌入式Linux设备驱动程序
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

随着计算机技术及相关技术的发展,嵌入式技术已经在通信、网络、工控、航空航天、医疗电子等领域得到了广泛的应用。近些年来,三网融合、智能电网、物联网等战略性新兴产业的快速发展也为嵌入式产业带来巨大的发展机遇。而嵌入式操作系统,作为驱动嵌入式系统硬件的灵魂,在嵌入式技术中占据着极其重要的地位。

智能化、网络化是当今电子设备发展最重要的趋势。这种趋势给设备软件带来的最大挑战就是开发成本和复杂度激增,对于任何一家企业,使用自己的嵌入式操作系统根本不可能适应市场竞争的需求和压力。与此同时,Linux正在成为嵌入式软件平台的重要选择,由于免费且开放源代码,不仅显著降低了嵌入式操作系统的使用成本,而且可以从广泛的开放源代码社区获得丰富的资源。因此越来越多的嵌入式企业开始选择Linux系统作为公司产品的软件平台。

但是,Linux因为其开源特性,使得开放的源码质量难以进行控制,同时相关的开发工具也没有商业操作系统便利,这就对嵌入式Linux开发人员的技术水平提出了更高的要求。嵌入式驱动程序开发是嵌入式软件开发中的最底层,与硬件密切相关,也是最难的一部分,因此,广大嵌入式开发人员迫切需要一本详细讲解如何进行嵌入式Linux驱动开发的教程,本书正是为了满足广大嵌入式开发人员这一需求而编写的。

本书站在一个驱动开发工程师的角度,以实际开发板硬件为基础,循序渐进地详细讲述了嵌入式Linux驱动程序开发的方法。全书主要分为三大部分:

第一部分(1~4章)阐述了在没有操作系统情况下嵌入式系统的硬件体系架构,裸机程序的启动运行过程,BootLoader的功能及U-boot引导系统的过程。

第二部分(5~8章)重点讲解了嵌入式Linux设备驱动开发基础及基本理论,包括嵌入式Linux模块编程、Linux设备及设备驱动模型、Platform平台设备驱动、设备驱动程序中常用的并发控制,阻塞与非阻塞,轮询、异步通知等基本Linux设备驱动程序开发核心技术。

第三部分(9~15章)详细分析了常用的硬件设备驱动程序,包括LCD屏设备驱动、触摸屏设备驱动、网卡设备驱动、I2C设备驱动、USB设备驱动等。这是对Linux设备驱动程序架构模型及基本理论的具体应用。

全书思路清晰,环环相扣,融为一体。

本书的前身是南京英贝得嵌入式培训中心的高级班嵌入式Linux设备驱动班的讲义,在编写时,立足于实践,理论和实践相结合。书中所有提到的相关程序,笔者都亲自在电脑里调试运行过,在阐述每一章节时,遵循提出问题、分析问题、解决问题的思路,以问题为中心,一步步分析Linux设备驱动程序架构,分析Linux设备驱动架构是如果解决现实中的问题及其优缺点。在阐述每一个具体设备驱动程序时,遵循从硬件原理分析、无操作系统的驱动程序、Linux下的驱动程序的思路进行讲解分析,符合读者接受新知识的思维。

本书的特色主要在于不但详细讲解了怎么做,更重要的是分析了为什么要这么做,在分析Linux内核驱动源码的基础上,提炼出了Linux驱动架构模型的核心思想及实现思路;基于对每个具体设备的Linux设备驱动源码的分析,详细阐述了整个设备驱动程序的工作流程及实现思路,在理解整个Linux设备驱动流程和实现思路的基础上,阐述了编写设备驱动和移植设备驱动的基本思路和方法。

全书是笔者多年项目开发和教学经验的总结,可作为高校嵌入式专业教材以及广大嵌入式爱好者的参考书。

本书由曹国辉和曾志鹏共同完成,第1、8、10、11、12、13、14、15章由曹国辉编写,第2、3、4、5、6、7、9章由曾志鹏编写,全书由曹国辉整理定稿。

本书在编写过程中引用了一些互联网上的文献资料,无法一一注明出处,在此向原作者表示感谢。由于笔者水平有限,书中难免存在错误与不妥之处,欢迎广大读者朋友不吝赐教。

联系邮箱:guohuicao@126.com。

本书源代码可在电子工业出版社官网“在线资源”中下载。

曹国辉 曾志鹏