前言
写作背景
由于Linux具有开源、资源占用少等特点,在服务器、智能终端和嵌入式系统中大有用武之地。与传统PC程序的开发不同,嵌入式系统的开发涉及软件和硬件两个方面,是一个协同工作的过程。目前,在嵌入式系统的硬件和软件中,应用比较广泛的是ARM体系结构的微处理器和Linux系统。本书是基于ARM体系结构的微处理器和Linux编写的。
在进行嵌入式Linux C开发时,需要开发者熟练掌握C语言、电子电路分析、通信协议以及驱动程序开发等知识。在多年的科研和教学过程中,作者发现:
(1)部分学生对常用电子仪器设备的使用方法掌握得不熟练。
(2)部分学生在学习器件接口的原理后,仅仅停留在理论学习的阶段,面对实际的器件却无从下手,无法将理论和实践联系起来,不具备解决实际问题的能力。
(3)部分学生没有掌握良好的编程技巧和程序分层设计的思想,导致程序的可读性和可移植性较差。
(4)目前市面上一些嵌入式开发板的外设不丰富,不利于学生进行实践。
面对上述问题,本书从嵌入式系统的开发基础入手,详细介绍了GPIO接口、PWM、UART串口、I2C总线和SPI总线的原理以及实现方法,并以此为基础介绍了常用外设的使用方法。本书通过理论叙述和编程实践相结合的方式,帮助读者深入理解嵌入式系统常用接口的原理和开发。另外,本书结合具体的实例,详细介绍了示波器和逻辑分析仪的使用方法,可帮助读者掌握这些电子仪器设备的使用方法。
本书专门设计了配套的嵌入式开发板,该开发板包含丰富的外设,可帮助读者掌握相关的知识。另外,本书配套的嵌入式开发板保留了通用协议的接口,可进一步扩展外设。本书提供了书中所有实例的代码,代码分为bsp、driver和application三层,分别对应通信协议代码、外设驱动代码和应用程序代码。这种分层的代码结构,不仅可读性高,易于读者理解,在更换嵌入式开发板或开发环境时,还具有很高的移植性。
内容框架
本书从Linux的开发基础讲起,详细介绍了嵌入式Linux接口开发技术。第1~3章是Linux的入门知识;第4章介绍了本书所用的嵌入式开发板,包括安装系统、调试方法等;第5~8章介绍了各种接口的开发,在介绍接口通信协议的基础上给出了简单的编程实例;第9章介绍了嵌入式系统的综合设计,通过一个完整的案例开发,帮助读者学习和掌握嵌入式系统的开发方法。
读者对象
本书主要介绍嵌入式Linux接口开发技术,读者应当具备C语言和电子电路的基础知识。本书主要面向嵌入式Linux设备驱动程序、应用程序的开发工程师,以及ARM嵌入式系统的设计工程师。
勘误和支持
由于作者的水平有限,书中难免会有错误或不足之处,恳请读者批评指正。作者将本书配套的源代码、电路图、模块使用手册等资料上传到了GitHub,访问地址为https://github.com/dengkuanchina/book-Embedded-System-Linux-C。欢迎读者在GitHub提交Issues留言,与作者沟通。
致谢
本书既是江苏省高等教育教改研究立项课题(2019JSJG622)和南京市级高等教育人才培养创新基地项目建设成果,也是作者所在单位与南京优奈特信息科技有限公司(苏嵌教育)开展校企合作人才培养的成果。在本书的编写过程中,董振华、黄苗玉、田晨林、朱连杰、毛汝勇、吴振、徐栋、孔祥宇等老师和学生给予了热情支持,并提出了很多宝贵意见;本书的出版得到了电子工业出版社的大力支持,在此表示衷心的感谢。
作者
2021年2月