本书是学习嵌入式系统开发的入门教材。按照嵌入式系统学习的规律,本书首先详细介绍了嵌入式系统的原理,包括嵌入式操作系统基础、ARM体系结构和指令系统;然后,以北京博创智联科技有限公司的UPMobNetⅡ实验箱为实验平台,按照从简单到复杂逐步过渡的原则设计了相关实验内容,结合实验讲解了嵌入式系统的开发过程。此外,本书还对Android开发环境搭建进行了初步的描述,供感兴趣的读者参考。
本书内容较为翔实,结构合理,实例丰富,用浅显易懂的语言来解释理论,用简单易行的实验来帮助读者理解理论并掌握嵌入式系统开发的实际操作技能。
本书可作为本科、大专和高等职业院校计算机类、电子类、通信类学生的教材,也可作为计算机等级考试(嵌入式系统三级)的辅导用书,还可作为广大嵌入式系统爱好者和工程师的自学用书和参考手册。
嵌入式系统作为物联网的核心,是当前最热门、最有前景的IT应用领域之一。嵌入式系统以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,是对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四部分组成,用于实现对其他设备的控制、监视或管理等功能。嵌入式系统已经广泛地渗透到科学研究、工业控制、军事技术、交通、通信、医疗卫生、消费娱乐等各个领域。我们平常所使用的手机、PDA、汽车、智能家电、GPS等均是嵌入式系统的典型代表。
本书共9章。第1章介绍了嵌入式系统的基本知识;第2章介绍了嵌入式Linux操作系统的发展过程;第3章介绍了嵌入式系统的开发环境;第4章介绍了嵌入式处理器的类型、结构、工作模式等内容;第5章介绍了ARM指令集;第6章介绍了ARM汇编程序设计基础;第7章以博创UPMobNetⅡ实验箱为例介绍了嵌入式系统开发环境的构建;第8章为嵌入式系统基础实验,以循序渐进的方式对实验箱自带的模块进行访问和控制;第9章介绍了Android开发环境的搭建方法。
本书特色:
1. 校企合作,内容结合实际
本书包含了嵌入式系统开发过程中所涉及的各个知识点,适合初学者理解和应用该技术。本书通过校企合作的方式,利用2017年立项的教育部产学研协同育人项目 “嵌入式系统课程教学内容与教学体系改革”,借助北京博创智联科技有限公司的实验箱UPMobNetⅡ,编写了大量实验方面的内容,由浅入深,使学生对嵌入式技术的理解能更进一步。
2. 内容通俗易懂,图文并茂
本书结合计算机等级考试嵌入式系统三级考试大纲,对内容进行了合理组织,条理性强,内容注重框架方式的讲解,培养学生对于完整嵌入式系统的大局观,使学生便于理解和记忆。
3. 章节紧凑,针对性强
本书结合作者教学团队多年的教学经验及参与科研项目和学生竞赛的经验,借鉴了同行专家的意见,注重基础和实践,每章都有配套的习题,实验后面都有相应的思考题,有利于学生复习所学知识。
本书由多位老师分工完成:赵宏编写了第1章;王璐编写了第2章和第3章;张玺君编写了第4章、第7章、第8章和第9章;马维俊编写了第5章和第6章。全书由张玺君负责策划、统稿。
在本书的编写过程中,北京博创智联科技有限公司提供了设备和技术支持,兰州理工大学计算机与通信学院物联网工程系的各位老师给予了大力的支持,在此表示诚挚的感谢!
因时间仓促,书中疏漏之处在所难免,恳请广大读者批评指正。读者可通过zxjun@lut.cn与作者联系。
第1章 嵌入式系统概论 1
1.1 嵌入式系统的定义 1
1.2 嵌入式系统的组成 3
1.3 嵌入式系统的发展过程 6
1.4 嵌入式系统的开发流程 7
1.5 嵌入式系统的应用领域 8
习题 9
第2章 嵌入式Linux操作系统 10
2.1 主流的嵌入式操作系统 10
2.1.1 嵌入式操作系统概述 10
2.1.2 嵌入式Linux 10
2.1.3 Android操作系统 11
2.1.4 iOS 12
2.1.5 Windows CE 13
2.1.6 VxWorks 13
2.1.7 实时操作系统 13
2.2 μC/OSⅡ嵌入式操作系统 14
2.2.1 μC/OSⅡ操作系统概述 14
2.2.2 μC/OSⅡ的任务及管理 14
2.2.3 μC/OSⅡ的任务调度 15
2.2.4 μC/OSⅡ的移植 16
习题 17
第3章 嵌入式系统开发环境 18
3.1 Linux程序设计 18
3.1.1 Vim编辑器的使用 18
3.1.2 GCC编译器 21
3.1.3 GDB调试程序 24
3.1.4 Makefile 26
3.2 嵌入式开发环境 29
3.2.1 嵌入式交叉编译环境的搭建 29
3.2.2 交叉编译 30
3.2.3 交叉编译工具 30
3.2.4 宿主机交叉环境的建立 30
习题 32
第4章 嵌入式处理器 33
4.1 嵌入式处理器概述 33
4.1.1 嵌入式处理器的结构类型 33
4.1.2 嵌入式处理器简介 35
4.1.3 ARM处理器系列概述 36
4.2 ARM Cortex处理器 41
4.2.1 CortexM3 41
4.2.2 ARM CortexA8 43
4.2.3 ARM CortexA9 44
4.3 ARM处理器编程模型 45
4.3.1 数据类型 45
4.3.2 ARM处理器的工作模式 45
4.3.3 寄存器组织 46
4.3.4 存储器组织结构 50
4.3.5 ARM的异常处理机制 51
习题 53
第5章 ARM指令集 54
5.1 ARM指令概述 56
5.2 条件执行指令 62
5.3 操作数预处理指令 64
5.4 数据处理指令 69
5.5 控制类指令 80
5.6 传送类指令 89
5.7 ARMv8体系架构 97
5.8 Thumb指令集概述 105
习题 107
第6章 ARM汇编程序设计 108
6.1 ARM汇编集成开发环境 108
6.1.1 ADS集成开发环境简介 108
6.1.2 编辑ARM汇编语言源程序 109
6.1.3 在命令行方式下调试 109
6.1.4 在IDE环境下调试 110
6.1.5 ARM DS5集成开发环境简介 114
6.1.6 ARM DS5编辑运行ARM汇编语言源程序 116
6.2 ARM汇编程序基本结构 119
6.2.1 ARM汇编语言的语句格式 119
6.2.2 ARM汇编语言的程序格式 120
6.3 ARM汇编语言程序中的符号和表达式 122
6.3.1 ARM汇编语言中的符号 122
6.3.2 ARM汇编语言中的表达式 123
6.4 ARM汇编语言伪操作 126
6.4.1 符号定义伪操作 127
6.4.2 数据定义伪操作 129
6.4.3 杂项伪操作 133
6.4.4 汇编控制伪操作 136
6.4.5 信息报告伪操作 137
6.4.6 框架描述伪操作 138
6.5 ARM汇编语言伪指令 138
6.5.1 ADR伪指令 139
6.5.2 ADRL伪指令 140
6.5.3 LDR伪指令 141
6.6 ARM汇编语言宏指令 143
6.7 ARM汇编语言程序子程序 145
6.8 C语言与ARM汇编语言的混合编程 146
6.8.1 ATPCS简介 147
6.8.2 使用内嵌汇编器 148
6.8.3 内嵌汇编指令应用举例 150
6.8.4 在汇编代码中访问C程序的全局变量 151
6.8.5 ARM汇编程序与C程序的相互调用 152
习题 154
第7章 嵌入式系统实验 156
7.1 认识UPMobNetⅡ实验箱 156
7.2 建立开发环境 158
7.3 给下位机烧写软件系统 162
习题 174
第8章 基础实验 175
8.1 熟悉Linux开发环境 175
8.2 多线程应用程序设计 177
8.3 串行端口程序设计 185
8.4 嵌入式Web服务器 195
习题 203
第9章 Android开发环境搭建 204
9.1 Android Ubuntu开发环境的建立 204
9.2 Android XP开发环境的建立 219
习题 229
参考文献 230