第1章 引言 1
1.1 什么是嵌入式系统 1
1.2 嵌入式系统的发展历史 2
1.3 嵌入式操作系统基本概念 2
1.4 Windows CE发展简史 4
1.4.1 起因 4
1.4.2 迎战 5
1.4.3 Windows CE的功能 6
1.5 Windows CE的应用领域 7
1.5.1 PDA市场 7
1.5.2 新一代手机操作系统 8
1.5.3 工业控制 9
1.6 本书的组织 11
第2章 Windows CE.NET系统结构 15
2.1 透视系统关键特性 15
2.1.1 操作系统核心特性 16
2.1.2 应用系统基础设施 18
2.1.3 嵌入式系统支持 22
2.1.4 工具 25
2.2 代码组织 25
2.2.1 源代码树的构成 25
2.2.2 代码共享 26
2.2.3 创建系统 27
2.3 系统模型 28
2.3.1 层次化的结构 28
2.3.2 模块化的组织 30
2.4 系统机制 33
2.4.1 陷阱调度 33
2.4.2 进程间通信机制 34
2.4.3 系统调用接口 35
2.4.4 可扩展固件接口 36
2.4.5 注册表 38
2.4.6 Windows CE.NET服务 38
第3章 进程、线程描述和调度 40
3.1 进程的定义和描述 40
3.1.1 进程概述 40
3.1.2 Windows CE的进程描述 41
3.1.3 Windows CE进程结构分析 41
3.1.4 进程的同步和互斥 43
3.2 线程 44
3.2.1 线程概述 44
3.2.2 Windows CE的线程结构分析 45
3.3 其他一些重要的数据结构 48
3.4 Windows CE中的调度 50
3.4.1 Windows CE调度的概述 50
3.4.2 线程调度的时机 51
3.4.3 关于线程的优先级 53
3.4.4 跟调度有关的函数简介 55
3.5 关于中断 61
3.5.1 关于核心中断 61
3.5.2 相关函数 62
4.1.2 逻辑层次结构 64
4.1.1 物理结构 64
第4章 内存管理 64
4.1 Windows CE.NET内存体系结构 64
4.1.3 Windows CE地址空间 65
4.1.4 32位虚拟地址的划分 66
4.2 主要数据结构 66
4.2.1 空闲链表 66
4.2.2 内核内存空间信息 66
4.2.3 块描述符MEMBLOCK 67
4.2.4 有关内存管理的系统全局变量 67
4.3 内存的分配与回收 68
4.3.1 物理内存的分配和回收 68
4.3.2 虚存的分配和回收 70
4.4.2 本地堆和独立堆 75
4.4.3 逻辑地址的数据结构 75
4.4.1 概述 75
4.4 逻辑内存管理 75
4.4.4 堆的创建和初始化 77
4.4.5 堆的分配和回收 78
4.5 Windows CE的保护和共享机制 81
4.5.1 保护 81
4.5.2 Windows CE的共享机制 81
第5章 存储管理 83
5.1 概述 83
5.2 对象存储 83
5.3 存储管理器 85
5.3.1 文件系统过滤器 87
5.3.2 文件系统驱动程序管理器与文件系统驱动程序 87
5.3.3 分区管理器与分区驱动程序 89
5.4 文件系统驱动程序的创建与加载 90
5.4.1 文件系统驱动程序的创建 90
5.3.4 块设备驱动程序管理器 90
5.4.2 文件系统驱动程序的加载 92
5.4.3 文件系统驱动程序管理器在其中所起的作用 93
5.5 文件系统实例:FAT文件系统 94
5.5.1 FATFS的访问过程 94
5.5.2 Buffer Cache机制 94
5.5.3 Stream的实现 96
第6章 设备管理 99
6.1 Windows CE.NET的设备管理模式 99
6.1.1 Windows CE.NET设备管理部分的体系构成 99
6.1.2 注册表 101
6.2 设备管理器 102
6.2.1 设备信息管理 102
6.1.3 HAL以及OAL支持 102
6.1.4 Windows CE.NET的设备驱动集成 102
6.2.2 I/O资源管理 113
6.2.3 设备管理接口 116
6.3 电源管理器 118
6.3.1 Windows CE.NET电源管理体系 118
6.3.2 电源状态 118
6.3.3 电源管理接口 119
6.3.4 系统电源状态转换 120
6.3.5 驱动程序电源管理 121
6.3.6 电源管理器的实现 122
6.4.1 数据结构 123
6.4 即插即用管理器 123
6.4.3 广告 124
6.5 设备驱动程序 124
6.5.1 设备驱动程序接口 124
6.4.2 通知 124
6.5.2 设备驱动程序结构 125
6.5.3 中断处理 126
6.5.4 DMA 128
6.5.5 实时特性 128
6.5.6 设备驱动程序的加载 128
6.5.7 Windows CE.NET的类型设备驱动程序 129
第7章 用户界面与图形子系统 131
7.1 GWE概述 131
7.2.1 消息队列 133
7.2 用户输入系统 133
7.2.2 输入管理 137
7.3 图形设备接口 139
7.3.1 基本GDI对象 140
7.3.2 图形原语 141
7.3.3 调色板 143
7.3.4 位图 149
7.3.5 字体 149
7.3.6 GDI的组件 151
7.4 显示驱动程序接口 152
第8章 动态链接库的加载分析 157
8.1 loader.c中代码组织的结构 157
8.2 module structure 158
8.3 从LoadOneLibraryPart2开始看DLL的加载过程 159
8.4 DLL载入过程——InitModule的实现 160
8.4.1 调用OpenAD11生成执行文件指针(openexe_t) 161
8.4.2 装入module的e32头信息 162
8.4.3 分配内存给DLL,得到Module->BasePtr 163
8.4.4 给name和o32对象分配内存 165
8.4.5 重定位映像 165
8.4.6 找到EXE的起始IP 166
8.5 情景分析 167
第9章 线程在队列之间转换分析 169
9.1 概述 169
9.2 具体分析 170
9.2.1 MakeRun()函数分析 170
9.2.2 RunDequeue()函数分析 171
9.2.3 SleepDequeue()函数分析 173
第10章 虚存分配 177
10.1 分配过程概述 177
10.1.1 参数验证 177
10.1.2 扫描虚存区域找到合适大小的空闲块 178
10.1.3 在得到的虚存块中写入控制信息 178
10.1.4 获取足够的物理块并建立映射 178
10.1.5 小实验:虚存分配的直观印象 178
10.2 物理内存的获取 180
10.2.1 分配过程 180
10.2.2 小实验:HoldPages函数跟踪 183
10.3 虚存分配代码片段 184
11.1 存储管理器分层结构的建立及可安装文件系统的加载 192
第11章 文件系统的建立及访问过程 192
11.1.1 几个重要的数据结构 193
11.1.2 情景分析 195
11.2 FAT文件系统中CreateFile的具体流程 221
11.2.1 实验环境 221
11.2.2 参数介绍 222
11.2.3 局部变量 224
11.2.4 过程跟踪 225
第12章 驱动程序加载 233
12.1 概述 233
12.2 StartOneDriver 234
12.2.1 设备信息的获取和维护 234
12.3 主要源程序清单以及情景注释 237
12.2.3 系统事件的传递 237
12.2.2 访问核心设备管理数据表 237
第13章 Windows CE应用程序开发 255
13.1 Windows CE编程模型简介 255
13.2 Windows CE编程环境 255
13.2.1 系统安装 256
13.2.2 eMbedded Visual C++集成开发环境的组件与功能 256
13.2.3 应用程序的创建 259
13.2.4 编译生成可执行文件 259
13.2.5 应用程序的调试 263
第14章 Windows CE驱动程序开发 266
14.1 Platform Builder 4.0介绍 266
14.2 使用Platform Builder集成开发环境 267
14.4 驱动程序的代码结构 268
14.3 驱动程序的导出 268
14.5 驱动程序的调试 269
14.6 驱动程序实例 269
第15章 Windows CE.NET调试 277
15.1 简介 277
15.2 调试工具 278
15.2.1 Watch Window 280
15.2.2 Variables Window 280
15.2.3 Memory Window 281
15.2.4 Registers Window 281
15.2.5 Call Stack Window 282
15.2.6 Advanced Memory Window 283
15.2.7 Processes Window 285
15.2.8 Threads Window 286
15.2.9 Modules and Symbols Window 287
15.3 调试过程 288
第16章 实验 290
16.1 同步与互斥 290
16.2 内存管理 290
16.2.1 实验一:虚存 290
16.2.2 实验二:逻辑内存管理性能 291
16.3 存储系统 292
16.3.1 实验一:RAMDISK I/O 292
16.3.2 实验二:文件系统与目录结构 293
16.4 设备驱动程序 294
16.5 图形系统 295