第1章 嵌入式系统概述 1
1.1 嵌入式系统的产生和发展 1
1.2 嵌入式系统的概念 3
1.2.1 嵌入式系统的定义 3
1.2.2 嵌入式系统的特点 3
1.2.3 嵌入式系统的组成结构 6
1.2.4 嵌入式系统的分类 7
1.3 嵌入式系统的应用领域 11
1.4 嵌入式系统的发展趋势 12
思考与练习题 15
第2章 嵌入式处理器 16
2.1 引言 16
2.2 嵌入式处理器概述 16
2.2.1 嵌入式处理器的分类 17
2.2.2 典型的嵌入式处理器 18
2.3 ARM处理器基础 22
2.3.1 ARM简介 22
2.3.2 ARM处理器系列 23
2.3.3 ARM处理器体系结构 29
2.3.4 ARM处理器应用选型 34
2.4 ARM指令系统 35
2.4.1 ARM编程模型 35
2.4.2 ARM寻址方式 45
2.4.3 ARM指令集 49
2.4.4 Thumb指令集 63
2.5 ARM程序设计基础 73
2.5.1 ARM汇编语句格式 74
2.5.2 ARM汇编程序格式 74
2.5.3 汇编语言编程实例 75
2.5.4 汇编语言与C语言的混合编程 77
思考与练习题 84
第3章 嵌入式硬件平台 87
3.1 引言 87
3.2 嵌入式硬件平台概述 87
3.3 总线 88
3.3.1 总线协议 89
3.3.2 DMA 91
3.3.3 总线配置 92
3.3.4 总线实例 93
3.4 存储设备 93
3.4.1 嵌入式系统存储器子系统的结构 93
3.4.2 RAM 95
3.4.3 ROM 97
3.4.4 Flash Memory 98
3.5 I/O设备 99
3.5.1 定时器/计数器 99
3.5.2 模/数转换器和数/模转换器 100
3.5.3 人机接口设备 101
3.6 通信设备 104
3.6.1 通用异步收发器 104
3.6.2 USB设备 107
3.6.3 Ethernet设备 112
3.7 其他 113
3.7.1 电源 113
3.7.2 时钟 114
3.7.3 复位 115
3.7.4 中断 116
思考与练习题 118
第4章 BootLoader与设备驱动 119
4.1 引言 119
4.2 BootLoader 120
4.2.1 BootLoader概述 120
4.2.2 BootLoader的典型结构 121
4.2.3 实例分析 124
4.3 设备驱动 135
4.3.1 设备驱动概述 135
4.3.2 LCD驱动控制实例 139
4.3.3 A/D转换功能驱动实例 144
思考与练习题 148
第5章 嵌入式操作系统 149
5.1 引言 149
5.2 嵌入式操作系统概述 150
5.2.1 嵌入式实时操作系统 150
5.2.2 典型的嵌入式操作系统 150
5.3 操作系统的基本概念 155
5.3.1 多进程和多线程 155
5.3.2 任务 155
5.3.3 任务切换 157
5.3.4 内核 157
5.3.5 任务调度 157
5.3.6 任务间的通信与同步 159
5.3.7 操作系统的结构和功能 162
5.4 μC/OS-Ⅱ简介 162
5.4.1 μC/OS-Ⅱ概述 162
5.4.2 μC/OS-Ⅱ的特点 163
5.4.3 μC/OS-Ⅱ的软件体系结构 164
5.5 μC/OS-Ⅱ内核结构 165
5.5.1 临界段 165
5.5.2 任务 166
5.5.3 任务控制块OS_TCB 167
5.5.4 任务调度 168
5.5.5 任务管理 168
5.5.6 中断服务 169
5.5.7 时钟节拍与时间管理 170
5.5.8 任务间同步与通信的管理 171
5.5.9 内存管理 174
5.5.10 μC/OS-Ⅱ的初始化 175
5.5.11 μC/OS-Ⅱ的启动 176
5.6 μC/OS-Ⅱ在ARM上的移植 176
5.6.1 μC/OS-Ⅱ的移植条件 176
5.6.2 μC/OS-Ⅱ的移植步骤 177
5.6.3 测试移植代码 182
5.7 基于μC/OS-Ⅱ构建的TCP/IP/PPP协议栈 182
5.7.1 嵌入式协议栈概述 182
5.7.2 选择协议栈 183
5.7.3 嵌入式TCP/IP协议栈 183
5.7.4 基于μC/OS-Ⅱ的TCP/IP/PPP协议栈 185
思考与练习题 187
第6章 嵌入式应用程序设计 188
6.1 引言 188
6.2 程序设计方法 188
6.2.1 设计范型 188
6.2.2 编程模型 191
6.3 程序设计技术 192
6.3.1 消息 192
6.3.2 任务和任务间同步 193
6.3.3 绘图函数 194
6.3.4 控件 195
6.4 嵌入式程序优化 196
6.4.1 编译过程 196
6.4.2 执行时间优化 200
6.4.3 能量优化 204
6.4.4 长度优化 205
思考与练习题 207
第7章 基于网络的嵌入式系统设计 208
7.1 引言 208
7.2 分布式嵌入式系统 208
7.2.1 系统概述 208
7.2.2 OSI模型 209
7.2.3 网络结构 210
7.2.4 网络编程 210
7.2.5 设计技术 212
7.3 嵌入式系统网络 214
7.3.1 I2C总线 214
7.3.2 CAN总线 217
7.3.3 Ethemet 220
7.3.4 GPRS 221
7.3.5 蓝牙技术 224
7.3.6 Intemet 227
7.4 基于网络的设计示例 229
7.4.1 远程温度检测系统 229
7.4.2 基于VoIP和蓝牙的无线电话系统 232
7.4.3 机顶盒 235
思考与练习题 237
第8章 嵌入式系统开发 239
8.1 引言 239
8.2 嵌入式系统的开发工具 239
8.2.1 开发工具概述 239
8.2.2 ARM ADS简介 240
8.2.3 使用ADS创建工程 244
8.2.4 使用AXD调试代码 251
8.3 嵌入式系统的调试方法 254
8.3.1 嵌入式系统调试简介 254
8.3.2 ARM调试系统概述 254
8.3.3 基于Angel的调试系统 256
8.3.4 基于JTAG的调试系统 260
8.4 其他实用工具 262
8.4.1 Source Insight 262
8.4.2 SkyEye 263
思考与练习题 266
第9章 系统设计技术 267
9.1 引言 267
9.2 嵌入式系统的开发过程和设计流程 267
9.2.1 开发过程 267
9.2.2 设计流程 271
9.3 系统设计的形式化方法 274
9.3.1 UML简介 274
9.3.2 结构描述 277
9.3.3 行为描述 282
9.4 需求分析与规格说明 284
9.4.1 需求分析 284
9.4.2 规格说明 284
9.5 系统分析与体系结构设计 287
9.6 质量保证&. 288
思考与练习题 290
附录A 嵌入式专业词汇与缩略语 291
附录B ARM指令集列表 300
附录C Thumb指令集列表 303
附录D 汇编预定义变量及伪指令 306
附录E μC/OS-Ⅱ内核函数 311
参考文献 321