第1章 嵌入式系统概述 1
1.1 概述 1
1.2 嵌入式系统的概念 1
1.3 嵌入式系统及处理器的发展 2
1.3.1 嵌入式系统的发展 2
1.3.2 嵌入式处理器的发展 3
1.4 嵌入式系统的特点 4
1.5 嵌入式系统的组成 6
1.5.1 嵌入式处理器 7
1.5.2 存储器 8
1.5.3 外设 9
1.6 嵌入式系统的种类 9
1.7 嵌入式处理器与专用集成电路 10
1.8 嵌入式系统的调试方法 11
1.8.1 基于主机的调试 12
1.8.2 远程调试器与调试内核 13
1.8.3 ROM仿真器 15
1.8.4 在线仿真ICE 17
1.8.5 BDM 21
1.8.6 JTAG 24
1.8.7 软件仿真器 27
1.9 嵌入式系统的应用 28
1.9.1 消费类电子产品 28
1.9.2 办公自动化产品 30
1.9.3 控制系统与工业自动化 30
1.9.4 生物医学系统 30
1.9.5 现场仪器 31
1.9.6 网络通信设备 31
1.9.7 电信设备 31
1.10 嵌入式系统的发展趋势 31
1.10.1 硬件的发展 32
1.10.2 软件的发展 33
1.10.3 系统的发展 33
1.11 本章小结 35
1.12 思考题 35
第2章 嵌入式系统开发过程 36
2.1 概述 36
2.2 需求分析阶段 36
2.2.1 分析用户的需求 36
2.2.2 确定硬件和软件 40
2.2.3 检查需求分析的结果 41
2.2.4 确定项目的约束条件 42
2.2.5 概要设计 43
2.3 详细设计阶段 45
2.3.1 审查分析资料 46
2.3.2 体系结构设计 46
2.3.3 硬件与软件的划分 47
2.3.4 硬件和软件的设计次序 48
2.3.5 硬件设计 48
2.3.6 软件设计 50
2.3.7 检查设计 52
2.3.8 嵌入式系统设计的自动化 52
2.3.9 嵌入式系统设计工具的评估 53
2.3.10 硬件平台 54
2.4 实现阶段 54
2.4.1 选择开发平台 54
2.4.2 软件开发过程 60
2.4.3 开发阶段的文档样例 62
2.5 测试阶段 63
2.5.1 测试的原因 64
2.5.2 何时测试 66
2.5.3 测试内容 67
2.5.4 何时停止测试 67
2.5.5 选择测试实例 68
2.5.6 嵌入式系统的实时失败模式 70
2.5.7 评估测试的覆盖率 71
2.5.8 性能测试 74
2.5.9 维护和测试 75
2.6 本章小结 76
2.7 思考题 76
第3章 嵌入式处理器 78
3.1 概述 78
3.2 嵌入式系统硬件子系统的组成 79
3.2.1 嵌入式系统的方式 79
3.2.2 硬件子系统总体组成 80
3.2.3 嵌入式处理器子系统 81
3.2.4 嵌入式存储器子系统 85
3.2.5 附属电路和I/O子系统 86
3.2.6 调试子系统 86
3.2.7 如何选择处理单元 86
3.3 嵌入式处理器的技术指标 87
3.4 典型的嵌入式处理器 89
3.4.1 Microchip系列嵌入式控制器 89
3.4.2 Philips LPC嵌入式控制器系列 90
3.4.3 Motorola微控制器MC68HC08系列 92
3.4.4 MCS-51系列嵌入式控制器/处理器 94
3.4.5 Atmel公司的AVR系列微控制器 96
3.4.6 80C186系列16位嵌入式处理器 99
3.4.7 MC68HC12系列处理器 102
3.4.8 PowerPC系列32位嵌入式处理器 103
3.4.9 ColdFire系列32位嵌入式处理器 108
3.4.10 ARM系列 113
3.4.11 我国的嵌入式处理器 141
3.5 如何选择嵌入式处理器 144
3.5.1 选择处理器的总原则 144
3.5.2 选择嵌入式处理器的具体方法 145
3.6 嵌入式CPU子系统的设计方法 147
3.6.1 设计原则 147
3.6.2 基于微控制器的设计 148
3.6.3 基于微处理器的设计 151
3.7 本章小结 154
3.8 思考题 155
第4章 嵌入式系统的存储器 156
4.1 概述 156
4.2 嵌入式系统存储器的结构和组织 156
4.2.1 存储器的结构 156
4.2.2 嵌入式系统存储器子系统的结构 157
4.3 存储器的性能指标 158
4.4 存储器的工作时序 159
4.5 存储器的分类 163
4.6 随机存储器RAM 164
4.6.1 静态RAM 164
4.6.2 动态RAM 167
4.6.3 双端口RAM 171
4.6.4 如何选择RAM 181
4.7 只读存储器ROM 182
4.7.1 掩膜ROM 182
4.7.2 PROM 182
4.7.3 EPROM 183
4.7.4 EEPROM 187
4.7.5 Flash 188
4.7.6 只读存储器的编程 194
4.8 混合类型存储器 197
4.9 存储器的测试 197
4.9.1 普通存储器的问题 197
4.9.2 电子线路的问题 198
4.9.3 无存储器的芯片 199
4.9.4 芯片的不正确插入 199
4.9.5 制定测试策略 199
4.10 验证只读存储器的内容 206
4.10.1 校验和 206
4.10.2 循环冗余码 206
4.11 系统配置数据存储器 207
4.12 本章小结 208
4.13 思考题 209
第5章 嵌入式系统的I/O模块 210
5.1 概述 210
5.2 复位电路 210
5.2.1 阻容复位电路 210
5.2.2 手动复位电路 211
5.2.3 看门狗复位 212
5.2.4 专用复位电路 212
5.2.5 内部复位电路 213
5.2.6 软件复位 214
5.3 系统时钟 214
5.3.1 RC时钟 214
5.3.2 石英晶体 215
5.3.3 石英振荡器 215
5.3.4 锁相倍频时钟 215
5.3.5 多时钟源处理器的优点 216
5.4 I/O模块 216
5.4.1 I/O接口的基本结构 217
5.4.2 I/O接口的信号及其作用 217
5.4.3 寄存器的映射方式 218
5.4.4 举例:80186EB的I/O电路映射方式 219
5.5 嵌入式系统的译码器 220
5.5.1 译码器的作用和种类 220
5.5.2 普通的译码器 220
5.5.3 可编程器件译码器 221
5.5.4 嵌入式处理器上的集成译码模块 221
5.5.5 举例:80186EB的通用译码器 221
5.6 定时器/计数器 222
5.6.1 定时器/计数器的功能 222
5.6.2 定时器/计数器的基本结构 223
5.6.3 定时器/计数器的工作模式 224
5.6.4 举例:80186EB定时器/计数器 224
5.7 SPI 224
5.7.1 SPI的原理 224
5.7.2 SPI的数据流动 226
5.7.3 SPI的功能 227
5.7.4 SPI的引脚 227
5.7.5 SPI寄存器 228
5.8 UART 231
5.8.1 串行接收机RxMachine 232
5.8.2 串行发送机TxMachine 233
5.8.3 UART基本特征 234
5.8.4 通信模式 234
5.8.5 UART的编程和使用 235
5.9 通用并行接口 237
5.9.1 通用并口的基本特点 237
5.9.2 I/O端口的编程结构 240
5.9.3 通用并口的操作 241
5.10 其他I/O 241
5.11 本章小结 242
5.12 思考题 243
第6章 嵌入式软件系统 244
6.1 概述 244
6.2 嵌入式软件结构和组成 244
6.2.1 嵌入式系统软件的组成 245
6.2.2 初始化引导代码 245
6.2.3 板级支持包 246
6.2.4 嵌入式操作系统 246
6.2.5 网络协议栈 246
6.2.6 应用软件 247
6.2.7 图形用户接口GUI 247
6.3 监控程序 247
6.4 BSP概念介绍 247
6.4.1 嵌入式操作系统运行的必要条件 247
6.4.2 BSP的运行流程 248
6.4.3 Nucleus Plus的BSP和初始化 249
6.4.4 VRTX的板级支持包和初始化 249
6.5 嵌入式软件系统的设计方法 251
6.5.1 无操作系统的嵌入式系统设计 251
6.5.2 有操作系统的嵌入式系统设计 255
6.6 软件移植 256
6.6.1 移植的必要性 256
6.6.2 裸机系统的软件移植 257
6.6.3 有操作系统的软件移植 259
6.6.4 应用软件的移植 260
6.6.5 可移植应用软件的设计原则 269
6.7 本章小结 274
6.8 思考题 274
第7章 嵌入式操作系统 276
7.1 概述 276
7.2 操作系统介绍 277
7.2.1 什么是操作系统 277
7.2.2 操作系统分类 278
7.2.3 操作系统结构 279
7.2.4 操作系统的功能组成 281
7.3 嵌入式RTOS的基本概念 284
7.4 RTOS的关键技术指标 285
7.5 RTOS的基本术语 286
7.6 RTOS的要求 288
7.7 常用的嵌入式操作系统 289
7.7.1 Nucleus Plus 289
7.7.2 VxWorks 290
7.7.3 μC/OSⅡ 292
7.7.4 嵌入式Linux 293
7.7.5 QNX 294
7.7.6 U.S.Software 297
7.7.7 ThreadX 297
7.7.8 Windows CE 298
7.7.9 Hopen 300
7.8 利用嵌入式操作系统开发应用 302
7.8.1 初始化 311
7.8.2 任务控制 313
7.8.3 任务之间的通信 313
7.8.4 任务之间的同步 317
7.8.5 定时器 323
7.8.6 动态存储器 325
7.8.7 分区存储器 329
7.9 如何选择嵌入式操作系统 331
7.9.1 概述 331
7.9.2 选择实时操作系统的依据 332
7.10 本章小结 338
7.11 思考题 338
第8章 嵌入式网络与协议栈 340
8.1 概述 340
8.2 嵌入式网络 341
8.2.1 分布式嵌入式系统 341
8.2.2 基于网络的设计过程 347
8.2.3 几种常用的网络技术简介 352
8.3 最后100m-家庭网络技术 354
8.3.1 HomePNA 354
8.3.2 HomePNA的简介 355
8.3.3 HomePNA的特点 356
8.3.4 HomePNA的原理 356
8.3.5 HomePNA的应用范围 356
8.4 工业网络与现场总线 357
8.4.1 FF总线协议 358
8.4.2 HART协议 361
8.4.3 Profibus协议 362
8.4.4 CAN协议 364
8.4.5 P-NET 366
8.4.6 Control Net 366
8.4.7 WORLDFIP 367
8.4.8 Device Net 368
8.5 嵌入式系统的联网 368
8.5.1 选择协议栈 369
8.5.2 选择网络技术 369
8.5.3 选择现成的实现方案 370
8.5.4 使用标准的应用协议 370
8.5.5 流行的网络体系结构 370
8.6 嵌入式Internet 372
8.6.1 嵌入式Internet概述 372
8.6.2 嵌入式Internet的应用 373
8.6.3 嵌入式Internet的原理 374
8.6.4 嵌入式Internet的接入方案举例 376
8.6.5 嵌入式Internet接入的趋势 378
8.6.6 嵌入式Internet开发工具举例——EMIT开发方法 378
8.6.7 嵌入式TCP/IP 380
8.7 蓝牙技术 384
8.7.1 蓝牙技术及特点 384
8.7.2 蓝牙协议栈 385
8.7.3 蓝牙应用产品 386
8.8 I2C总线 388
8.8.1 物理层 388
8.8.2 电路接口 388
8.8.3 数据链路层 389
8.8.4 字节格式 390
8.8.5 总线属性 391
8.8.6 应用接口 391
8.9 本章小结 392
8.10 思考题 392
第9章 嵌入式软件组件 393
9.1 概述 393
9.2 嵌入式系统模型 393
9.3 键盘 394
9.4 LED显示器 398
9.4.1 模型 398
9.4.2 接口函数定义与使用 400
9.4.3 内部结构实现 401
9.5 LCD显示器 403
9.5.1 模型 403
9.5.2 接口函数 404
9.5.3 模块实现 409
9.6 日历时钟 411
9.6.1 概述 411
9.6.2 接口函数 411
9.6.3 模块实现 415
9.7 模拟量输入 416
9.7.1 模型 416
9.7.2 接口函数 417
9.7.3 读取模数转换的方法 417
9.7.4 模块组件的可移植性考虑 420
9.8 模拟量输出 421
9.8.1 模型 421
9.8.2 接口函数 421
9.8.3 模块实现 422
9.9 数字量/开关量输入 422
9.9.1 模型 422
9.9.2 接口函数 422
9.10 异步串行通信UART 425
9.10.1 模型 425
9.10.2 模块实现 426
9.10.3 接口函数 429
9.11 其他组件模块 433
9.12 本章小结 433
9.13 思考题 433
第10章 案例分析 435
10.1 概述 435
10.2 PDA 435
10.2.1 PDA概述 435
10.2.2 PDA的硬件设计 437
10.2.3 PDA的软件设计 441
10.3 GPS接收机 443
10.3.1 GPS概述 443
10.3.2 基于ARM7的GPS接收机的设计 444
10.3.3 接收机性能分析 446
10.4 水表智能抄表系统 446
10.4.1 水表智能抄表系统简介 446
10.4.2 基于32位机S3C44B0X的抄表手机的设计 448
10.5 防火墙 449
10.5.1 防火墙技术现状 449
10.5.2 当前国内外硬件防火墙产品技术现状 450
10.5.3 嵌入式防火墙的组成 451
10.6 信息家电 453
10.6.1 信息家电概述 453
10.6.2 信息家电的主要功能和特点 453
10.6.3 信息家电的分类 454
10.6.4 信息家电的硬件平台 456
10.6.5 信息家电的结构 456
10.6.6 嵌入式Linux在信息家电上的优势 457
10.7 本章小结 458
10.8 思考题 459
第11章 嵌入式计算机的功耗问题 460
11.1 概述 460
11.2 低功耗的优点 460
11.2.1 电池驱动的需要 460
11.2.2 安全的需要 461
11.2.3 解决电磁干扰 461
11.2.4 节能的需要 461
11.3 降低功耗的措施综述 462
11.3.1 功耗产生的原因 462
11.3.2 与系统功耗有关的因素 462
11.3.3 降低功耗的措施 463
11.4 元件工艺的低功耗 465
11.5 硬件系统的低功耗设计 469
11.5.1 选择低功耗的器件 470
11.5.2 选用低功耗电路 471
11.5.3 单电源、低电压供电 472
11.5.4 分区供电降低功耗 472
11.5.5 利用I/O引脚为外围器件供电 473
11.5.6 电源管理单元的设计 474
11.5.7 采用智能电源 474
11.5.8 片选信号的处理 474
11.5.9 有效利用I/O器件的待机方式 475
11.5.10 降低处理器的时钟频率 475
11.5.11 动态改变CPU的时钟 476
11.5.12 降低持续工作电流 476
11.5.13 低功耗系统设计举例 476
11.6 软件系统的低功耗设计 478
11.7 关于电池供电系统 481
11.8 本章小结 482
11.9 思考题 482
第12章 电磁兼容性问题 484
12.1 概述 484
12.2 电磁兼容的基本概念 484
12.3 电磁兼容的基本术语 484
12.4 电磁兼容的基本原理 485
12.4.1 常见的电磁兼容性问题 485
12.4.2 电磁环境特性 487
12.4.3 噪声耦合路径 488
12.4.4 PCB走线的天线效应 489
12.4.5 系统内部电磁干扰产生的原因 490
12.5 考虑电磁兼容时元件的模型和特性 490
12.6 提高电磁兼容性的措施 500
12.6.1 消除地电位不均匀 500
12.6.2 接地散热器的处理 501
12.6.3 时钟源的电源滤波方法 503
12.6.4 集成电路的辐射考虑 505
12.6.5 电路的布局与布线 506
12.7 旁路和去耦 506
12.7.1 旁路和去耦概述 506
12.7.2 电源层和接地层的分布电容考虑 507
12.7.3 并联电容器 507
12.7.4 去耦电容参数的计算 508
12.7.5 安装 509
12.7.6 大电容的使用和选择 510
12.7.7 组件内电容概述 511
12.8 信号完整性与串扰 511
12.8.1 信号完整性要求 511
12.8.2 反射和衰减振荡 512
12.8.3 计算电长走线 515
12.8.4 串扰 515
12.9 PCB走线终端 517
12.9.1 传输线效应 517
12.9.2 终端匹配方法 518
12.10 接地 524
12.10.1 概述 524
12.10.2 接地模型 524
12.10.3 接地方法 525
12.10.4 消除接地环路 528
12.10.5 消除多点接地系统中的谐振现象 530
12.10.6 电路子卡与卡架之间的场耦合 531
12.10.7 I/O连接器的设计考虑 531
12.11 考虑电磁兼容性的其他措施 532
12.11.1 屏蔽 532
12.11.2 磁珠的使用 533
12.11.3 电源低通滤波器 533
12.11.4 其他EMC器件 533
12.12 控制噪声的经验小结 534
12.12.1 控制噪声源 534
12.12.2 从传输路径减小噪声的耦合 534
12.12.3 在信号接收端减小噪声的接收 535
12.13 本章小结 536
12.14 思考题 536
附录 国外高校嵌入式系统课程的体系结构举例 537
参考文献 541