专家指导委员会 1
前言 1
第一部分 初级Windows CE .Net程序设计第1章 嵌入式系统简介 1
1.1 什么是嵌入式系统 1
1.1.1 嵌入式系统的特点 2
1.1.2 嵌入式系统软件的特点 2
1.1.3 嵌入式系统的分类 3
1.2 嵌入式系统的组成 4
1.2.1 嵌入式系统处理器的分类 4
1.2.2 嵌入式微处理器的主要系列 5
1.2.3 嵌入式系统的存储器 9
1.2.4 嵌入式系统的输入方式 10
1.3 嵌入式系统的应用领域 12
1.3.1 在消费类电子产品中的应用 12
1.3.2 在工业控制领域的应用 13
1.3.3 在通信领域的应用 13
1.3.4 在机器人、办公等其他领域的应用 14
1.4 几种常见的嵌入式操作系统 15
1.4.1 嵌入式操作系统的分类 15
1.4.2 Windows CE 16
1.4.3 Symbian 17
1.4.4 Palm OS 18
1.4.5 嵌入式Linux 21
1.4.6 VxWorks 22
第2章 Windows CE .Net简介 26
2.1 Windows CE的发展历史 26
2.2 Windows CE功能简介 27
2.2.1 Windows CE的电源管理功能 28
2.2.2 Windows CE的多任务功能 28
2.2.3 Windows CE的图形界面 28
2.2.5 Windows CE的多媒体和扩展功能 29
2.2.4 Windows CE的通信能力 29
2.2.6 Windows CE的实时功能 30
2.3 Windows CE .Net的体系结构 30
2.3.1 Windows CE .Net的层次架构 30
2.3.2 内核模块 31
2.3.3 文件系统 32
2.3.4 网络与通信模块 32
2.3.5 GWES模块 33
2.4 Windows CE的应用领域 34
2.4.1 Windows CE在移动计算领域的应用 34
2.4.2 Windows CE在嵌入式领域的应用 37
第3章 Windows CE .Net开发基础 38
3.1 Windows CE .Net的启动过程 38
3.1.1 系统复位 38
3.1.2 运行KernelStart 38
3.1.3 运行FileSys.exe 39
3.1.4 运行可选择的进程 39
3.1.5 运行shell.exe和device.exe 41
3.1.6 运行gwes.exe 42
3.1.8 运行Explorer.exe进程 43
3.1.7 运行自定义进程 43
3.2 Windows CE设备的电源特性 44
3.3 Windows CE .Net程序开发环境 44
3.3.1 Platform Builder 45
3.3.2 EVC和EVB 46
3.3.3 Visual Studio .Net 47
3.3.4 ActiveSync 48
3.3.5 模拟器 48
3.3.6 程序开发所需的硬件 50
3.4.1 Windows CE安装过程中应该注意的问题 52
3.4.2 目录解析 52
3.4 Windows CE .Net目录解析 52
第4章 Windows CE .Net开发工具简介 54
4.1 Platform Builder 54
4.1.1 Platform Builder简介 54
4.1.2 使用Platform Builder进行平台的定制 57
4.2 Embedded Visual C++ 62
4.2.1 Embedded Visual C++简介 62
4.2.2 Win32 API、MFC及ATL三种程序设计方式 65
4.2.3 在Embedded Visual C++中构建一个MFC程序 66
4.2.4 在构建好的MFC程序框架中添加消息 70
4.3 Visual Studio .Net 72
4.2.5 EVC在安装及使用过程中应该注意的问题 72
4.3.1 Visual Studio .Net 2003简介 73
4.3.2 使用Visual Studio .Net 2003构建Smart Device工程 74
第5章 Windows CE .Net中的内存管理 77
5.1 RAM和ROM 77
5.1.1 RAM 77
5.1.2 ROM 78
5.1.3 RAM和ROM在实际设备中的体现 78
5.2 虚存 80
5.2.1 Windows CE .Net中的虚拟内存结构 80
5.2.2 Windows CE .Net中的分页式虚拟存储 81
5.3.1 Windows CE中堆的特性 85
5.3 堆 85
5.3.2 本地堆 86
5.3.3 独立堆 87
5.4 栈 89
5.5 静态数据块 89
5.6 Windows CE下的Bootloader 90
5.6.1 Bootloader简介 90
5.6.2 Bootloader的主要功能 91
5.6.3 Bootloader的结构 91
6.1.1 进程概述 93
6.1 Windows CE .Net中的进程 93
第6章 Windows CE .Net中的进程和线程 93
6.1.2 创建进程 94
6.1.3 终止进程 96
6.1.4 其他相关函数 97
6.2 Windows CE Net中的线程 98
6.2.1 线程概述 98
6.2.2 创建线程 100
6.2.3 设置线程的优先级 101
6.2.4 查询线程的优先级别 101
6.3 进程间通信 102
6.2.5 设置线程的时间片 102
6.2.6 挂起和恢复一个线程 102
6 3.1 事件对象 103
6.3.2 线程等待 104
6.3.3 信号量 105
6.3 4 互斥 106
6.3.5 互锁函数 107
6 3.6 临界区 108
7.1 Windows CE .Net文件系统 110
7.1.1 文件系统概述 110
第7章 Windows CE .Net中的文件系统和注册表管理 110
7.1.2 对象存储 111
7.1.3 文件的输入输出 112
7.1.4 内存映射文件 117
7.1.5 文件管理 120
7.2 注册表 123
7.2.1 概述 123
7.2.2 相关API函数 124
第8章 Windows CE .Net中的屏幕绘制函数 128
8.1 Hello Windows CE 128
8.1.1 程序构建过程 128
8.2 文本显示相关的函数 133
8.1.2 代码添加 133
8.2.1 DrawText函数 134
8.2.2 ExtTextOut函数 134
8.2.3 文本的属性 135
8.2.4 SetBkColor函数 136
8.2.5 SetBkMode函数 136
8.3 字体 137
8.4 图形绘制 138
8.4.1 直线的绘制 138
8.4.2 画笔 139
8.4.4 矩形 140
8.4.3 刷子 140
8.4.5 圆 141
8.4.6 圆角矩形 142
8.5 使用Win32 API编程方式在Windows CE中显示文本 142
8.5.1 程序实例中涉及的框架函数 143
8.5.2 程序实例中涉及的文本显示函数 144
8.5.3 程序实例的运行效果 145
8.5.4 程序实例的完整代码 146
8.6 使用Win32 API编程方式在Windows CE中绘制图形 149
8.6.1 程序实例中涉及的主要函数 149
8.6.2 程序实例的运行效果 151
8.6.3 程序实例的完整代码 152
第9章 Windows CE .Net系统中的输入 155
9.1 概述 155
9.2 键盘输入 155
9.2.1 输入焦点 156
9.2 2 键盘消息 157
9.2.3 键盘测试 160
9.3 鼠标输入 160
9.4 Windows CE中的触摸屏 161
9.4.1 手写笔消息 161
9.4.3 关于输入焦点 162
9.4.2 电子墨水 162
9.4.4 右键单击 163
9.5 通过鼠标点击的方式进行屏幕绘制 164
9.5.1 程序实例中涉及的主要函数 164
9.5.2 程序实例的运行效果 165
9.5.3 程序实例的完整代码 166
9.6 在Windows CE中实现鼠标移动轨迹的绘制 170
9.6.1 程序实例中涉及的主要函数 170
9.6.2 程序实例的运行效果 172
9.6.3 程序实例的完整代码 172
10.1 中断基础知识 177
10.1.1 汇编语言与微处理器的体系结构 177
第二部分 高级Windows CE .Net程序设计第10章 Windows CE .Net中的中断处理 177
10.1.2 中断处理程序 180
10.1.3 保存和恢复上下文 181
10.1.4 中断禁止和中断延迟 182
10.1.5 共享数据问题的产生 183
10.1.6 共享数据问题的解决 186
10.2 Windows CE .Net中断的组成 186
10.2.1 中断服务例程ISR 187
10.2.2 中断服务线程IST 188
10.4 Windows CE .Net中断发生和处理的过程 189
10.3 Windows CE .Net中断处理机制的特点 189
10.5 Netarm2410-S设备中断简介 191
第11章 Windows CE .Net中的驱动程序 194
11.1 Windows CE .Net的驱动程序模型 194
11.1.1 什么是驱动程序 194
11.1.2 本机驱动程序 195
11.1.3 流接口驱动程序 195
11.1.4 Windows CE .Net中的驱动程序接口 196
11.2 驱动程序的组成 196
11.2.3 单体/分层驱动程序在Windows CE .Net中的集成 197
11.2.2 分层驱动程序 197
11.2.1 单体驱动程序 197
11.3 Windows CE .Net中的类型驱动程序 199
11.4 Windows CE简单驱动开发实例 199
11.4.1 原理及说明 199
11.4.2 步骤1:建立模拟器工具 201
11.4.3 步骤2:创建驱动程序工程 201
11.4.4 步骤3:编写驱动程序代码 203
11.4.5 步骤4:准备配置文件 205
11.4.6 步骤5:编译内核 206
11.4.7 步骤6:加载驱动 208
12.1.1 什么是流接口驱动程序 209
第12章 Windows CE .Net中的流驱动开发和相关注册表项 209
12.1 流驱动程序简介 209
12.1.2 流接口驱动程序的系统结构 210
12.2 设备文件名 211
12.2.1 设备文件名的格式 211
12.2.2 设备文件名的前缀 211
12.2.3 设备文件名的索引 212
12.3 流驱动的标准接口 212
12.3.1 常用的接口函数 212
12.3.2 接口函数的函数原型 213
12.3.3 与应用程序之间的调用关系 215
12.3.4 文件操作和设备操作函数参数间的对应关系 216
12.3.5 单访问和多访问 218
12.4 样本流接口驱动程序 219
12.5 Windows CE .Net的注册表 219
12.5.1 Windows CE .Net注册表的结构 220
12.5.2 Windows CE .Net的常用键值类型 221
12.5.3 流驱动程序用到的注册表设置 221
12.5.4 在驱动程序中访问注册表 223
12.6.1 流接口驱动程序的加载 225
12.6 流接口驱动程序的加载和卸载 225
12.6.2 流接口驱动程序的卸载 226
12.7 ADC流驱动程序 226
12.7.1 A/D转换器简介 226
12.7.2 A/D转换器的重要指标 228
12.7.3 Arm自带的十位A/D转换器 229
12.7.4 ADC驱动程序设计 231
12.7.5 操作步骤 233
第13章 Windows CE .Net中的总线 235
13.1 总线概述 235
13.2.1 总线的分类 236
13.2 总线的分类和主要参数 236
13.2.2 总线的主要参数 237
13.3 内部集成(IIC)总线 237
13.3.1 内部集成(IIC)总线的特点 238
13.3.2 传输方式 238
13.3.3 内部集成总线(IIC)与硬件设备之间的数据交换 239
13.4 PCI总线 242
13.4.1 PCI总线的主体性能及特点 242
13.4.2 PCI总线的外设自动识别 243
13.4.3 Windows CE .Net中PCI总线驱动的作用 243
13.5.1 USB结构的特点 244
13.4.4 PCIBus. dll对PCI驱动的加载 244
13.5 USB总线 244
13.5.2 USB设备的结构 245
13.5.3 USB设备的传输类型 246
13.5.4 USB设备的软件设计 247
13.5.5 Windows CE .Net下USB系统的组成 247
13.5.6 Windows CE .Net下USB设备驱动程序的编写 247
第14章 Windows CE .Net下的PS/2键盘驱动程序设计 250
14.1 PS/2电气接口概述 250
14.2 键盘及键盘协议 251
14.2.1 键盘的扫描码集 251
14.3 键盘驱动程序的工作流程 252
14.2.2 虚拟键码 252
14.3.1 键盘驱动程序的主要接口 253
14.3.2 PDD层的开发 254
14.3.3 一个典型的IST工作过程 256
14.3.4 键盘驱动程序结构图 256
第15章 Windows CE .Net下的触摸屏 258
15.1 触摸屏概述 258
15.2 触摸屏的工作原理 258
15.3 电阻类触摸屏 259
15.3.1 触摸屏的导电涂层 259
15.4 触摸屏与Windows CE .Net系统 260
15.3.2 五线电阻触摸屏 260
15.4.1 触摸屏设置函数 261
15.4.2 触摸屏使能函数 261
15.4.3 坐标转换函数 262
15.4.4 采样坐标点函数 262
第三部分 开发实例 265
第16章 用Platform Builder进行内核定制 265
16.1 Platform Builder简介 265
16.1.1 Platform Builder的主要功能 265
16.1.2 Platform Builder的用户界面 266
16.1.3 定制嵌入式系统平台主要包括的内容 269
16.2.1 进入新建Platform向导 270
16.2.2 选择板级支持包 270
16.2 使用Platform Builder建立操作系统镜像 270
16.2.3 平台配置 272
16.2.4 自定义设备 273
16.2.5 选择程序开发的类库 275
16.2.6 选择应用程序 276
16.2.7 选择操作系统的核心服务 278
16.2.8 连接服务和网络服务 280
16.2.9 选择文件系统和数据存储方式 281
16.2.11 选择所支持的国家 282
16.2.10 字体的选择 282
16.2.12 选择客户端的Internet服务 284
16.2.13 多媒体技术的选择 284
16.2.14 安全设置 286
16.2.15 选择用户界面 287
16.2.16 提示信息 287
16.2.17 完成操作系统镜像的建立 288
16.3 使用Platform Builder生成操作系统镜像 288
16.4 把操作系统镜像下载到模拟器 292
17.1.1 EVC 4.0特性简介 295
17.1 Embedded Visual C++介绍 295
第17章 用Embedded Visual C++进行Windows CE程序设计 295
17.1.2 EVC中的模拟器 298
17.1.3 EVC中的远程调试工具 300
17.2 用EVC编写俄罗斯方块的步骤 304
17.2.1 MFC程序设计和Win32程序设计的不同 304
17.2.2 程序简介 305
17.2.3 工程的建立 306
17.2.4 代码的添加 310
17.3 游戏程序界面的设计 329
17.4.1 fangkuaiDlg. h代码注释 332
17.4 源代码解释 332
17.4.2 fangkuaiDlg. cpp代码注释 333
第18章 用Visual Studio进行Pocket PC程序设计 348
18.1 Pocket PC简介 348
18.1.1 PDA的发展历史 348
18.1.2 Palm OS操作系统 352
18.1.3 Windows CE操作系统 353
18.1.4 Symbian 354
18.1.5 Linux操作系统 354
18.2 Pocket PC的发展 355
18.2.1 硬件的发展趋势 355
18.2.3 I/O设备 356
18.2.2 图形控制器 356
18.2.4 智能设备的供电解决方案 358
18.2.5 网络技术的应用 359
18.3 Visual Studio .Net 2003简介 360
18.4 程序的构建过程 362
18.5 源代码的添加 364
18.6 源代码的注释 373
18.6.1 全局量的声明 373
18.6.2 相关按键和菜单的处理 374
18.6.4 游戏的初始化 375
18.6.5 游戏的重置 375
18.6.3 方块的下落 375
18.6.6 游戏开始 376
18.6.7 游戏的暂停和退出 376
18.6.8 进行游戏数据的加载 376
18.6.9 方块的加载 377
18.6.10 方块的放置 377
18.6.11 方块的旋转 378
18.6.12 方块的移动和落定函数 379
18.6.13 判断移除整行 379
18.6.14 分数和等级的设定 381
18.6.15 程序画面的实现 381