前言
嵌入式系统正在重新塑造人们的认知、生活、工作和娱乐方式。随着物联网及国内外嵌入式产品进一步开发和推广,嵌入式系统已经渗透到科学研究、工程设计、军事技术、商业文化艺术及人们日常生活中的方方面面。围绕着嵌入式系统构建的智能手机、人工智能、AR/VR、无人机、智能穿戴设备、汽车自动驾驶和智能家居系统等,极大地便利和丰富了人们的生活。由于嵌入式系统的研究和开发是一个理论性、实践性非常强的工作,因此开发嵌入式系统需要高素质的研发人员。它不但要求研发人员熟悉嵌入式处理器的硬件结构,还要求更多地掌握嵌入式系统开发的各个环节,如Bootloader、内核、驱动、网络和文件系统等,同时还必须具备所属行业的相关知识和丰富的实践经验。
嵌入式Linux操作系统遵循GNU的GPL条款,具有源代码开放、代码工整、工作稳定、内核结构清晰、移植方便、系统内核小、执行效率高和网络功能强大等特点,从而成为嵌入式市场的领先者。
本书大部分内容曾作为武汉大学电子信息学院研究生“嵌入式原理与应用”课程的讲义连续使用多届,取得良好的教学效果。编者总结了多年的科研经验和案例,力求从基本概念、基本原理、基本方法和基本应用出发,使读者能扎实、系统地掌握嵌入式Linux系统开发的方法和技能。
全书分为13章: 第1章绪论; 第2章为Linux操作系统入门基础; 第3章介绍Linux系统环境下的程序设计基础; 第4章学习Linux外壳程序的编程方法; 第5章介绍如何构建嵌入式Linux开发平台; 第6章对ARM调试工具、编译环境进行介绍; 第7章对嵌入式Bootloader技术进行详细的分析; 第8章详细讲述Linux内核配置方法; 第9章以嵌入式操作系统ARMLinux为例,对其内核进行详细的剖析,其原理也适用其他架构的处理器; 第10章对嵌入式文件系统进行综合描述和具体分析; 第11章介绍嵌入式Linux多线程编程方法; 第12章就构建嵌入式Web服务器使用的相关技术进行了详细的分析; 第13章详细介绍嵌入式图形用户界面的原理和设计方法。
本书特点
图文并茂,注重整体内容框架的讲解,培养学生的大局观。例如,第1章用多幅图片描述嵌入式Linux系统开发的整体框架及开发流程,便于读者快速入门; 第8章用一张框图描述整个Linux内核代码树的结构,便于理解与记忆。
通俗易懂,注重理解与实例。大部分章节配有实例和源代码,引导读者逐步熟悉各种开发工具和环境,使读者建立感性认识,为进一步深入学习打下良好的基础,可操作性极强。
代码规范细致,内容深入,起点较高。在实例源代码中,进行了非常详细的注释,可以引导读者理解和掌握编写程序的关键过程。在注重基础和实践的同时,注重知识的扩充,如本书对线程、网络编程及图形用户界面编程做了深入的讲解,使读者对嵌入式Linux系统的开发水平有本质的提高。
每章都给出了主要内容、本章小结以及思考题,有利于提升读者的自学效果。
作者分工与致谢
本书由金伟正编著,徐颖、金诗怡参与了部分翻译和编辑工作,他们的工作对本书的定稿起了很大的作用。本书参考了Embedded Linux Primer: A Practical, RealWorld Approach、Linux Kernel Development 3rd Edition等书籍,有些内容取材于国内外最新的教材和技术资料,详见参考文献,有兴趣的读者可以进一步查阅。在此,谨向多位原作者表达诚挚的敬意和真诚的感谢。本书的部分资料来自网络,无法一一列举,在此一并感谢。同时,特别感谢武汉大学电子信息学院对本书给予的大力支持。
联系作者
由于编写时间仓促,编著者的水平有限,书中难免存在不妥或错误之处,如果您对本书有任何意见或建议,或对本书中的内容或章节有兴趣,不妨发电子邮件告诉我们(电子邮箱jwz@whu.edu.cn),您提出的问题和建议是编著者前进的动力。
金伟正2017年3月于武汉大学
学习建议
本书定位
本书可作为计算机学科、电子信息类相关专业本科生、研究生及工程硕士的嵌入式系统课程的教材,也可供相关研究人员、工程技术人员阅读参考。
建议授课学时
如果将本书作为教材使用,建议将课程的教学分为课堂讲授和学生自主上机两个层次。课堂讲授建议36~48学时,学生自主上机建议18~24学时。教师可以根据不同的教学对象或教学大纲要求安排学时数和教学内容。
教学内容、重点和难点提示、课时分配
序号
教学内容
教学重点
教学难点
课时分配
第1章
绪论
嵌入式系统开发的一般过程、嵌入式操作系统
嵌入式系统开发的一般过程及方法
2学时
第2章
Linux基础知识
认识Linux操作系统、
Linux基本操作命令、
Linux文件与目录系统、
Linux网络服务
Linux基本操作命令的使用
2学时
第3章
Linux编程环境
Linux编程环境、VIM及Emacs的使用、GNU make使用及Makefile编程、
GDB的使用方法
GNU make使用及Makefile编程方法
2学时
第4章
Linux
外壳程序编程
创建和运行外壳程序、外壳程序的编程
2学时
第5章
构建嵌入式
Linux开发平台
GNU跨平台开发工具链、
嵌入式Linux内核及根文件系统、Bootloader简介
GNU跨平台开发工具链的建立过程
4学时
第6章
ARM调试环境
ARM调试工具简介、
ADS软件调试工具
2学时
第7章
嵌入式
Bootloader技术
Bootloader的基本概念、典型结构框架、分析和移植
Bootloader的移植
6学时
第8章
Linux内核配置
内核开发特点、嵌入式Linux内核代码结构、嵌入式Linux内核配置
嵌入式Linux内核配置原理及方法
6学时
第9章
ARMLinux
内核分析和移植
ARMLinux的结构组成、
ARMLinux的移植
ARMLinux的移植
6学时
续表
序号
教学内容
教学重点
教学难点
课时分配
第10章
嵌入式文件系统
Linux文件系统结构与特征、嵌入式文件系统的类型、根文件系统的构建
根文件系统的构建及设计
4学时
第11章
嵌入式Linux
多线程编程
Linux线程编程基础、线程的同步与互斥
4学时
第12章
嵌入式Web
服务器设计
TCP/IP、UDP及HTTP等协议、socket编程基础、嵌入式Web服务器介绍、Web服务器构建
嵌入式Web服务器类型及Web服务器构建
4学时
第13章
嵌入式Linux
的GUI
嵌入式GUI简介、MiniGUI及Qt/Embedded程序设计
MiniGUI及Qt/
Embedded的移植
4学时
网上资源
本书的教学资源可从“武汉大学课程中心网推荐课程”中获取,网址为: http://kczx.whu.edu.cn/G2S/ShowSystem/CourseCommend.aspx。如果课时宽裕,教师可选取一些专家讲座或公开课视频,在课堂上播放,以扩大学生的眼界。