前言 1
第1章 嵌入式软件概述 7
1.1 什么是嵌入式系统 7
1.2 嵌入式系统分类 8
1.2.1 单机嵌入式系统 8
1.2.2 实时嵌入式系统 8
1.2.3 网络设备 9
1.2.4 移动设备 9
1.3 嵌入式系统的要求 10
1.3.1 可靠性 10
1.3.2 合理的成本 10
1.3.3 耗电低 10
1.3.4 有效利用处理能力 10
1.3.5 有效利用存储器 11
1.3.6 适当的执行时间 11
1.4 嵌入式软件开发中的挑战和问题 11
1.4.2 嵌入操作系统 12
1.4.1 协同设计 12
1.4.3 代码优化 13
1.4.4 高效输入/输出 13
1.4.5 测试和调试 13
1.5 嵌入式软件开发的趋势 14
1.5.1 处理器 14
1.5.2 存储器 14
1.5.3 操作系统 14
1.6 小结 15
1.5.4 编程语言 15
1.5.5 开发工具 15
第2章 嵌入式系统的应用 17
2.1 应用市场领域 17
2.1.1 消费类电子产品 18
2.1.2 控制系统和工业自动化 19
2.1.3 生物医学系统 21
2.1.4 现场仪器 21
2.1.5 手持式电脑 23
2.1.6 数据通信 24
2.1.7 网络信息设备 29
2.1.8 电信 31
2.1.9 无线通信 35
2.2 差异中的共性 36
2.3 小结 37
第3章 嵌入式系统的硬件体系结构 39
3.1 硬件体系结构 39
3.1.1 处理器 40
3.1.2 存储器 42
3.1.3 锁存器和缓冲器 44
3.1.4 晶体 45
3.1.5 复位电路 45
3.1.6 芯片选择逻辑电路 45
3.1.7 ADC和DAC 45
3.1.8 应用专用控制电路 46
3.1.9 显示单元 46
3.1.11 通信接口 47
3.1.10 小键盘 47
3.1.12 可编程逻辑设备 48
3.2 示例:一个基于8031的控制系统 48
3.3 示例:智能卡 50
3.3.1 集成所有部件 50
3.4 示例研究:一种微控制器体系结构 51
3.5 8051的体系结构 52
3.5.1 简化的电源模式 52
3.5.2 存储器组织 53
3.6 16位和32位处理器 56
3.6.1 示例:基于32位处理器的手持式电脑 57
3.7 DSP体系结构 58
3.7.1 示例:使用DSP的语音识别系统 59
3.7.2 选择DSP 61
3.8 通信接口标准 61
3.8.1 串行接口/UART 61
3.8.2 IEEE 1394 63
3.8.3 通用串行总线 64
3.8.4 IrDA 66
3.8.6 蓝牙 67
3.8.5 以太网 67
3.8.7 PCI总线 68
3.9 开发工具 69
3.9.1 EPROM编程器 69
3.9.2 EPROM擦除器 70
3.9.3 符号差验证器 70
3.10 软硬件交互 70
3.10.2 程序CRC32.cpp的源代码列表 71
3.10.1 自测 71
3.10.3 执行CRC计算程序 74
3.11 小结 75
第4章 开发嵌入式系统 77
4.1 嵌入式系统开发过程 77
4.1.1 确定要求 78
4.1.2 设计系统体系结构 79
4.1.3 选择操作系统 80
4.1.4 选择处理器 82
4.1.5 选择开发平台 83
4.1.6 编码问题 84
4.1.8 在嵌入式系统上验证软件 86
4.2 小结 86
4.1.7 在主机系统上验证软件 86
第5章 嵌入式软件开发环境 87
5.1 操作系统 87
5.1.1 内核体系结构 88
5.1.2 嵌入式操作系统 90
5.1.3 嵌入式系统中的任务调度 91
5.1.5 任务的同步 93
5.1.4 上下文切换 93
5.1.6 定时器 94
5.1.7 嵌入式操作系统的类型 95
5.1.8 实时操作系统 98
5.1.9 移动/手持式操作系统 100
5.2 编程语言 102
5.2.1 汇编语言 103
5.2.2 高级语言 103
5.2.3 C编译器的结构 104
5.2.4 Java编程语言 109
5.2.5 信息设备 113
5.2.6 动态分布式系统 115
5.3 目标处理器的开发工具 118
5.3.1 仿真程序 118
5.3.2 设备驱动程序的开发 119
5.3.3 lcd.ASM的源代码列表 119
5.3.4 执行程序 127
5.3.6 设备驱动程序的开发 128
5.3.5 用于嵌入式驱动程序的工具 128
5.4 实现嵌入式系统:使用本书中介绍的方法 130
5.5 小结 131
第6章 串行通信编程 133
6.1 开发环境 133
6.2 串行通信 133
6.2.1 通信参数 134
6.3 空调制解调器电缆连接 134
6.4 PC机之间的通信项目 135
6.4.1 CserialCommDlg.h的源代码清单 135
6.4.2 运行程序 144
6.5 与8051系列微控制器的串行通信项目 145
6.5.1 Serial.c的源代码清单 146
6.5.2 执行程序 149
6.6 小结 152
第7章 导航系统的开发 153
7.1 开发环境 153
7.2 项目概况 153
7.2.1 Serial.h的源代码清单 154
7.2.2 Serial.cpp的源代码清单 155
7.2.3 GPSDlg.h的源代码清单 159
7.2.4 GPSDlg.cpp的源代码清单 160
7.3 执行程序 169
7.4 将软件移植到嵌入式NT平台 170
7.5 小结 173
第8章 嵌入式通信系统 175
8.1 开发环境 175
8.2 协议转换器项目 176
8.2.1 Test.h的源代码清单 177
8.2.2 Test.c的源代码清单 178
8.2.3 GlobalVar.h的源代码清单 185
8.2.4 Buffers.c的源代码清单 186
8.2.5 PTFunction.c的源代码清单 188
8.2.6 执行程序 189
8.2.7 嵌入软件 190
8.3 基于网际协议(IP)的语音传输项目 193
8.3.1 serverDlg.h的源代码清单 194
8.3.2 serverDlg.cpp的源代码清单 196
8.3.3 clientDlg.h的源代码清单 214
8.3.4 clientDlg.cpp的源代码清单 216
8.3.5 执行程序 236
8.3.6 嵌入软件 237
8.4 小结 240
第9章 基于移动网络的嵌入式应用 241
9.1 开发环境 241
9.2 MP3声音播放器项目 242
9.2.1 sound.c的源代码清单 242
9.2.2 执行程序 248
9.3 薪水调查项目 250
9.3.1 idbusage.c的源代码清单 251
9.3.2 执行程序 266
9.3.3 输出 268
9.4 嵌入BREW应用程序 270
9.5 小结 270
第10章 实时嵌入式软件开发 271
10.1 开发环境 271
10.2.2 执行RTLinux模块 272
10.2 RTLinux模块 272
10.2.1 在RTLinux中编译模块 272
10.2.3 创建RTLinux POSIX线程 274
10.3 编译并执行示例程序 275
10.3.1 RTLinux的核心API 276
10.4 每隔10秒打印一条消息项目 279
10.4.1 hello.c的源代码清单 280
10.4.2 在RTLinux系统上编译文件 281
10.5 通过串行连接发送消息项目 282
10.4.3 执行模块 282
10.5.1 blink.c的源代码清单 283
10.5.2 执行程序 285
10.5.3 输出 287
10.6 过程控制系统的仿真项目 288
10.6.1 SerialCommDlg.cpp的源代码清单 289
10.6.2 temperature.c的源代码清单 292
10.6.3 执行程序 295
10.7 从RTLinux系统控制设备项目 298
10.7.1 play.c的源代码清单 299
10.7.2 stop.c的源代码清单 301
10.7.3 repeat.c的源代码清单 302
10.7.4 AudioPlayerDlg.cpp的源代码清单 304
10.7.5 执行步骤 306
10.7.6 输出 309
10.8 小结 310
11.1 开发环境 311
11.2 薪水调查项目 311
第11章 嵌入式数据库应用 311
11.2.1 有关数据库的一些问题 312
11.2.2 SalarySurvey.ebf文件的源代码清单 312
11.2.3 执行程序 325
11.2.4 输出 330
11.3 能量计读数项目 331
11.3.1 EnergyConsumption.ebf的源代码清单 332
11.3.2 执行程序 347
11.3.3 输出 351
11.5 小结 352
11.4 桌面机和Pocket PC之间的数据同步 352
第12章 具备Java功能的网络信息设备 353
12.1 开发环境 353
12.2 客户关系管理软件项目 354
12.2.1 项目文件 354
12.2.2 源代码清单 356
12.2.3 嵌入应用程序 377
12.3 开发基于位置的服务项目 377
12.3.1 项目文件 377
12.3.2 源代码清单 378
12.3.3 测试应用程序 386
12.4.1 项目文件 388
12.4 嵌入式过程控制系统项目 388
12.4.2 数据库细节内容 389
12.4.3 源代码清单 389
12.4.4 测试应用程序 399
12.5 小结 400
13.1 电子城市导游项目 401
13.1.1 开发环境 401
第13章 移动Java设备 401
13.1.2 数据库细节内容 402
13.1.3 CityGuide.java的源代码清单 402
13.1.4 Cities.jsp的源代码清单 415
13.1.5 Categories.jsp的源代码清单 416
13.1.6 CityDetails.jsp的源代码清单 418
13.1.7 NameCategory.jsp的源代码清单 419
13.1.8 执行该程序 421
13.2 使用Jini的设备控制项目 426
13.2.2 启动Jini服务 427
13.2.1 Jini的安装及类路径设置 427
13.2.3 ACRemote应用程序 433
13.2.4 项目文件 434
13.2.5 源代码清单 434
13.2.6 测试应用程序 448
13.3 小结 451
第14章 嵌入式Windows XP中的软件开发 453
14.1 开发环境 453
14.3 空调的远程控制项目 454
14.2 项目概况 454
14.3.1 项目概况 455
14.3.2 Serial.h的源代码清单 455
14.3.3 Serial.cpp的源代码清单 456
14.3.4 ACRemoteDlg.h的源代码清单 460
14.3.5 ACRemoteDlg.cpp的源代码清单 461
14.3.6 ACSimulator.cpp的源代码清单 468
14.3.7 执行程序 470
14.3.8 将软件移植到Embedded XP平台上 471
14.4 远程控制音频播放器项目 475
14.4.1 项目概况 476
14.4.2 MP3RemoteDlg.h的源代码清单 476
14.4.3 MP3RemoteDlg.cpp的源代码清单 477
14.4.4 执行程序 483
14.4.5 将软件移植到Embedded XP平台 484
14.5 打字速度指示器项目 484
14.5.1 frmmain.frm的源代码清单 484
14.5.2 frmtest.frm的源代码清单 485
14.5.3 frmfallingletters.frm的源代码清单 489
14.5.4 执行程序 492
14.5.5 输出 496
14.5.6 将软件移植到Embedded XP平台 497
14.6 嵌入式数据库应用项目 498
14.6.1 数据库定义 498
14.6.2 Productivity.frm的源代码 498
14.6.3 执行程序 508
14.6.4 输出 517
14.6.5 安装数据库应用程序 518
14.7 电子表决项目 520
14.6.6 将软件移植到Embedded XP平台 520
14.7.2 项目文件 521
14.7.3 vote.asp的源代码清单 521
14.7.1 数据库细节内容 521
14.7.4 insertvote.asp的源代码清单 524
14.7.5 checkvote.asp的源代码清单 527
14.7.6 thanks.html的源代码清单 529
14.7.7 display.asp的源代码清单 530
14.7.8 执行程序 532
14.8 小结 534
14.7.9 嵌入应用程序 534
第15章 嵌入式系统的发展趋势 535
15.1 芯片上的系统 535
15.2 智能卡和无现金社会 536
15.3 嵌入式系统的安全性 537
15.4 小结 539
附录A CD-ROM上的内容 541
附录B 嵌入式软件资源 549