随着计算机技术和嵌入式技术的迅猛发展, 嵌入式软、硬件设计需求越来越广泛, 嵌入式软件开发, 特别是嵌入式软件的驱动开发,成为一个热点。
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 详细描述了三者之间的关系。
2 Windows CE 中断处理
Windows CE 将中断处理分为两个步骤: 中断服务例程(ISR)和中断服务线程(IST)。把每个硬件的设备中断请求(IRQ) 和一个ISR 联系起来, 当一个中断发生并未被屏蔽时,内核调用该中断注册的ISR.因为ISR 运行于内核模式, 所以应设计得尽可能短,ISR 引导内核调度和启动合适的IST,IST 在设备驱动程序软件模块中编写, 运行于用户模式, 它从硬件获取或向硬件发送数据和控制代码, 并进一步处理设备中断。Windows CE 还提供了中断嵌套功能, 即在一个ISR 运行时, 内核并不关闭中断, 当优先级比之高的中断发生时,内核保存当前执行的中断服务例程ISR 的运行状态, 挂起该ISR,转而执行更高优先级中断的ISR.等到高优先级中断的ISR执行完后,被挂起的低优先级中断的ISR 才重新开始被CPU 调度执行。Windows CE 的中断处理框图如图2 所示。
3 Windows CE 设备驱动程序
设备驱动程序将操作系统和设备连接起来, 使操作系统能够识别设备, 并为应用程序提供服务。
3.1 设备驱动程序模型
Windows CE 提供了用于驱动开发的模型,其中包括来自其他操作系统的驱动程序模型。
因为有这些多变的驱动程序模型, 使Windows CE可以适应大部分的内部和外围设备。目前,Windows CE提供了4 种设备模型,其中两种是专用于Windows CE模型, 另外两种外部模型来自其他的操作系统, 汇总如图3 所示。
3.2 本机驱动程序
要把Windows CE 移植到目标平台上, 必须为平台上已建立的设备提供驱动程序。一些类型的设备, 如键盘、显示器和PC 卡插槽等对操作系统都有一个自定义接口。因为这些接口是专门用于Windows CE 的,所以称这类驱动程序为本机驱动程序。Windows CE 平台生成器提供本机设备驱动程序的样本,可考虑把本机设备驱动程序样本应用到平台上, 而不需要再从头开发自己的本机驱动程序。用户可根据驱动程序样本快速开发自己的驱动程序。
3.3 流接口驱动程序
表1 Windows CE 下流接口驱动程序函数作用及调用关系
流接口驱动程序从设备管理器和通过文件系统调用的应用程序接受命令,装入驱动将这些命令翻译成其所控制设备的适当操作的所有信息。所有的流接口驱动, 无论它管理的是内置式设备还是可安装式设备,是系统引导加载还是动态加载, 它们与其他的系统组件都有类似的交互过程。