第1章 概述 1
1.1 嵌入式系统简介 1
1.1.1 嵌入式系统的历史发展 1
1.1.2 嵌入式系统的定义 2
1.1.3 嵌入式系统的分类 3
1.1.4 嵌入式系统的特点 3
1.1.5 嵌入式系统的组成 4
1.1.6 嵌入式系统的应用 6
1.1.7 嵌入式系统的发展趋势 7
1.1.8 嵌入式系统的学习 7
1.2 嵌入式微处理器 8
1.2.1 处理器的基本组成 8
1.2.2 嵌入式微处理器的特点 9
1.2.3 两种处理器架构 9
1.2.4 嵌入式微处理器的分类 10
1.2.5 嵌入式微处理器的技术指标 12
1.2.6 嵌入式微处理器的选型 13
1.2.7 嵌入式微处理器的发展方向 13
1.3 嵌入式操作系统 14
1.3.1 嵌入式操作系统的概念 14
1.3.2 嵌入式操作系统的分类 14
1.3.3 嵌入式操作系统的特性 15
1.3.4 经典的嵌入式操作系统 16
1.4 本书结构 18
1.5 小结 19
1.6 复习思考题 19
第2章 处理器和架构 20
2.1 ARM处理器概述 20
2.2 ARM9处理器架构 21
2.2.1 ARM9处理器简介 21
2.2.2 ARM9系列技术特点 21
2.2.3 ARM9结构及特点 22
2.2.4 ARM9与ARM7的比较 23
2.3 ARM9处理器的内存管理 24
2.3.1 内存管理单元(MMU)概述 24
2.3.2 MMU地址映射的实现 24
2.3.3 协处理器CP15 28
2.3.4 设置MMU 30
2.4 ARM9异常处理 31
2.5 Cortex-A15介绍 32
2.6 小结 33
2.7 复习思考题 33
第3章 嵌入式语言基础 34
3.1 伪指令 34
3.1.1 符号定义伪指令 34
3.1.2 数据定义伪指令 35
3.1.3 汇编控制伪指令 37
3.1.4 宏指令 38
3.1.5 其他常用的伪指令 39
3.2 ARM汇编语言 43
3.2.1 ARM汇编语言常用符号 43
3.2.2 ARM汇编语言表达式和运算符 44
3.2.3 ARM汇编语言程序结构 45
3.2.4 ARM汇编语言的子程序调用 46
3.2.5 ARM指令的寻址方式 46
3.2.6 ARM指令简介 48
3.2.7 Thumb指令简介 54
3.3 嵌入式C语言 57
3.3.1 C语言简介 57
3.3.2 简单C语言程序的构成 58
3.4 ARM汇编语言与C/C++的混合编程 59
3.4.1 C程序调用汇编程序 60
3.4.2 汇编程序调用C程序 60
3.4.3 实例分析 61
3.5 小结 63
3.6 复习思考题 63
第4章 嵌入式Linux操作系统基础 65
4.1 嵌入式Linux概述 65
4.1.1 常见的嵌入式Linux系统 65
4.1.2 嵌入式Linux的版本控制 66
4.1.3 嵌入式Linux的优势 67
4.2 嵌入式Linux操作系统启动 67
4.2.1 使用bootloader将内核映像载入 68
4.2.2 内核数据结构初始化 68
4.2.3 外设初始化 69
4.2.4 内核执行init进程 69
4.2.5 Shell的启动 70
4.3 ARM-Linux内存管理 70
4.3.1 内存管理单元(MMU) 70
4.3.2 ARM-Linux的存储管理机制 71
4.3.3 ARM-Linux对进程虚拟空间的管理 74
4.4 ARM-Linux进程管理和调度 77
4.4.1 Linux下进程的结构 77
4.4.2 Linux的进程调度 82
4.5 ARM-Linux的模块机制 83
4.5.1 Linux模块概述 83
4.5.2 模块的加载 83
4.5.3 模块的卸载 84
4.6 ARM-Linux的中断管理 84
4.7 嵌入式Linux文件系统 88
4.7.1 Linux文件系统简介 88
4.7.2 虚拟文件系统 89
4.7.3 常见的嵌入式文件系统 89
4.8 小结 94
4.9 复习思考题 94
第5章 嵌入式设备 95
5.1 嵌入式设备概述 95
5.2 LED 95
5.3 键盘 96
5.3.1 传统键盘的介绍 96
5.3.2 新型键盘的硬件和软件实现原理 96
5.4 ADC/DAC 98
5.4.1 ADC 98
5.4.2 DAC 101
5.5 RS-232 103
5.6 RS-485 104
5.7 触摸屏 105
5.8 LCD 106
5.8.1 LCD原理综述 106
5.8.2 LCD的驱动方式 107
5.9 SD卡 110
5.9.1 SD模式 111
5.9.2 SPI模式 111
5.10 IC卡 112
5.10.1 IC卡的定义 112
5.10.2 IC卡的分类 112
5.10.3 接触式IC卡 113
5.10.4 IC卡的优点 114
5.11 RFID 114
5.11.1 RFID的基本组成 114
5.11.2 分类 115
5.11.3 RED基本原理 115
5.11.4 RFID的特性 116
5.12 Zigbee 117
5.12.1 Zigbee技术基础 118
5.12.2 Zigbee的节点 118
5.12.3 Zigbee技术的特点 118
5.13 WiFi 119
5.14 蓝牙 120
5.14.1 射频特性 120
5.14.2 TDMA结构 120
5.14.3 使用跳频技术 120
5.14.4 蓝牙设备的组网 121
5.14.5 软件的层次结构 121
5.15 GPRS 122
5.16 小结 124
5.17 复习思考题 125
第6章 传感器 126
6.1 传感器概述 126
6.1.1 传感器的定义 126
6.1.2 传感器的分类 126
6.1.3 传感器的特性 127
6.2 传感器原理及应用 129
6.2.1 传感器的组成 129
6.2.2 传感器的应用 129
6.3 验证语音、笔迹和指纹等特征的传感技术 132
6.3.1 AVVS型验证语音和笔迹的装置 132
6.3.2 语音验证系统 133
6.3.3 用于身份验证的压电笔 133
6.3.4 签字验证书写台 134
6.3.5 指纹自动识别仪 134
6.4 小结 134
6.5 复习思考题 134
第7章 嵌入式接口 135
7.1 嵌入式接口概述 135
7.1.1 接口功能 135
7.1.2 接口结构 135
7.1.3 接口数据传输方式 136
7.1.4 接口设计的一般方法 136
7.2 嵌入式总线 137
7.2.1 总线及总线分类 137
7.2.2 嵌入式系统总线的层次结构 137
7.2.3 衡量总线的参数 138
7.3 GPIO接口 138
7.3.1 GPIO概述 139
7.3.2 GPIO的引脚描述 139
7.3.3 GPIO的寄存器描述 139
7.3.4 GPIO的构成 140
7.3.5 GPIO的工作模式 141
7.3.6 GPIO的优点 141
7.4 SPI总线 142
7.4.1 SPI总线概述 142
7.4.2 SPI总线的工作原理 142
7.4.3 SPI总线的内部结构 143
7.4.4 SPI总线的特点 144
7.4.5 SPI总线的应用 144
7.5 I2C总线 145
7.5.1 I2C总线概述 146
7.5.2 I2C总线的工作过程 146
7.5.3 I2C总线的内部结构 147
7.6 I2S总线 148
7.6.1 I2S总线概述 149
7.6.2 I2S总线的工作过程 149
7.6.3 I2S总线的内部结构 150
7.7 小结 151
7.8 复习思考题 151
第8章 嵌入式设备驱动设计 152
8.1 嵌入式设备驱动设计概述 152
8.1.1 设备的分类及特点 153
8.1.2 设备文件及设备号 153
8.1.3 与其他模块的关系 154
8.1.4 如何使用模块机制 154
8.1.5 sysfs虚拟文件系统 156
8.1.6 Linux内核设备模型 158
8.1.7 Linux内核驱动模型 160
8.2 字符设备驱动设计 164
8.2.1 设备驱动举例 164
8.2.2 相关的数据结构以及操作介绍 167
8.2.3 增加字符设备驱动的功能 171
8.3 块设备驱动设计 173
8.3.1 块设备的I/O特点 173
8.3.2 块设备的相关概念 174
8.3.3 块设备驱动举例 174
8.3.4 与块设备相关的数据结构 178
8.3.5 改变块驱动程序设计 184
8.4 其他设备驱动 185
8.4.1 网络设备驱动 185
8.4.2 Flash设备驱动 186
8.4.3 Android系统驱动 187
8.5 小结 187
8.6 复习思考题 188
第9章 嵌入式开发环境 189
9.1 交叉开发环境概述 189
9.1.1 宿主机与目标板的连接方式 189
9.1.2 文件传输 190
9.1.3 宿主机环境 191
9.1.4 交叉编译工具链 191
9.1.5 嵌入式软件开发流程 192
9.2 IAR EWARM集成开发环境 193
9.2.1 IAR EWARM创建应用程序 194
9.2.2 测试应用程序 201
9.3 Keil集成开发环境 202
9.3.1 创建应用程序 202
9.3.2 测试应用程序 209
9.4 嵌入式系统开发流程 212
9.5 小结 214
9.6 复习思考题 214
第10章 图形界面编程 215
10.1 嵌入式图形编程概述 215
10.1.1 Linux图形开发基础 215
10.1.2 嵌入式Linux图形用户界面简介 220
10.2 Qt编程基础 221
10.2.1 Qt/Embedded概述 222
10.2.2 创建Qt/Embedded编程环境 224
10.2.3 Qt Creator介绍 232
10.3 Qt编程实例 234
10.3.1 实现功能 234
10.3.2 实现原理 234
10.3.3 实现过程 234
10.4 MiniGUI编程基础 243
10.4.1 事件驱动编程 243
10.4.2 MiniCUI的三种运行模式 243
10.4.3 运行模式适用范围 244
10.4.4 MiniGUI进程 244
10.5 MiniGUI编程实例 245
10.5.1 头文件 246
10.5.2 程序入口点 247
10.5.3 加入层 247
10.5.4 创建和显示主窗口 247
10.5.5 进入消息循环 248
10.5.6 窗口过程函数 250
10.5.7 屏幕输出 250
10.5.8 程序的退出 250
10.6 小结 250
10.7 复习思考题 251
第11章 Android应用 252
11.1 Android概述 252
11.1.1 Android背景介绍 252
11.1.2 Android的系统构架 253
11.1.3 Android应用程序框架 255
11.1.4 OMS介绍 256
11.2 Android开发环境搭建 257
11.2.1 相关软件的下载与安装 257
11.2.2 虚拟设备的创建和使用 264
11.3 Android应用开发 267
11.4 Android应用开发扩展 272
11.5 小结 277
11.6 复习思考题 277
第12章 楼宇供能智能控制系统应用案例 278
12.1 中央空调监测控制子系统 278
12.1.1 现场考察及用户意见总结 278
12.1.2 技术方案 279
12.1.3 设备选型 280
12.1.4 中央空调监测控制子系统结构图 282
12.2 给排水监测控制子系统 282
12.2.1 给排水系统主要架构 282
12.2.2 给排水系统实现功能 283
12.2.3 给排水系统改造方案 284
12.2.4 传感器选型 286
12.3 供配电监测控制子系统 289
12.3.1 供配电系统改造整体方案 289
12.3.2 改造后供配电系统的主要功能 289
12.3.3 供配电系统具体改造方案 290
12.4 系统整体架构 294
12.5 软件应用系统 295
12.5.1 能耗监测数据采集功能模块 295
12.5.2 能耗监测数据分析功能模块 295
12.5.3 能耗监测智能决策功能模块 295
12.5.4 能耗监测远程控制功能模块 295
12.5.5 系统扩展功能 295
12.6 工程施工内容 295
12.6.1 通信网络构建及设备安装 295
12.6.2 系统供电 296
12.6.3 接地 296
12.7 系统特点 296
12.8 效益分析 296
第13章 嵌入式系统实验指导 297
13.1 实验大纲 297
13.2 物联网嵌入式网关平台搭建 299
13.3 CC2530基础实验——LED闪烁 303
13.4 CC2530基础实验——按键轮询 308
13.5 CC2530基础实验——LED、电机控制实验 312
参考文献 321