3.2 本机驱动程序 要把Windows CE 移植到目标平台上, 必须为平台上已建立的设备提供驱动程序。一些类型的设备, 如键盘、显示器和PC 卡插槽等对操作系统都有一个自定义接口。因为这些接口是专门用于Windows CE 的, 所以称这类驱动程序为本机驱动程序。Windows CE 平台生成器提供本机设备驱动程序的样本, 可考虑把本机设备驱动程序样本应用到平台上, 而不需要再从头开发自己的本机驱动程序。用户可根据驱动程序样本快速开发自己的驱动程序。
3.3 流接口驱动程序
流接口驱动程序由设备管理应用程序加载、管理和卸载, 与具有单独目的接口的本机驱动程序相比, 所有流接口驱动程序使用同一个接口并调用同一个函数集---流接口函数。流接口驱动程序把外设抽象成一个文件, 使用标准文件I/O 函数和电源管理函数, 这些函数由Windows CE 操作系统的内核使用。流接口驱动程序的入口点函数为: **_ Init、**_Deinit、**_IOCONtrol、**_Open 、**_Close 、**_PowerDown 、**_PowerUp 、**_Read 、**_Seek 、**_Write .流接口驱动程序函数的作用及调用关系如表1 所示。
表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 驱动开发的过程。
4.1 硬件结构
系统硬件以飞凌OK6410-B 开发板为主板, 以维信诺VGG13264C 显示模块为OLED 显示屏。系统硬件框图如图4 所示。
飞凌OK6410 -B 开发板基于三星公司最新的ARM11 处理器S3C6410 , 拥有强大的内部资源和视频处理能力, 可稳定运行在667 MHz 主频以上, 支持MobileDDR 和多种NAND Flash .FL6410 开发板上集成了多种高端接口, 如复合视频信号、摄像头、USB、SD 卡、液晶屏、以太网等, 丰富的接口可帮助用户实现高端产品级设计。
维信诺VGG13264C 是132 列×64 行点阵的OLED 单色、字符、图形显示模块, 使用单芯片SSD1303T6 进行驱动, 具有8 位并行数据接口, 模块内含132×64 显示数据RAM, 通过用户I/O 接口连接到飞凌OK6410-B 开发板。 |