
本书按照全国计算机技术与软件专业技术资格(水平)考试要求编写,内容紧扣嵌入式系统设计师考试大纲。全书共6章,分别对嵌入式系统基础知识、嵌入式微处理器与接口设计、嵌入式软件与操作系统、嵌入式软件程序设计、嵌入式系统设计与维护等知识进行了详细的讲解,最后介绍了一个典型的嵌入式系统设计案例。 本书内容丰富,结构合理,概念清晰。既可作为全国计算机技术与软件专业技术资格(水平)考试中嵌入式系统设计师级别的考试用书,供有关考生学习使用,也可以作为本科生嵌入式系统相关课程教材或培训用书使用。
前 言
全国计算机技术与软件专业技术资格(水平)考试实施至今已经历了二十多年,在
社会上产生了很大的影响,对我国软件产业的形成和发展做出了重要的贡献。为了适应
我国计算机信息技术发展的需求,人力资源和社会保障部、工业和信息化部决定将考试
的级别拓展到计算机信息技术行业的各个方面,以满足社会上对各种计算机信息技术人
才的需要。
编者受全国计算机专业技术资格考试办公室的委托,对《嵌入式系统设计师教程》
进行改写,以适应新的考试大纲要求。在考试大纲中,要求考生掌握的知识面很广,每
个章节的内容都能构成相关领域的一门甚至多门课程,因此编写的难度很高。考虑参加
考试的人员已有一定的基础,所以本书中只对考试大纲中所涉及的知识领域的要点加以
阐述,但限于篇幅,不能详细地展开,请读者谅解。
全书共 11 章,各章内容安排如下。
第 1 章 计算机系统基础知识,概要介绍嵌入式系统,对计算机系统常用进位计数
制、数据的表示和运算、计算机系统硬件基本组成和体系结构以及可靠性与系统性能评
测等基础知识进行了简要介绍。
第 2 章 嵌入式系统硬件基础知识,主要介绍嵌入式系统所涉及的硬件知识,重点
介绍嵌入式微处理器、嵌入式存储体系、嵌入式系统的输入输出接口、嵌入式系统通信
接口等方面的硬件接口基础知识。
第 3 章 嵌入式硬件设计,主要介绍嵌入式硬件设计过程中所涉及的基础知识,包
括嵌入式系统电源分类、电源管理和电子电路设计中的 PCB 设计、电子电路测试基础
知识。
第 4 章 嵌入式系统软件基础知识,主要介绍嵌入式系统软件相关基础知识,包括
嵌入式软件基础知识、嵌入式操作系统、嵌入式文件系统、嵌入式数据库等。
第 5 章 嵌入式系统设计与开发,主要介绍嵌入式软件开发基础知识、嵌入式软件
开发环境、嵌入式软件开发过程、嵌入式软件移植等。
第 6 章 嵌入式程序设计,主要介绍程序语言及其翻译基础知识以及汇编语言、C 和
C++编程基础知识。
第 7 章 嵌入式系统的项目开发与维护知识,主要介绍嵌入式系统开发与维护的相
关基础知识,主要包括系统开发过程与过程模型、项目管理、系统质量、开发工具与开
嵌入式系统设计师教程(第 2 版)
II
发环境、系统分析、系统设计、系统实施、系统运行与维护等相关知识。
第 8 章 嵌入式系统软件测试,主要介绍嵌入式软件测试的相关内容,包括软件测
试概述、测试过程、测试方法、测试类型、测试工具、测试环境、软件测试实践等。
第 9 章 嵌入式系统安全性基础知识,主要介绍安全性基础知识,包括计算机信息
系统安全概述、信息安全基础、安全威胁防范、嵌入式系统安全方案等内容。
第 10 章 标准化、信息化与知识产权基础知识,主要介绍标准化基础知识、信息化
基础知识和知识产权基础知识。
第 11 章 嵌入式系统设计案例分析,主要通过案例分析介绍嵌入式系统的整体设计
方法和典型嵌入式硬件设计中所涉及的软硬件协同设计、程序设计等内容。
本书第 1 章由张淑平和朱光明编写,第 2 章、第 3 章由张亮和朱光明编写,第 4 章、
第 5 章由崔西宁、谌卫军和韩炜编写,第 6 章由张淑平和刘伟编写,第 7 章由霍秋艳编
写,第 8 章由周敏刚编写,第 9 章由严体华编写,第 10 章由刘强和王亚平编写,第 11
章由崔西宁、张亮和戴小氐编写,最后由崔西宁、张淑平、张亮统稿。
在本书的编写过程中,参考了许多相关的书籍和资料,编者在此对这些参考文献的
作者表示感谢。同时感谢清华大学出版社在本书出版过程中所给予的支持和帮助。
因水平有限,书中难免存在错漏和不妥之处,望读者指正,以利改进和提高。
编 者
2019 年 10 月
目 录
第 1 章 计算机系统基础知识 · 1
1.1 嵌入式计算机系统概述 · 1.
1.2 数据表示 4.
1.2.1 进位计数制及转换 4.
1.2.2 数值型数据的表示 6.
1.2.3 其他数据的表示 10.
1.2.4 校验码 · 13.
1.3 算术运算和逻辑运算 · 17.
1.3.1 算术运算 · 17.
1.3.2 逻辑运算 · 20.
1.4 计算机硬件组成及主要部件
功能 22.
1.4.1 中央处理单元 22.
1.4.2 存储器 · 25.
1.4.3 总线 · 35.
1.4.4 输入/输出控制 38.
1.5 计算机体系结构· 42.
1.6 可靠性与系统性能评测基础
知识 49.
1.6.1 计算机可靠性 49.
1.6.2 计算机系统的性能评价 52.
第 2 章 嵌入式系统硬件基础知识 56
2.1 数字电路基础 56
2.1.1 信号特征 · 56.
2.1.2 组合逻辑电路和时序逻辑
电路 · 56.
2.1.3 信号转换 · 60.
2.1.4 可编程逻辑器件 62.
2.2 嵌入式微处理器基础 · 63
2.2.1 嵌入式微处理器的结构和
类型 · 65.
2.2.2 嵌入式微处理器的异常与
中断 · 71.
2.3 嵌入式系统的存储体系 · 74.
2.3.1 存储系统的层次结构 74.
2.3.2 内存管理单元 74.
2.3.3 RAM 和 ROM 的种类与
选型 · 75.
2.3.4 高速缓存(Cache) 78.
2.3.5 其他存储设备 80.
2.4 嵌入式系统 I/O 83.
2.4.1 通用输入/输出接口 · 83.
2.4.2 模数/数模接口 · 84.
2.4.3 键盘、显示、触摸屏等
接口基本原理与结构 85.
2.4.4 嵌入式系统音频、视频
接口 · 87.
2.4.5 输入/输出控制 · 89.
2.5 定时器和计数器 · 89.
2.5.1 硬件定时器 · 89.
2.5.2 软件定时器 · 90.
2.5.3 可编程间隔定时器 90.
2.6 嵌入式系统总线及通信接口 · 91.
2.6.1 PCI、PCI-E 等接口基本
原理与结构 · 91.
2.6.2 USB、串口等基本原理与
结构 · 94.
2.6.3 以太网、WLAN 等基本
原理与结构 · 99.
嵌入式系统设计师教程(第 2 版)
IV
IV
2.6.4 Rapid IO 等基本原理与
结构 · 105.
2.7 嵌入式 SoC 106.
2.7.1 Virtex 系列 106.
2.7.2 Spartan 系列 107.
第 3 章 嵌入式硬件设计 108
3.1 嵌入式系统电源管理 · 108.
3.2 电子电路设计 111.
3.2.1 电子电路设计基础知识 111.
3.2.2 PCB 设计基础知识 · 116.
3.2.3 电子电路测试基础知识 129.
3.3 Cadence PCB 系统设计 130.
3.3.1 原理图设计输入工具 131.
3.3.2 PCB 设计系统 · 133.
3.3.3 自动和交互布线工具 134.
3.3.4 库管理 · 134.
3.3.5 约束管理器 · 135.
第 4 章 嵌入式系统软件基础知识 136
4.1 嵌入式软件基础· 136
4.1.1 嵌入式系统 · 136.
4.1.2 嵌入式软件 · 139.
4.1.3 嵌入式软件分类 141.
4.1.4 嵌入式软件体系结构 141.
4.1.5 设备驱动层 · 144.
4.1.6 嵌入式中间件 146.
4.2 嵌入式操作系统概述 · 146.
4.2.1 嵌入式操作系统的分类 149.
4.2.2 常见的嵌入式操作系统 152.
4.3 任务管理 155.
4.3.1 多道程序技术 156.
4.3.2 进程、线程和任务 157.
4.3.3 任务的实现 · 159.
4.3.4 任务的调度 · 162.
4.3.5 实时系统调度 167.
4.3.6 任务间的同步与互斥 169.
4.3.7 任务间通信 · 176.
4.4 存储管理 178.
4.4.1 存储管理概述 178.
4.4.2 实模式与保护模式 179.
4.4.3 分区存储管理 179.
4.4.4 地址映射 · 184.
4.4.5 页式存储管理 188.
4.4.6 虚拟存储管理 193.
4.5 设备管理 197.
4.5.1 设备管理基础 197.
4.5.2 I/O 控制方式 · 198.
4.5.3 I/O 软件 · 201.
4.6 文件系统 203.
4.6.1 嵌入式文件系统概述 204.
4.6.2 文件和 · 205.
4.6.3 文件系统的实现 207.
4.6.4 典型嵌入式文件系统
介绍 · 210.
4.7 嵌入式数据库 212.
4.7.1 嵌入式系统对数据库的
特殊要求 · 212.
4.7.2 典型嵌入式数据库介绍 213.
第 5 章 嵌入式系统设计与开发 215
5.1 嵌入式软件开发概述 · 215.
5.1.1 嵌入式应用开发的过程 215.
5.1.2 嵌入式软件开发的特点 216.
5.1.3 嵌入式软件开发的挑战 217.
5.2 嵌入式软件开发环境 · 218.
5.2.1 宿主机和目标机 219.
5.2.2 嵌入式软件开发工具 221.
5.2.3 集成开发环境 227.
5.3 嵌入式软件开发 · 232.
5.3.1 嵌入式平台选型 232.
5.3.2 软件设计 · 233.
5.3.3 特性设计技术 238.
目 录
V
V
5.3.4 嵌入式软件的设计约束 241.
5.3.5 编码 · 244.
5.3.6 下载和运行 · 247.
5.4 嵌入式软件移植· 247.
5.4.1 无操作系统的软件移植 248.
5.4.2 有操作系统的软件移植 249.
5.4.3 应用软件的移植 250.
第 6 章 嵌入式程序设计 252
6.1 程序设计语言基础 · 252.
6.1.1 程序设计语言概述 252.
6.1.2 程序设计语言的分类和
特点 · 253.
6.1.3 程序设计语言的基本成分 256.
6.1.4 程序设计语言的翻译基础 260.
6.2 汇编语言程序设计 · 271.
6.2.1 汇编语言概述 271.
6.2.2 汇编语言程序 271.
6.3 C 程序设计基础 · 276.
6.3.1 C 程序基础 276.
6.3.2 函数 · 291.
6.3.3 存储管理 · 294.
6.3.4 指针 · 297.
6.3.5 栈与队列 · 306.
6.3.6 C 程序内嵌汇编 312.
6.4 C++程序设计基础 · 313.
6.4.1 面向对象基本概念 313.
6.4.2 C++程序基础 316.
6.4.3 类与对象 · 319.
6.4.4 继承与多态 · 326.
6.4.5 异常处理 · 330.
6.4.6 类库 · 332.
第 7 章 嵌入式系统的项目开发与
维护知识 · 334
7.1 系统开发过程和项目管理 · 334.
7.1.1 系统生存周期 334.
7.1.2 过程模型 · 336.
7.1.3 过程评估 · 342.
7.1.4 工具与环境 · 344.
7.1.5 项目管理 · 347.
7.1.6 质量保证 · 351.
7.2 系统分析知识 354.
7.2.1 系统需求的定义 355.
7.2.2 需求分析的基本任务 355.
7.2.3 需求建模 · 355.
7.3 系统设计知识 356.
7.3.1 系统概要设计 357.
7.3.2 系统详细设计 357.
7.3.3 系统设计原则 358.
7.3.4 软硬件协同设计方法 360.
7.4 结构化分析与设计方法 · 362.
7.4.1 结构化分析方法 363.
7.4.2 结构化设计方法 366.
7.4.3 结构化程序设计方法 370.
7.5 面向对象分析与设计方法 · 370.
7.5.1 面向对象分析与设计 370.
7.5.2 UML 构造块 372.
7.5.3 设计模式 · 377.
7.6 系统实施知识 385.
7.6.1 软硬件平台搭建 386.
7.6.2 系统测试 · 386.
7.6.3 系统调试 · 388.
7.7 系统运行与维护 · 389.
7.7.1 系统运行管理 389.
7.7.2 系统维护概述 390.
7.7.3 系统评价 · 393
第 8 章 嵌入式系统软件测试 · 395
8.1 软件测试概述 395
8.1.1 软件测试的定义 395.
8.1.2 软件测试的发展 396.
嵌入式系统设计师教程(第 2 版)
VI
VI
8.1.3 软件测试与软件开发的
关系 · 398.
8.2 嵌入式软件测试技术 · 398
8.2.1 测试过程 · 399.
8.2.2 测试方法 · 403.
8.2.3 测试类型 · 410.
8.2.4 测试工具 · 416.
8.2.5 测试环境 · 417.
8.3 软件测试实践 419
8.3.1 面向对象的软件测试 419.
8.3.2 基于模型的软件测试 420.
8.3.3 基于模型开发软件的测试 421.
8.3.4 分布式软件测试 421.
8.3.5 测试实例 · 422.
第 9 章 嵌入式系统安全性基础
知识 434
9.1 计算机信息系统安全概述 · 434.
9.1.1 信息系统安全 434.
9.1.2 网络安全 · 435.
9.1.3 风险管理 · 437.
9.2 信息安全基础 439.
9.2.1 数据加密原理 439.
9.2.2 数据加密算法 439.
9.2.3 认证算法 · 442.
9.3 安全威胁防范 444.
9.3.1 防治计算机病毒 444.
9.3.2 认证 · 447.
9.3.3 数字签名 · 448.
9.3.4 报文摘要 · 449.
9.3.5 数字证书 · 450.
9.4 嵌入式系统安全方案 · 452.
9.4.1 智能卡安全技术 452.
9.4.2 USB-Key 技术 · 452.
9.4.3 智能终端的安全技术 453.
9.4.4 行业工控系统安全 454.
第 10 章 标准化、信息化与知识
产权基础知识 · 456
10.1 标准化基础知识 · 456.
10.1.1 概述 · 456.
10.1.2 信息技术标准化 462.
10.1.3 标准化组织 464.
10.1.4 ISO 9000 标准简介 466.
10.1.5 ISO/IEC 15504 过程评估
标准简介 · 468.
10.1.6 嵌入式系统相关标准
简介 · 469.
10.2 信息化基础知识 · 470.
10.2.1 概述 · 470.
10.2.2 信息化发展趋势 471.
10.2.3 信息化应用 474.
10.3 知识产权基础知识 · 475.
10.3.1 概述 · 476.
10.3.2 计算机软件著作权 478.
10.3.3 计算机软件的商业
秘密权 · 490.
10.3.4 专利权概述 492.
10.3.5 企业知识产权的保护 496.
第 11 章 嵌入式系统设计案例分析 498
11.1 嵌入式系统总体设计 · 498.
11.1.1 嵌入式系统设计概述 499.
11.1.2 案例分析 504.
11.2 嵌入式系统硬件设计 · 536.
11.2.1 嵌入式系统硬件设计
概述 · 536.
11.2.2 嵌入式系统软硬件协同
设计 · 537.
11.2.3 案例分析 537.
11.3 嵌入式系统应用设计案例 · 569
本书内容丰富,结构合理,概念清晰。既可作为全国计算机技术与软件专业技术资格(水平)考试中嵌入式系统设计师级别的考试用书,供有关考生学习使用,也可以作为本科生嵌入式系统相关课程教材或培训用书使用。
崔西宁,研究员,中国航空工业集团公司西安航空计算技术研究所,工业和信息化部教育考试中心软考研究院成员。多年从事计算机技术与软件专业技术资格考试研究与命题工作,曾参与多本软考教材教辅的编写工作。