Windows CE 是一个新的、可移植的、实时的、模块化的操作系统,具有简捷、高效的完全抢先式多任务操作核心, 支持强大的通信和图形显示功能, 能够适应广泛的系统需求, 在最新一代的工业和家用电子设备中得到了广泛的应用。
在进行嵌入式Windows CE 项目开发的过程中, 经常需要根据需求定制显示屏, 如何为定制的显示屏开发Windows CE 驱动程序成为嵌入式系统开发的关键步骤。本文在深入研究Windows CE 驱动程序工作原理的基础上, 以维信诺VGG13264C 132×64 OLED 显示模块的WindowsCE 驱动程序设计为例, 详细阐述了嵌入式Windows CE 驱动程序的开发过程, 并对设计实现的驱动程序进行了测试。
1 Window CE 的系统体系结构
Windows CE 是微软设计开发的一种可升级的抢先式多任务32 位实时操作系统。一个基于Windows CE 的平台主要由以下几部分组成:Windows CE 内核组件、OAL 层和驱动程序。OAL 层和驱动程序作为目标设备和Windows CE 内核组件之间的接口, 将操作系统上层与硬件隔离, 便于支持硬件扩展和即插即用功能,图1 详细描述了三者之间的关系。
要把Windows CE 移植到目标平台上, 必须为平台上已建立的设备提供驱动程序。一些类型的设备, 如键盘、显示器和PC 卡插槽等对操作系统都有一个自定义接口。因为这些接口是专门用于Windows CE 的, 所以称这类驱动程序为本机驱动程序。Windows CE 平台生成器提供本机设备驱动程序的样本, 可考虑把本机设备驱动程序样本应用到平台上, 而不需要再从头开发自己的本机驱动程序。用户可根据驱动程序样本快速开发自己的驱动程序。
表1 Windows CE 下流接口驱动程序函数作用及调用关系
流接口驱动程序从设备管理器和通过文件系统调用的应用程序接受命令, 装入驱动将这些命令翻译成其所控制设备的适当操作的所有信息。所有的流接口驱动, 无论它管理的是内置式设备还是可安装式设备, 是系统引导加载还是动态加载, 它们与其他的系统组件都有类似的交互过程。
3.4 设备驱动程序的初始化过程
在Windows CE 中, 所有的设备驱动程序都以动态链接库(DLL) 的形式存在, 需要通过进程加载。设备驱动程序向外提供接口函数, 应用程序使用API 对设备进行访问。Windows CE 共有三类系统进程用来加载驱动程序:Device.exe 、GWES.exe 、FileSys.exe .驱动程序的初始化过程为:设备上电---启动bootloader---启动NK.exe---启动Device.exe---初始化数据结构和I/O---加载总线枚举器---枚举注册表Driver/BuildIn 下所有的子键。这里的枚举就是循环调用ActivateDeviceEx 函数加载驱动程序。
4 Windows CE 开发流接口驱动程序实例
以维信诺VGG13264C 132×64 OLED 显示模块的驱动程序为例, 具体阐述Windows CE 驱动开发的过程。