第Ⅰ部分 理解嵌入式系统的基本概念 3
第1章 嵌入式系统简介 3
1.1 嵌入式系统的含义 3
1.2 对比嵌入式系统与通用计算系统 4
1.3 嵌入式系统的发展历程 5
1.4 嵌入式系统的分类 6
1.4.1 基于时代的分类 6
1.4.2 基于复杂度和性能的分类 7
1.5 嵌入式系统的主要应用领域 7
1.6 嵌入式系统的用途 8
1.6.1 数据的采集、存储与显示 8
1.6.2 数据通信 9
1.6.3 数据(信号)处理 10
1.6.4 监测 10
1.6.5 控制 10
1.6.6 专用用户界面 11
1.7 可穿戴设备——嵌入式技术与生活方式的创新结合 11
1.8 本章小结 12
1.9 重要术语 13
1.10 课后习题 14
1.11 复习题 14
第2章 典型的嵌入式系统 15
2.1 嵌入式系统的内核 17
2.1.1 通用处理器与专用处理器 17
2.1.2 专用集成电路 24
2.1.3 可编程逻辑器件 25
2.1.4 商用现货 26
2.2 存储器 27
2.2.1 程序存储器 27
2.2.2 读-写存储器/随机存取存储器 29
2.2.3 基于接口类型的存储器分类 31
2.2.4 存储器映射 31
2.2.5 嵌入式系统中的存储器选型 32
2.3 传感器与激励器 33
2.3.1 传感器 34
2.3.2 激励器 34
2.3.3 I/O子系统 34
2.4 通信接口 42
2.4.1 板上通信接口 43
2.4.2 外部通信接口 48
2.5 嵌入式固件 56
2.6 系统其他元件 57
2.6.1 复位电路 57
2.6.2 欠压保护电路 58
2.6.3 振荡器 58
2.6.4 实时时钟 59
2.6.5 看门狗定时器 59
2.7 PCB与无源元件 60
2.8 本章小结 60
2.9 重要术语 62
2.10 课后习题 64
2.11 复习题 67
2.12 实验练习题 68
第3章 嵌入式系统的特征与质量属性 69
3.1 嵌入式系统的特征 69
3.1.1 面向特定应用和特定领域 69
3.1.2 反馈与实时性 70
3.1.3 能在恶劣环境中工作 70
3.1.4 分布式 70
3.1.5 尺寸小、重量轻 71
3.1.6 低功耗、节能 71
3.2 嵌入式系统的质量属性 71
3.2.1 工作模式下的质量属性 71
3.2.2 非工作模式下的质量属性 73
3.3 本章小结 75
3.4 重要术语 76
3.5 课后习题 76
3.6 复习题 78
第4章 嵌入式系统——面向特定应用与特定领域 79
4.1 洗衣机——面向特定应用的嵌入式系统 79
4.2 汽车——面向特定领域的嵌入式系统 81
4.2.1 汽车嵌入式系统工作的内部情况 81
4.2.2 汽车通信总线 82
4.2.3 汽车嵌入式市场上的主流厂商 83
4.3 本章小结 85
4.4 重要术语 85
4.5 课后习题 86
4.6 复习题 86
第5章 使用8位微控制器8051设计嵌入式系统 87
5.1 控制器选型时需要考虑的因素 88
5.1.1 功能集合 88
5.1.2 运行速度 88
5.1.3 代码存储空间 88
5.1.4 数据存储空间 88
5.1.5 开发环境支持 88
5.1.6 可用性 89
5.1.7 功耗 89
5.1.8 成本 89
5.2 选用8051微控制器的原因 89
5.3 基于8051的设计 89
5.3.1 8051的基本架构 89
5.3.2 存储器结构 90
5.3.3 寄存器 96
5.3.4 振荡器 98
5.3.5 端口 99
5.3.6 中断 114
5.3.7 8051中断系统 115
5.3.8 定时器 125
5.3.9 串口 132
5.3.10 复位电路 143
5.3.11 省电节能模式 144
5.4 8052微控制器 148
5.5 8051/52的衍生产品 148
5.5.1 Atmel公司的AT89C51RD2/ED2 149
5.5.2 Maxim公司的DS80C320/DS80C323 149
5.6 本章小结 149
5.7 重要术语 151
5.8 课后习题 151
5.9 复习题 155
5.10 实验练习题 157
第6章 基于8051微控制器的编程 159
6.1 8051支持的各种寻址模式 160
6.1.1 直接寻址 160
6.1.2 间接寻址 160
6.1.3 寄存器寻址 161
6.1.4 立即寻址 162
6.1.5 索引寻址 162
6.2 8051指令集 166
6.2.1 数据传输指令 166
6.2.2 算术运算指令 171
6.2.3 逻辑指令 178
6.2.4 布尔运算指令 183
6.2.5 程序控制转移指令 185
6.3 本章小结 187
6.4 重要术语 188
6.5 课后习题 189
6.6 复习题 195
6.7 实验练习题 196
第7章 软硬件协同设计与程序建模 197
7.1 软硬件协同设计的基本概念 198
7.2 嵌入式设计的计算模型 199
7.2.1 数据流程图模型 200
7.2.2 控制数据流程图 200
7.2.3 状态机模型 201
7.2.4 顺序程序模型 204
7.2.5 并发处理模型/通信处理模型 206
7.2.6 面向对象模型 207
7.3 统一建模语言简介 208
7.3.1 UML构建块 208
7.3.2 UML工具 212
7.4 软硬件权衡 212
7.5 本章小结 213
7.6 重要术语 214
7.7 课后习题 215
7.8 复习题 216
7.9 实验练习题 217
第Ⅱ部分 嵌入式产品的设计与开发 223
第8章 嵌入式硬件设计与开发 223
8.1 模拟电子元件 224
8.2 数字电子元件 225
8.2.1 集电极开路与三态输出 225
8.2.2 逻辑门 226
8.2.3 缓冲器 227
8.2.4 锁存器 227
8.2.5 译码器 228
8.2.6 编码器 228
8.2.7 多路复用器 229
8.2.8 多路输出选择器 230
8.2.9 组合电路 230
8.2.10 时序电路 232
8.3 VLSI与集成电路设计 236
8.4 电子设计自动化工具 241
8.5 OrCAD EDA工具的用法 242
8.6 使用OrCAD的Capture CIS工具实现电路图设计 242
8.6.1 电路图绘制窗口 245
8.6.2 电路图绘图工具 245
8.6.3 电路图绘制明细 249
8.6.4 创建元件编号 251
8.6.5 设计规则检查 252
8.6.6 创建材料清单 253
8.6.7 创建网表 254
8.7 PCB布局布线设计 257
8.7.1 布局布线构建块 257
8.7.2 使用OrCAD布局布线工具完成布局布线设计 262
8.7.3 PCB布局布线准则 277
8.8 印刷电路板制造 278
8.8.1 各种类型的PCB 278
8.8.2 PCB制造方法 279
8.8.3 PCB设计完成后,电路板外形及其调试测试 280
8.9 本章小结 283
8.10 重要术语 284
8.11 课后习题 285
8.12 复习题 288
8.13 实验练习题 289
第9章 嵌入式固件设计与开发 293
9.1 嵌入式固件设计方法 294
9.1.1 基于超循环的方法 294
9.1.2 基于嵌入式操作系统的方法 296
9.2 嵌入式固件开发语言 296
9.2.1 基于汇编语言的开发 296
9.2.2 基于高级语言的开发 303
9.2.3 汇编语言与高级语言混合编程 305
9.3 嵌入式C编程 308
9.3.1 对比C语言与嵌入式C语言 308
9.3.2 对比编译器与交叉编译器 308
9.3.3 在嵌入式C编程中使用C语言 309
9.4 本章小结 358
9.5 重要术语 359
9.6 课后习题 360
9.7 复习题 365
9.8 实验练习题 367
第10章 基于实时操作系统的嵌入式系统设计 369
10.1 操作系统基础知识 370
10.2 操作系统分类 374
10.2.1 通用操作系统 374
10.2.2 实时操作系统 374
10.3 任务、进程与线程 379
10.3.1 进程 379
10.3.2 线程 381
10.4 多处理与多任务 390
10.5 任务调度 391
10.5.1 非抢占式调度 393
10.5.2 抢占式调度 401
10.6 结合使用线程、进程与调度 410
10.7 任务通信 414
10.7.1 存储器共享 415
10.7.2 消息传递 421
10.7.3 远程过程调用与套接字 426
10.8 任务同步 430
10.8.1 任务通信/同步问题 430
10.8.2 任务同步技术 442
10.9 设备驱动程序 460
10.10 选择RTOS的方法 462
10.10.1 功能性需求 462
10.10.2 非功能性需求 463
10.11 本章小结 464
10.12 重要术语 466
10.13 课后习题 468
10.14 复习题 479
10.15 实验练习题 483
第11章 基于VxWorks与MicroC/OS-ⅡRTOS的嵌入式系统设计简介 485
11.1 VxWorks 486
11.1.1 任务创建与管理 486
11.1.2 任务调度 489
11.1.3 内核服务 489
11.1.4 任务间通信 490
11.1.5 任务同步与互斥 494
11.1.6 中断处理 497
11.1.7 监控任务执行的看门狗 499
11.1.8 定时与定时基准 500
11.1.9 VxWorks开发环境 500
11.2 MicroC/OS-Ⅱ 500
11.2.1 任务创建与管理 500
11.2.2 内核函数与初始化 506
11.2.3 任务调度 507
11.2.4 任务间通信 509
11.2.5 互斥与任务同步 514
11.2.6 定时与定时基准 524
11.2.7 存储器管理 525
11.2.8 中断处理 525
11.2.9 MicroC/OS-Ⅱ开发环境 527
11.3 本章小结 527
11.4 重要术语 528
11.5 课后习题 529
11.6 复习题 531
11.7 实验练习题 532
第12章 嵌入式硬件与固件的集成与测试 537
12.1 硬件与固件的集成 538
12.1.1 离线编程 538
12.1.2 在系统编程 540
12.1.3 在应用编程 541
12.1.4 使用厂家编程芯片 542
12.1.5 对基于操作系统的器件实现固件加载 542
12.2 电路板加电 542
12.3 本章小结 543
12.4 重要术语 544
12.5 复习题 544
第13章 嵌入式系统开发环境 545
13.1 集成开发环境 546
13.1.1 基于8051的Keilμ Vision 547
13.1.2 嵌入式系统开发IDE概述 570
13.2 交叉编译过程中生成的各种文件 572
13.2.1 列表文件(.LST) 572
13.2.2 预处理器输出文件 575
13.2.3 目标文件(.OBJ) 575
13.2.4 Map文件(.MAP) 575
13.2.5 Hex文件(.HEX) 578
13.3 反汇编器与反编译器 580
13.4 模拟器、仿真器与调试 581
13.4.1 模拟器 581
13.4.2 仿真器与调试器 582
13.5 目标硬件调试 589
13.5.1 放大镜 589
13.5.2 万用表 589
13.5.3 数字CRO 589
13.5.4 逻辑分析仪 590
13.5.5 函数生成器 590
13.6 边界扫描 590
13.7 本章小结 592
13.8 重要术语 593
13.9 课后习题 593
13.10 复习题 595
13.11 实验练习题 595
第14章 产品外壳设计与开发 597
14.1 产品外壳设计工具 598
14.2 产品外壳开发技术 598
14.2.1 外壳手工设计 598
14.2.2 快速原型开发 599
14.2.3 加工与制模 599
14.2.4 金属薄板 600
14.2.5 商用现货外壳 600
14.3 本章小结 600
14.4 重要术语 602
14.5 课后习题 602
14.6 复习题 602
第15章 嵌入式产品开发生命周期 603
15.1 EDLC的含义 604
15.2 EDLC的作用 604
15.3 EDLC的目标 604
15.3.1 保障产品质量 605
15.3.2 通过管理降低风险并预防缺陷 605
15.3.3 提高生产效率 606
15.4 EDLC的各个阶段 606
15.4.1 需求 607
15.4.2 概念成型 608
15.4.3 分析 610
15.4.4 设计 612
15.4.5 开发与测试 613
15.4.6 部署 614
15.4.7 支持 615
15.4.8 升级 616
15.4.9 退市 616
15.5 EDLC方法(EDLC建模) 617
15.5.1 线性/瀑布模型 617
15.5.2 迭代/增量模型(也称为喷泉模型) 618
15.5.3 原型/演化模型 619
15.5.4 螺旋模型 620
15.6 本章小结 621
15.7 重要术语 622
15.8 课后习题 623
15.9 复习题 624
第16章 嵌入式产业发展趋势 625
16.1 嵌入式系统处理器发展趋势 625
16.1.1 片上系统 626
16.1.2 系统级封装 627
16.1.3 多核处理器/片上多处理器 627
16.1.4 可重构处理器 628
16.2 嵌入式操作系统发展趋势 628
16.3 开发语言发展趋势 629
16.3.1 基于Java的嵌入式开发 629
16.3.2 基于.NET CF的嵌入式开发 631
16.4 开放式标准、框架与联盟 632
16.4.1 开放式移动联盟 632
16.4.2 开放式手机联盟 632
16.4.3 Android 632
16.4.4 Tizen 632
16.5 瓶颈 633
16.5.1 性能、电源优化和热量管理 633
16.5.2 缺少标准或标准执行力度不够 633
16.5.3 缺少专业的人力资源 633
16.6 开发平台的发展趋势 633
16.6.1 Arduino 634
16.6.2 BeagleBone 634
16.6.3 Sharks Cove 634
16.6.4 MinnowBoard MAX 634
16.6.5 Raspberry Pi 634
16.6.6 英特尔的Galileo Gen 2 635
16.7 云、物联网和嵌入式系统——未来的重要发展 635
附录A PIC系列微控制器、AVR系列微控制器、ARM处理器简介 637
附录B 设计案例研究 655