嵌入式Linux系统开发教程(第二版)

嵌入式Linux系统开发教程(第二版) 教材名称: 嵌入式Linux系统开发教程(第二版)
ISBN号: 978-7-89535-298-8 作者: 王伟
字数: 483千字 规格:
印制时间: 2024-02-01 出版日期: 2024-02-01
定价: 49.80 元 样章下载: 《嵌入式Linux系统开发教程(第二版)》样章.pdf
购买地址:

1.教材的基本信息
(1)适用对象
本教材适用于电子信息、通信、自动化、计算机等相关专业《嵌入式系统开发教程》相关课程的教学,也可用于有志于从事嵌入式系统开发的专业人员作为入门教程。
(2)具备的知识和能力基础
学习本教材需要具备基本的计算机基础知识和C语言编程能力,且先修过《单片机原理与应用》《Linux操作系统》课程,具备一定的电路设计能力及Linux系统操作能力。
(3)学习总体目标
本课程带领读者完成基于嵌入式Linux系统的产品开发的全流程,着重从以下几方面培养学生的知识和能力,分别是:
①理论知识
CortexA72体系结构及外围硬件设计原理;使用C、C++语言进行程序设计相关理论;嵌入式系统驱动开发理论;嵌入式Linux系统移植相关概念、原理。
②专业技能
掌握嵌入式系统硬件电路设计方法;掌握嵌入式Linux操作系统的基本操作命令;掌握嵌入式交叉编译开发环境的搭建和使用;掌握基于ARM处理器的嵌入式Linux系统移植方法;能够运用Linux操作系统API函数进行驱动程序编写;能够编写Qt应用程序。
③教材编写团队情况
本教材主编王伟负责教材内容章节的总体规划;韩雪、高照玲、高永慧负责实验案例设计及相关教材内容编写;田华、张新强负责教材内容编写和项目实施运行;于广负责教材内容编写和整体格式调整。同时为了能够跟踪学科前沿发展,将嵌入式系统开发中的新技术、新工具、新产品以及新应用展现给读者,特邀大连东软智行科技有限公司嵌入式软件研发工程师陈玉宝先生为本教材编写了综合项目部分的内容,在此表示感谢。
本教材编写过程中参考并引用了大量嵌入式系统方面的书籍和资料,在此对作者表示感谢。由于水平有限,教材中的缺漏与错误在所难免,恳请广大读者批评指正。我们的联系方式为Email:wangwei_q@neusoft.edu.cn。
2.教材的基本结构与内容组织
(1)教材的基本结构
本教材以工程教育理念为指导,遵循TOPCARES教学模式,合理安排教材结构。教材内容采用从硬件设计、系统移植到软件应用的方式进行组织,每个知识点理论与实践相结合,学与做相结合,贯穿全教材每个知识点,最后带领读者完成一个综合项目,教材基本结构及设计思路如下图所示。
教材结构示意图
(2)教材的内容组织
本教材的内容组织遵循TOPCARES工程教育理念,从培养读者能力入手,以实用、切合实际为原则,为读者提供简明、直观、易懂的内容。教材以项目驱动为向导,深入浅出地讲解嵌入式系统开发中的软硬件知识。每一部分结合实例讲解嵌入式Linux系统开发基本流程和方法,以及嵌入式系统开发工具的使用。这样,读者可以清楚地看到运行的现象或结果,从而留下直观和深刻的印象,并且能迅速理解和掌握嵌入式系统基本工作原理、一般开发流程、方法和开发工具的使用。本教材以树莓派4B开发板为基础进行讲解。全教材共分5篇13章。
第一篇为硬件设计篇,分为2章。
第1章是硬件介绍,介绍了本教材所讲述的硬件平台资源、树莓派4B处理器的基本特性、树莓派4B处理器的内部各个模块,如系统外设、多媒体、电源管理、存储器接口等。
第2章是扩展板电路设计,介绍了LED、蜂鸣器、按键、EEPROM等工作原理及硬件电路设计方法。
第二篇为开发基础篇,分为2章。
第3章是嵌入式Linux开发环境构建,介绍了嵌入式Linux开发的基本概念,常用Linux命令,常用软件开发工具的安装:如Putty、VMware、Linux安装,以及NFS服务器的配置。
第4章是Make工程管理及Shell介绍,介绍了Make工程管理及Shell简单语法,每个知识点均是以实例来讲解。
第三篇为系统移植篇,分为3章。
第5章是BootLoader移植,介绍了BootLoader的工作原理、工作模式、常见的BootLoader和UBoot移植方法。
第6章是Linux内核移植,介绍了Linux内核的配置方法、Linux 5.15版本的内核移植过程以及调试、烧写内核的方法,读者能够边做边学,实时看到内核在目标板的运行效果。
第7章是根文件系统移植,介绍了根文件系统组成,根文件系统的制作和移植方法。
第四篇为驱动开发篇,分为4章。
第8章是驱动开发基础,介绍了嵌入式Linux驱动程序开发的基本概念,字符设备驱动程序框架,自动创建设备节点的方法,设计了一个简单的字符设备驱动程序项目。
第9章是驱动开发核心技术,介绍了Linux操作系统提供的相关API函数的使用方法,包括信号量、等待队列、Tasklet、内核定时器等使用方法,每一部分皆给出了具体实例项目。
第10章是驱动开发进阶,介绍了Linux设备驱动模型的原理,Platform虚拟总线的构成,接下来以ADC、I2C和触摸屏为例介绍了基于设备驱动模型下的驱动程序编写方法。
第11章是设备树,介绍设备树背景及概念,设备树语法,设备树方式编写驱动程序方法,设备树覆盖及应用实例。
第五篇是项目实战篇,分为2章。
第12章是Qt应用程序开发,介绍Qt开发环境搭建的方法,包括Qt Creator在Linux上的安装。以LED为例,讲述驱动程序调用和Qt下应用程序编写方法。
第13章是综合实例,讲述了智能家居项目,从硬件设计、驱动编写、Qt应用开发方面进行讲解。
附录是学习知识要点及能力要点,包括教材的知识要点及掌握程度、教材的能力要点及掌握程度。
 
第一篇硬件介绍篇
第1章硬件介绍2
1.1树莓派介绍2
1.2树莓派相关学习资源4
1.3实践平台硬件介绍5
1.3.1树莓派4B开发板资源5
1.3.2CPU7
1.3.3RAM(内存)7
1.3.4WiFi和蓝牙8
1.3.5USB8
1.3.6以太网8
1.3.7音频接口9
1.3.8micro HDMI10
1.3.9摄像头串行接口(CSI)10
1.3.10显示器串行接口(DSI)10
1.3.11GPIO10
1.3.12micro SD卡槽12
1.3.13显示屏12
1.3.14电源12
1.3.15外设组装13
习题14
第2章扩展板电路设计15
2.1LED电路15
2.1.1发光二极管简介15
2.1.2发光二极管的检测16
2.1.3发光二极管电路设计16
2.2蜂鸣器电路16
2.2.1蜂鸣器简介16
2.2.2蜂鸣器电路设计17
2.3按键电路18
2.3.1按键分类18
2.3.2按键设计技巧18
2.3.3按键电路设计19
2.4EEPROM电路20
2.4.1I2C总线协议概述20
2.4.2AT24C02介绍20
2.4.3AT24C02的读写操作21
2.4.4AT24C02电路设计23
习题23
第二篇开发基础篇
第3章嵌入式Linux开发环境构建25
3.1嵌入式系统概述25
3.2常用Linux命令29
3.3软件包安装及配置30
3.3.1PuTTY安装及配置30
3.3.2VMware安装32
3.3.3安装并设置Ubuntu33
3.4Windows与Linux共享文件设置41
3.5交叉编译器安装42
习题43
第4章Make工程管理及Shell介绍45
4.1Make工程管理45
4.1.1Make工程管理器45
4.1.2Make工作步骤46
4.1.3Make程序示例46
4.1.4Makefile语法48
4.2Shell介绍51
4.2.1Bash Shell简介51
4.2.2Bash Shell常用命令52
4.2.3重定向与管道55
4.2.4Shell简单语法58
习题59
第三篇系统移植篇
第5章BootLoader移植61
5.1BootLoader简介61
5.2常见的BootLoader62
5.3UBoot移植63
习题64
第6章Linux内核移植65
6.1Linux内核版本简介65
6.2内核源码结构68
6.3内核移植准备68
6.3.1内核编译过程69
6.3.2Linux Makefile分析70
6.3.3内核Kconfig分析71
6.3.4内核配置及编译命令75
6.4内核移植76
习题77
第7章根文件系统移植79
7.1根文件系统组成79
7.2根文件系统移植实例81
习题83
第四篇驱动开发篇
第8章驱动开发基础85
8.1驱动程序中的基本概念85
8.1.1设备驱动程序概述85
8.1.2设备驱动的分类86
8.1.3驱动程序、操作系统、应用程序的关系86
8.1.4常见的系统调用函数87
8.2驱动开发要点89
8.2.1用户态和内核态89
8.2.2模块机制90
8.3Hello World驱动程序90
8.3.1驱动模块组成90
8.3.2Hello World驱动模块程序91
8.3.3编译Hello World模块93
8.3.4调试Hello World模块94
8.4字符设备驱动基本概念95
8.4.1主设备号和次设备号95
8.4.2cdev结构体96
8.4.3file_operations结构体98
8.4.4file结构体101
8.4.5inode结构体102
8.4.6各结构体关系104
8.5字符设备驱动的组成105
8.5.1文件操作结构体105
8.5.2加载和卸载函数106
8.5.3常用设备操作函数107
8.5.4驱动中常用API函数110
8.6Virtualmem字符设备驱动111
8.6.1Virtualmem驱动程序111
8.6.2Virtualmem测试程序116
8.6.3驱动程序的测试方法117
8.7自动创建设备节点的方法118
8.7.1udev简介118
8.7.2驱动实例118
习题120
第9章驱动开发核心技术122
9.1并发处理机制122
9.1.1信号量的定义123
9.1.2信号量的内核函数123
9.1.3信号量驱动程序及测试代码124
9.2阻塞机制128
9.2.1阻塞和非阻塞定义128
9.2.2等待队列定义及其内核函数128
9.2.3等待队列驱动程序及测试代码130
9.2.4I/O多路复用134
9.3中断机制140
9.3.1中断定义及分类140
9.3.2中断的实现过程141
9.3.3中断的申请及释放142
9.4利用tasklet处理中断143
9.4.1顶半部与底半部143
9.4.2tasklet定义及内核函数144
9.4.3按键设备原理图145
9.4.4利用tasklet处理中断驱动实例146
9.5内核定时器150
9.5.1时间度量150
9.5.2时间延时151
9.5.3内核定时器定义及内核函数151
9.5.4内核定时器驱动代码153
9.6设备端口的访问156
9.6.1I/O端口方式控制设备157
9.6.2I/O内存方式控制设备160
9.6.3控制单一引脚的方法166
9.6.4Linux杂项设备驱动172
习题178
第10章驱动开发进阶180
10.1Linux设备驱动模型180
10.1.1Sysfs文件系统181
10.1.2设备驱动模型关键数据结构182
10.1.3内核对象函数184
10.1.4设备模型构成185
10.1.5设备驱动模型主要组件186
10.2Platform虚拟总线188
10.2.1Platform虚拟总线概述188
10.2.2Platform虚拟总线重要组件189
10.2.3Platform虚拟总线驱动实例192
10.3I2C设备驱动199
10.3.1I2C设备驱动程序结构199
10.3.2AT24C02设备驱动程序203
10.3.3用户空间直接访问I2C设备的方法208
10.4输入子系统210
10.4.1输入子系统简介210
10.4.2输入子系统设备驱动层设计210
习题213
第11章设备树214
11.1设备树概述214
11.2设备树框架与DTS语法216
11.2.1设备树框架216
11.2.2设备树DTS语法217
11.2.3设备树编程之OF函数220
11.3设备树驱动实例224
11.4设备树覆盖(Device Tree Overlays)234
11.4.1设备树覆盖格式234
11.4.2动态设备树235
11.4.3设备树覆盖实例236
习题244
第五篇项目实战篇
第12章Qt应用程序开发246
12.1Qt开发环境搭建246
12.2LED流水灯GUI程序设计249
习题266
第13章综合实例267
13.1智能家居系统267
13.2硬件系统设计270
13.3设备驱动程序276
13.3.1触摸开关驱动实例276
13.3.2燃气报警驱动实例282
13.3.3温度传感器驱动实例286
13.4界面程序设计288
附录学习知识要点及能力要点301
参考文献303
2016年6月,中国成为国际本科工程学位互认协议《华盛顿协议》的正式会员,这是中国工程教育国际化进程的重要里程碑。“回归工程”、培养学生的“大工程观”是当今国际工程教育的主流理念。《华盛顿协议》对毕业生提出的12条素质要求中,不仅要求工程知识、工程能力,还强调通用能力和品德伦理;在实践上,以学生为中心,以产出为导向,注重对目标达成的支撑及持续改进,与CDIO工程教育实质等效。
CDIO工程教育是近年来国际工程教育改革的最新成果,以“预期学习结果”集合来驱动课程内容、教学方法、教育文化的设计,重视营造工程教育文化,其注重工程能力培养和基于工程项目全生命周期的一体化设计思想,对于国内工程类和相关专业的建设具有重要的实施价值。
作为承载了教学改革思想的载体,融入CDIO工程教育理念的高品质教材,东软CDIO工程教育教材在注重理实结合的同时,也注重对学生八大能力的培养,即:技术知识与推理能力,开放式思维与创新,个人职业能力,沟通表达与团队合作,态度与习惯,责任,价值观,实践构思、设计、实现和运行对社会的贡献。
CDIO工程教育教材是 CDIO教育教学改革在教学实施过程中的集中体现,它不仅承载着课程和项目的教学内容,而且贯穿和体现了CDIO工程教育的理念、思想与方法,是在系统化理论的指导下,将知识、能力、素质培养进行一体化设计,有机融合在教材体系中。教材的编写以能力培养为主线,以案例教学为引导,以项目为载体,充分体现“做中学”和“学中做”的思想,具有以下优势:
(1)以能力培养为主线,培养学生专业知识学习能力和工程实践能力。
(2)以案例为驱动,在做案例的过程中学习新知识,充分体现了“做中学”。
(3)以项目为载体,基于工程化教育方法,按照分析、设计、实施、运行展开项目及知识点的讲解。
(4)围绕专业知识结构和能力体系设计教材,实现同一专业下不同教材紧密的关联性。
(5)内容编排循序渐进,符合人的认知规律。
(6)适应柔性化教学变革,构建一体化、立体化教学资源。
CDIO工程教育教材可供以应用型人才为培养目标的高等院校以及职业培训机构作为教材使用。
目前,CDIO工程教育教材的建设还处于探索阶段,是一项创造性的工作,尚需要通过改革的实践不断加以深化和持续改进,任重而道远。