前言 2
第一部分 WindowsEmbeddedCE6.0程序设计基础 2
第1章 嵌入式系统简介 2
1.1 嵌入式系统的特点和分类 2
1.1.1 嵌入式系统的特点 2
1.1.2 嵌入式系统的分类 3
1.2 嵌入式系统的硬件组成 4
1.2.1 嵌入式系统处理器的分类 4
1.2.2 嵌入式微处理器的主要系列 5
1.2.3 嵌入式系统的存储器 8
1.2.4 嵌入式系统的输入方式 10
1.2.5 嵌入式系统的输入/输出端口 11
1.2.6 时钟震荡电路和时钟单元 11
1.2.7 中断控制器 11
1.2.8 总线 11
1.3 嵌入式系统软件的特点、分类和开发 14
1.3.1 嵌入式系统软件的特点 14
1.3.2 嵌入式系统软件的分类 15
1.3.3 嵌入式系统软件的开发 17
1.4 嵌入式系统的应用领域 19
1.4.1 在消费类电子产品中的应用 19
1.4.2 在工业控制领域的应用 20
1.4.3 在通信领域的应用 20
1.4.4 在机器人、办公等其他领域的应用 21
1.5 嵌入式系统的发展方向 22
1.5.1 处理器 22
1.5.2 图形控制器 23
1.5.3 智能设备的供电解决方案 23
1.5.4 网络技术的应用 24
1.6 几种常见的嵌入式操作系统 25
1.6.1 嵌入式操作系统的特点 26
4.3.2 使用PlatformBuilderforCE6.0进行平台的定制 71
4.4 Embedded VisualC+++ 77
4.4.1 Embedded VisualC++++简介 77
4.4.2 Win32API、MFC及ATL三种程序设计方式 80
4.4.3 在EmbeddedVisualC++++中构建一个MFC程序 80
4.4.4 在构建好的MFC程序框架中添加消息 83
4.4.5 EVC在安装及使用过程中应该注意的问题 84
4.5 ActiveSync 84
4.6 模拟器 85
第5章 WindowsEmbeddedCE6.0中的内存管理 87
5.1 WindowsEmbeddedCE6.0中的RAM和ROM 87
5.1.1 RAM 87
5.1.2 ROM 88
5.1.3 RAM和ROM在实际设备中的体现 88
5.2 虚存 89
5.2.1 Windows Embedded CE6.0中的内存模式 90
5.2.2 内存状态查询函数 90
5.2.3 WindowsEmbeddedCE6.0中的分页式虚拟存储 192
5.2.4 与虚拟存储相关的函数 93
5.3 堆 96
5.3.1 WindowsEmbeddedCE6.0中堆的特性 96
5.3.2 本地堆 96
5.3.3 独立堆 97
5.4 栈 99
5.5 静态数据块 100
5.6 WindowsCE下的Bootloader 100
5.6.1 Bootloader简介 100
5.6.2 Bootloader的主要功能 101
5.6.3 Bootloader的结构 101
第6章 WindowsEmbeddedCE6.0中的进程和线程 103
6.1 WindowsEmbeddedCE6.0中的进程 103
6.1.1 进程概述 103
6.1.2 创建进程 104
6.1.3 终止进程 106
6.1.4 其他相关函数 107
6.2 Windows Embedded CE6.0中的线程 108
6.2.1 线程概述 108
6.2.2 创建线程 110
6.2.3 设置线程的优先级 110
6.2.4 查询线程的优先级别 111
6.2.5 设置线程的时间片 111
6.2.6 挂起和恢复一个线程 112
6.3 进程间通信 112
6.3.1 事件对象 112
6.3.2 线程等待 113
6.3.3 信号量 115
6.3.4 互斥 116
6.3.5 互锁函数 117
6.3.6 临界区 118
第7章 Windows Embedded CE6.0中的文件系统和注册表管理 119
7.1 Windows Embedded CE6.0中的文件系统 119
7.1.1 文件系统概述 119
7.1.2 对象存储 120
7.1.3 文件的输入/输出 121
7.1.4 内存映射文件 126
7.1.5 文件管理 129
7.1.6 存储管理器 132
7.2 注册表 133
7.2.1 概述 133
7.2.2 相关API函数 134
第二部分 Windows Embedded CE6.0程序设计实例 140
第8章 使用PlatformBuilderforCE6.0进行内核定制 140
8.1 Platform Builder for CE6.0简介 140
8.1.1 Platform Builder for CE6.0的主要功能 140
8.1.2 Platform Builder for CE6.0的目录组织 142
8.1.3 PlatformBuilderforCE6.0的用户界面 142
8.1.4 CatalogItemsView 143
8.1.5 定制WindowsEmbeddedCE6.0平台主要包含的内容 144
8.2 使用PlatformBuilderforCE6.0建立操作系统镜像 144
8.2.1 选择构建操作系统向导 144
8.2.2 板级支持包BSP的选择 145
8.2.3 模板选择 146
8.2.4 程序选择 146
8.2.5 程序开发类库的选择 147
8.2.6 通信服务和网络连接 147
8.2.7 选择操作系统的核心服务 148
8.2.8 设备管理 149
8.2.9 选择文件系统和数据存储方式 149
8.2.10 字体的选择 150
8.2.11 图形和多媒体技术的支持 150
8.2.12 选择所支持的国家 150
8.2.13 选择客户端的Internet服务 151
8.2.14 安全属性的选择 152
8.2.15 选择用户界面 152
8.2.16 IP语音电话选择 152
8.2.17 错误报告机制的选择 152
8.3 生成操作系统镜像 153
8.4 运行生成的操作系统镜像 154
8.5 操作系统镜像SDK的导出和安装 156
8.5.1 SDK的添加 156
8.5.2 SDK的编译 158
8.5.3 SDK的安装 158
第9章 Hello Windows EmbeddedCE6. 160
9.1 在命令行模式下构建“HelloWindowsEmbeddedCE6.0程序” 160
9.2 在自定义模拟器上构建“HelloWindowsEmbeddedCE6.0程序” 162
第10章 在WindowsEmbeddedCE6.0设备中实现图形的绘制 166
10.1 文本显示相关的函数 166
10.1.1 DrawText函数 166
10.1.2 ExtTextOut函数 167
10.1.3 文本的属性 167
10.1.4 SetBkColor函数 168
10.1.5 SetBkMode函数 168
10.2 Windows Embedded CE6.0中的字体 169
10.3 图形绘制 170
10.3.1 直线的绘制 170
10.3.2 画笔 171
10.3.3 刷子 172
10.3.4 矩形 173
10.3.5 圆 173
10.3.6 圆角矩形 174
10.4 使用相关API函数在Windows Embedded CE6.0中进行屏幕绘制 174
10.4.1 程序实例中涉及的函数框架 174
10.4.2 程序实例中涉及的文本显示函数 176
10.4.3 程序实例中涉及的图形绘制函数 177
10.4.4 程序实例运行效果 178
10.4.5 程序源代码—TextDraw.h 178
10.4.6 程序源代码—TextDraw.cpp 179
第11章 Windows Embedded CE6.0中的输入处理 184
11.1 输入处理概述 184
11.2 键盘输人方式 184
11.2.1 输入焦点 185
11.2.2 系统的健盘消息 185
11.2.3 健盘测试 188
11.3 系统中鼠标的输人 189
11.4 Windows Embedded CE6.0中的触摸屏 190
11.4.1 手写笔消息 190
11.4.2 电子墨水 190
11.4.3 关于输入焦点 191
11.4.4 右键单击 191
11.5 在Windows Embedded CE6.0中实现鼠标点击绘制 192
11.5.1 程序实例中涉及的主要函数 192
11.5.2 程序运行效果 193
11.5.3 程序源代码—ClickDraw.h 193
11.5.4 程序源代码—ClickDraw.cpp 194
11.6 在Windows Embedded CE6.0中实现鼠标移动轨迹的绘制 200
11.6.1 程序实例涉及的主要函数 201
11.6.2 程序运行效果 202
11.6.3 程序源代码—PenTest.h 202
11.6.4 程序源代码—PenTset.cpp 203
第12章 Windows Embedded CE6.0版“连连看”游戏程序的设计 207
12.1 面向对象程序设计简介 207
12.1.1 传统软件设计方法存在的问题 207
12.1.2 面向对象程序方法的特点 208
12.1.3 面向对象程序设计方法中涉及的基本概念 208
12.1.4 面向对象程序设计方法中对象的概念 210
12.1.5 面向对象程序设计方法中类的概念 210
12.1.6 面向对象中的继承 210
12.2 “连连看”游戏程序介绍 211
12.3 “连连看”游戏程序的设计步骤 212
12.3.1 程序工程的构建 212
12.3.2 程序画面的添加 214
12.3.3 程序代码的添加 214
12.4 基类Object源代码详解 215
12.4.1 成员变量的含义 215
12.4.2 关于基类的构造函数 216
12.4.3 基类中其余函数代码的解释 216
12.5 卡片类Card源代码详解 219
12.5.1 成员变量的含义 219
12.5.2 关于卡片类的构造函数 219
12.5.3 卡片类中其余函数代码的解释 220
12.6 卡片集合类Cards源代码详解 220
12.6.1 成员变量的含义 220
12.6.2 关于卡片集合类的构造函数 221
12.6.3 与卡片处理、绘制、重置相关的函数 222
12.6.4 游戏程序中对屏幕点击的处理 223
12.6.5 判断两张卡片之间是否可以连通 224
12.7 游戏类Program源代码详解 229
12.7.1 成员变量的含义 229
12.7.2 游戏程序的初始化 230
12.7.3 游戏对象的处理 232
12.7.4 游戏程序的主函数 233
第13章 使用VisualBasic设计Windows Embedded CE6.0版俄罗斯方块 234
13.1 程序构建过程 234
13.2 源代码详解 236
13.2.1 全局量的声明 236
13.2.2 相关按键和菜单的处理 237
13.2.3 方块的下落 238
13.2.4 游戏的初始化 238
13.2.5 游戏的重置 238
13.2.6 游戏开始 239
13.2.7 游戏的暂停和退出 239
13.2.8 游戏数据的加载 239
13.2.9 方块的加载 240
13.2.10 方块的放置 240
13.2.11 方块的旋转 241
13.2.12 方块的移动和落定函数 242
13.2.13 判断移除整行 243
13.2.14 程序画面的实现 244
13.2.15 程序画面 246
第14章 使用EmbeddedVisualC++进行WindowsCE程序设计 247
14.1 EmbeddedVisualC+++介绍 247
14.1.1 EVC4.0特性简介 247
14.1.2 EVC中的模拟器 250
14.1.3 EVC中的远程调试工具 251
14.2 用EVC编写俄罗斯方块 254
14.2.1 MFC程序设计和Win32程序设计的不同 254
14.2.2 程序简介· 255
14.2.3 工程的建立 255
14.3 游戏程序界面的设计 257
14.4 源代码解释 260
14.4.1 fangkuaiDlg.h代码注释 260
14.4.2 fangkuaiDlg.cpp代码注释 261
第三部分 WindowsEmbeddedCE6.0高级程序设计 280
第15章 WindowsEmbeddedCE6.0中的中断处理 280
15.1 中断基础知识 280
15.1.1 汇编语言与微处理器的体系结构 280
15.1.2 中断处理程序 283
15.1.3 保存和恢复上下文 283
15.1.4 中断禁止和中断延迟 284
15.1.5 共享数据问题的产生 285
15.1.6 共享数据问题的解决 288
15.2 Windows Embedded CE6.0中断的组成 288
15.2.1 中断服务例程(ISR) 289
15.2.2 中断服务线程(IST) 290
15.3 Windows Embedded CE6.0中断处理机制的特点 291
15.4 Windows Embedded CE6.0中断发生和处理的过程 291
第16章 Windows Embedded CE6.0中的驱动程序 293
16.1 Windows Embedded CE6.0中的驱动程序模型 293
16.1.1 什么是驱动程序 293
16.1.2 本机驱动程序 293
16.1.3 流接口驱动程序 294
16.1.4 Windows Embedded CE6.0中的驱动程序接口 295
16.2 驱动程序的组成 295
16.2.1 单体驱动程序 296
16.2.2 分层驱动程序 296
16.2.3 单体/分层驱动程序在WindowsEmbeddedCE6.0中的集成 296
第17章 Windows Embedded CE6.0中的流驱动程序和注册表项 298
17.1 流驱动程序简介 298
17.1.1 什么是流接口驱动程序 298
17.1.2 流接口驱动程序的系统结构 299
17.2 设备文件名 300
17.2.1 设备文件名的格式 300
17.2.2 设备文件名的前级 300
17.2.3 设备文件名的索引 300
17.3 流驱动的标准接口 301
17.3.1 常用的接口函数 301
17.3.2 接口函数的函数原型 301
17.3.3 与应用程序之间的调用关系 304
17.3.4 文件操作和设备操作函数参数间的对应关系 304
17.3.5 单访问和多访问 306
17.4 样本流接口驱动程序 307
17.5 Windows Embedded CE6.0的注册表 307
17.5.1 Windows Embedded CE6.0注册表的结构 308
17.5.2 Windows Embedded CE6.0的常用健值类型 308
17.5.3 流驱动程序用到注册表设置 309
17.5.4 在驱动程序中访问注册表 310
17.6 流接口驱动程序的加载和卸载 312
17.6.1 流接口驱动程序的加载 312
17.6.2 流接口驱动程序的却载 313
第18章 Windows Embedded CE6.0中的总线 314
18.1 总线概述 314
18.2 总线的分类和主要参数 315
18.2.1 总线的分类 315
18.2.2 总线的主要参数 316
18.3 内部集成总线 316
18.3.1 内部集成总线的特点 316
18.3.2 传输方式 317
18.3.3 内部集成总线与硬件设备之间的数据交换 318
18.4 PCI总线 320
18.4.1 PCI总线的主要性能及特点 320
18.4.2 PCI总线的外设自动识别 321
18.4.3 WindowsCE6.0中PCI总线驱动的作用 321
18.4.4 PCIBus.dll对PCI驱动的加载 321
18.5 USB总线 322
18.5.1 USB结构的特点 322
18.5.2 USB设备的结构 323
18.5.3 USB设备的传输类型 324
18.5.4 USB设备的软件设计 324
18.5.5 Windows CE6.0下USB系统的组成 324
18.5.6 Windows Embedded CE6.0下USB设备驱动程序的编写 325