第1章 嵌入式系统基础知识 1
1.1 嵌入式系统概述 1
1.1.1 嵌入式系统的组成 2
1.1.2 嵌入式系统的特点 4
1.1.3 嵌入式系统的分类 5
1.1.4 学习嵌入式系统应具备哪些基础知识 6
1.2 嵌入式系统硬件基础知识 6
1.2.1 输入/输出端口 6
1.2.2 时钟振荡电路和时钟单元 7
1.2.3 存储器 7
1.2.4 中断控制器 8
1.2.5 嵌入式微处理器 8
1.2.6 总线 12
1.3 嵌入式系统软件基础知识 15
1.3.1 嵌入式软件的分类 15
1.3.2 嵌入式操作系统 17
1.3.3 嵌入式软件的开发 22
第2章 系统基础知识 25
2.1 系统思想 25
2.1.1 系统的定义及组成 26
2.1.2 系统分析中重要的系统概念 27
2.1.3 系统工程思想 27
2.2 系统生存周期 28
2.2.1 系统分析 30
2.2.2 系统设计 31
2.2.3 系统评价 32
2.3 工程系统建模 33
第3章 嵌入式系统软硬件协同设计 34
3.1 软硬件分开设计 34
3.1.1 先硬件后软件设计 34
3.1.2 先软件后硬件设计 36
3.2 软硬件协同设计 36
3.2.1 软硬件协同设计模型 37
3.2.2 协同设计的系统分析与系统设计 38
3.2.3 软硬件任务划分与软硬件接口 40
3.2.4 仿真验证 45
3.2.5 集成调试与综合实现 46
3.3 开发平台选择 47
3.4 嵌入式系统设计应注意的问题 49
第4章 嵌入式系统软件需求分析 51
4.1 需求概述 51
4.2 UML简介 52
4.2.1 常见的模型元素 52
4.2.2 图 53
4.2.3 视图 58
4.3 嵌入式系统问题定义 58
4.4 嵌入式系统需求定义 61
4.4.1 需求定义的概念 61
4.4.2 与客户协商的需求定义方法:联合应用设计 62
4.4.3 嵌入式系统需求定义常见的问题 63
4.4.4 面向对象需求定义 64
4.5 需求分析 72
4.5.1 需求分析技术发展 72
4.5.2 结构化需求分析:数据流分析 73
4.5.3 面向对象需求分析 78
4.6 需求规格说明书 87
第5章 嵌入式软件架构设计 89
5.1 确定系统设计目标 90
5.2 将系统分解为子系统 93
5.2.1 系统分解 93
5.2.2 软件体系结构 95
5.3 并发 104
5.4 开发环境和已有组件的选择 105
5.4.1 开发环境选择 105
5.4.2 组件设计 106
5.5 子系统到软硬件的映射 109
5.6 持续数据管理基础设施的选择 111
5.7 完整性控制策略的选择 111
5.8 全局控制流机制的选择 111
5.9 边界条件的处理 112
5.10 人机界面设计 112
5.11 应对预期变化的设计 114
5.12 架构设计中应注意的问题 114
第6章 实时软件分析设计方法DARTS 115
6.1 实时软件分析设计概述 116
6.1.1 实时系统的性能要求 116
6.1.2 实时系统的设计要素 117
6.1.3 嵌入式实时软件系统的生存周期 118
6.2 需求分析与说明 119
6.2.1 人员进出房间系统实例介绍 119
6.2.2 人员进出房间系统实例需求分析与说明 119
6.3 DARTS系统设计 120
6.3.1 数据流分析 121
6.3.2 划分任务 121
6.3.3 定义任务接口 123
6.3.4 人员进出房间系统实例系统设计 124
6.4 任务设计 129
6.4.1 任务设计概念 129
6.4.2 人员进出房间系统实例任务设计 129
6.5 模块构筑 134
6.5.1 模块设计 134
6.5.2 人员进出房间系统实例模块设计 134
6.6 任务与系统集成 135
6.7 CODARTS实时软件分析设计方法 136
第7章 板级支持包技术 138
7.1 BSP技术概述 138
7.1.1 什么是BSP 138
7.1.2 BSP的作用与功能 139
7.1.3 常见的BSP实现方式和开发方法 140
7.1.4 主流嵌入式操作系统及其BSP技术 141
7.2 嵌入式系统的硬件初始化技术 144
7.2.1 嵌入式系统的硬件初始化 144
7.2.2 BSP与PC机中BIOS硬件初始化的比较 145
7.3 嵌入式系统的引导技术 146
7.3.1 Boot Loader简介 146
7.3.2 嵌入式Linux的Boot Loader设计思想 147
7.4 嵌入式系统的设备驱动程序 149
7.4.1 驱动程序的重要性 149
7.4.2 机制与策略的问题 150
7.4.3 设备驱动的分层管理 150
7.4.4 设备类型和设备号 151
7.4.5 模块化编程 152
7.4.6 设备文件接口 152
7.4.7 字符驱动程序编写实例 153
第8章 嵌入式软件图形用户界面设计 158
8.1 人机交互界面设计概述 158
8.1.1 人机交互技术 158
8.1.2 用户界面设计原则 159
8.1.3 界面设计活动 160
8.1.4 界面评价 160
8.2 图形用户界面概述 160
8.2.1 图形用户界面的基本特征 161
8.2.2 图形用户界面的结构模型 161
8.2.3 图形用户界面实现 162
8.3 图形用户界面与嵌入式系统 163
8.3.1 嵌入式图形用户界面的特点 163
8.3.2 嵌入式系统的图形界面开发方案 163
8.3.3 嵌入式GUI的体系结构层次 164
8.3.4 嵌入式GUI主要技术分析 166
8.3.5 几种嵌入式GUI简介 169
8.4 MiniGUI的安装和使用 170
8.4.1 MiniGUI的组成 170
8.4.2 MiniGUI使用环境的建立 171
8.4.3 MiniGUI程序的编写 172
第9章 嵌入式数据库 175
9.1 概述 175
9.1.1 嵌入式数据库的特点 175
9.1.2 嵌入式数据库的体系结构 176
9.1.3 嵌入式数据库系统发展现状 178
9.2 嵌入式数据库的分类 178
9.2.1 基于内存方式 178
9.2.2 基于文件方式 179
9.2.3 基于网络的嵌入式数据库 179
9.3 嵌入式数据库系统设计技术指标 180
9.3.1 嵌入式数据库设计的数据模型 180
9.3.2 实时性 182
9.3.3 可靠性 183
9.3.4 并发控制 183
9.3.5 数据索引 183
9.3.6 查询优化 184
9.3.7 备份与恢复 185
9.4 嵌入式数据库管理系统设计 185
9.5 嵌入式数据库应用设计 187
9.6 几种嵌入式数据库 189
9.6.1 非开源嵌入式数据库 189
9.6.2 开源嵌入式数据库Berkeley DB与SQLite 189
9.6.3 SQLite开发环境移植与应用示例 191
第10章 设计模式 195
10.1 设计模式概述 196
10.1.1 什么是设计模式 196
10.1.2 设计模式的基本要素 197
10.1.3 如何描述设计模式 198
10.2 设计模式举例 198
10.3 中断设计模式 200
10.4 设计模式的应用 204
第11章 嵌入式软件可靠性设计 207
11.1 概述 207
11.2 可靠性涉及的性能指标 208
11.3 嵌入式系统可靠性设计方法 209
11.3.1 嵌入式系统硬件可靠性设计 210
11.3.2 常用元器件的可靠性分析 211
11.3.3 提高嵌入式系统可靠性的具体措施 212
11.4 嵌入式软件的可靠性设计 213
11.4.1 软件可靠性与硬件可靠性的区别 214
11.4.2 影响软件可靠性的因素 214
11.4.3 提高软件可靠性的方法和技术 215
11.4.4 软件产品可靠性的评估 217
11.4.5 嵌入式软件的可靠性设计 219
11.5 可靠性的管理 221
第12章 资源管理 222
12.1 功耗 222
12.1.1 功耗简介 222
12.1.2 基于硬件的低功耗设计 224
12.1.3 基于软件的低功耗设计 226
12.1.4 嵌入式低功耗的软硬件协同设计 230
12.2 电源 230
12.2.1 电源基础知识 230
12.2.2 电源管理技术 231
12.2.3 常用节电方法 234
12.3 内存管理 235
12.3.1 概述 235
12.3.2 基本内存管理方案 238
12.3.3 常见实时系统内存管理模式 239
12.3.4 内存泄露 245
12.3.5 内存保护 246
第13章 嵌入式系统与分布式应用 247
13.1 什么是嵌入式分布式系统 247
13.1.1 分布式系统的定义 247
13.1.2 分布式系统与单处理器系统的比较 248
13.1.3 分布式嵌入式系统相关技术 248
13.2 分布式嵌入式系统体系结构 249
13.2.1 企业网络系统的层次结构 249
13.2.2 移动网络的层次结构 251
13.2.3 分布式嵌入式系统结构 251
13.3 嵌入式系统的广域网络接入 261
13.3.1 嵌入式系统的局域网与网络互连 261
13.3.2 嵌入式系统的无线局域网 263
13.3.3 嵌入式系统的广域网接入 266
13.3.4 无线传感器网络技术 270
第14章 嵌入式软件开发环境 277
14.1 嵌入式软件开发环境概述 277
14.2 嵌入式调试方法概述 279
14.2.1 驻留监控软件 279
14.2.2 基于JTAG方式的调试代理 280
14.2.3 指令集模拟器 280
14.2.4 在线仿真器 281
14.2.5 ARM中基于JTAG的调试系统 281
14.3 Linux嵌入式系统开发环境 282
14.3.1 嵌入式Linux概述 282
14.3.2 嵌入式Linux开发环境架构 283
14.3.3 Linux开发工具 286
14.3.4 实例:建立嵌入式Linux-Arm开发环境 292
14.3.5 实例:实现“hello world”程序 293
14.4 Windows CE应用开发环境 295
14.4.1 Windows CE内核定制工具Platform Builder 296
14.4.2 Visual Studio.NET简介 297
14.4.3 Embedded Visual C++简介 297
第15章 嵌入式无线应用开发平台BREW 301
15.1 应用开发平台 301
15.2 BREW平台概述 302
15.3 BREW体系架构 302
15.3.1 BREW编程环境 303
15.3.2 BREW应用运行环境 303
15.3.3 BREW的分发环境 304
15.4 BREW开发环境 305
15.4.1 搭建BREW开发环境 305
15.4.2 BREW SDK 306
15.4.3 常用的BREW配套工具 309
15.5 BREW开发指导原则 312
15.6 基于BREW平台开发实例 314
15.6.1 开发BREW程序前的准备 314
15.6.2 在PC上开发一个BREW应用程序 315
15.6.3 将BREW应用移植到手机上 319
参考文献 322