datasheet
超过460,000+ 应用技术资源下载
pdf

嵌入式Windows CE设备驱动的研究实现.pdf

  • 1星
  • 日期: 2014-06-13
  • 大小: 135.48KB
  • 所需积分:1分
  • 下载次数:0
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: 嵌入式WindowsCE设备驱动的研究实现

嵌入式Windows CE设备驱动的研究实现.pdf

第 13 卷  第 7 2003 年 7 月 期              Micro微com p机ute r 发Dev e展lopment               VoJl . 13 uly  No . 2003 7 嵌入式 Windows CE 设备驱动的研究实现 李长河1 , 王永强1 , 刘  刚2 , 张建华2 (1. 西安理工大学 ,陕西 西安 710048 ;2. 西安交通大学 ,陕西 西安 710049) 摘  要 : 介绍了 Windows CE 的体系结构和 Windows CE 平台定制 ,详细阐述了驱动的系统结构 、中断处理 ,重点研究了 Windows CE 下的本机驱动和流驱动模型 。在此模型基础上 ,以基于 StrongArm 处理器的彩色 LCD (640 3 480) 的 Windows CE 驱动程序设计为例 ,介绍了嵌入式 Windows CE 驱动程序的开发过程 。 关键词 :嵌入式操作系统 ; Windows CE ; 板级支持包 ;驱动模型 中图分类号 : TP31617       文献标识码 :A        文章编号 :1005 - 3751 (2003) 07 - 0069 - 04 Research and Real ization of Device Driver f or Embedded Windo ws CE L I Chang2he1 , WAN G Yong2qiang1 , L IU Gang2 , ZHAN G Jian2hua2 (1. Xi’an University of Technology ,Xi’an 710048 ,China ;2. Xi’an Jiaotong University ,Xi’an 710049 ,China) Abstract :Introduces t he system structure of Windows CE and t he platform customization , elaborates t he driver architecture of Windows CE , interrupt handle , and especially studys t he driver model of native and stream drivers in Windows CE. Wit h t his understanding , it takes t he driver development of color L CD (640 3 480) based on processor of StrongArm as an example , introduces t he development pro2 cess of device driver for t he embedded Windows CE. Key words : embedded operating system ; Windows CE ; board support packages ; driver model 0  引  言 随着计算机 技 术 、网 络 技 术 和 多 媒 体 通 信 技 术 的 发 展 ,21 世纪将是一个全球信息化的时代 , 目前 , 随着以 PDA 、信息家电 、机顶盒等为代表的嵌入式系统应用的广 泛发展 ,嵌入式系统已经越来越走近普通人的生活 ,随之 而来的 ,就是对嵌入式软 、硬件设计的广泛需要 。嵌入式 软件开发 ,特别是嵌入式软件的驱动开发 ,成为一个热点 。 Microsoft 对 Windows CE 源代码的逐步开放及它的强大 开发工具的支持 ,给了人们系统地了解以 Windows CE 为 代表的嵌入式操作系统软件体系结构的机会 。 1  Windows CE 的体系结构 Windows CE 是一个新的 、可移植的 、实时的 、模块化 操作系统[1 ] ,具有流行的微软程序开发界面 ,支持嵌入式 专用系统的快速开发 。该系统是全新开发的 ,几乎全部用 C/ C + + 语言编写 , 非常适合于移植到众多 32 位 CPU 上 。它为每一种支持的 CPU 创建一系列系统库 ,这个支 持 CPU 的系统库还可根据用户的需求做出修改 ,如增加 新的 CPU 等 。Windows CE 有 256 个中断级 ,并可调整时 收稿日期 :2003 - 02 - 21 作者简介 :李长河 (1945 —) ,男 ,湖北蕲春人 ,副教授 ,研究方向为计 算机网络与通信技术 。 间片 ,是一个模块化设计的操作系统 ,系统设计者只需选 择满足特定平台的最少模块创建系统 ,从而达到减少总的 内存需求 、减少制造成本的目的 。 Windows CE 支持局域网和拨号连接 ,提供与 PC , In2 ternet , Intranet 的连接 ,包括用于设备之间的应用级数据 传输 。它 提 供 了 支 持 各 种 通 信 的 基 本 模 块[2 ,3 ] , 包 括 Socket , TCP/ IP , PPP , SL IP , TAPI , IrDA ,NDIS ,远程访问 及串行通信模块 。Windows CE 是由许多离散模块构成 的 ,每一个模块都提供特定的功能 。Windows CE 包含操 作系统的最关键的四个模块[4 ] :内核模块 、对象存储模块 、 通信模块和图形 、窗口及事件模块 ( GWES) ,另外还有一 些可选模块 。 2  Windows CE 的平台定制 Windows CE 作为商业化的嵌入式操作系统 ,微软公 司提供了强大的开发支持 , 出版发行了用 于 开 发 基 于 Windows CE 操作系统映像的集成开发环境 ( IDE) ,其目 的是实现快速定制嵌入式设备上的基于 Windows CE 操 作系统的映象 。如 : Windows CE 3. 0 , 还有最近推出的 Microsoft Windows CE Platform Builder 4. 0 用于开发 Win2 dows CE. N ET。它们都包含有最新版本的 Windows CE 操 作系统 、嵌入式开发工具和 IDE ,支持 Microsoft 运行时库 (run - time libraries) ,并提供了一些实例代码 ,集成开发环 © 1994-2007 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net · 7 0 ·                    微 机 发 展                     第 13 卷 境使你能选择 Windows CE 组件 ,可以将你定制的操作系 统 (OS) 包括在内 。 3  Windows CE 驱动程序开发模型 设备驱动程序是将操作系统和设备连接起来 ,使得操 作系统能够识别设备 ,并为应用程序提供服务 。Windows CE 支持广泛的基于各种 CE 平台的设备驱动程序 ,也提 供一些用于驱动开发的模型 ( model) ,其中包括来自其他 操作系统的驱动程序模型(model) 。因为有这些多变的驱 动程序模型 ,使 Windows CE 可以适应大部分的内部和外 围设备 。 目前 ,Windows CE 提供了四种设备模型[5 ] ,其中两种 是专用于 Windows CE 模型 ,另外两种外部模型来自其他 的操作系统 ,进行汇总如图 1 所示 。下面就本机和流接口 驱动进行具体介绍 。 图 1  Windows CE 驱动模型 311  本机设备驱动程序 要把 Windows CE 移植到目标平台上 ,必须为在平台 上已建立的设备提供驱动程序 。一些类型的设备如键盘 、 显示器和 PC 卡插槽等对操作系统都有一个自定义接口 。 因为这些接口是专门用于 Windows CE 的 ,所以这类驱动 程序叫本机驱动程序 。一般来说只有 OEM 开发商对设 备驱动程序感兴趣 ,他们建立基于 Windows CE 的平台 。 而独立硬件销售商只开发附加的硬件驱动程序 。Win2 dows CE 平台生成器提供本机设备驱动程序的样本 ,可考 虑把本机设备驱动程序样本应用到自己的平台上 ,而不需 要再从头开发自己的本机驱动程序 。这并不意味着必须 使用这些样本码来生成内部设备驱动程序或其它的驱动 程序模型 ,平台生成器单独提供驱动程序样本是为了方便 用户快速开发自己的驱动程序 。 样本驱动分为两种类型 : 单片 ( monolithic) 驱动程序 和分层 (layered) 驱动程序[5 ] 。单片驱动程序是基于单个 码片 (single piece of code) ,该码片直接把硬件的功能性传 递给操作系统 ,而分层驱动程序是有两个设置好的层组 成 ,上层是模型设备驱动程序 ( MDD) ,下层是模型设备驱 动程序 ( PDD) 。 3. 1. 1  本机驱动程序的系统结构 图 2 说明单片驱动程序和分层驱动程序是如何在 Windows CE 操作系统集成的 。 图 2  本机驱动程序的系统结构 MDD 模型设备驱动程序执行下列任务 :连接 PDD 层 并定义它希望调用的函数 ;把不同的函数集提供给操作系 统 ;处理像中断处理这样的复杂任务 ;与 GWES 模块和内 核通信 。 依赖平台的 PDD 层与 MDD 和硬件都有接口 ,这就 意味着必须适合目标平台的需要 。一个 PDD 有针对具体 硬件的函数组成 ,而这些函数与一个 MDD 层相对应 。但 这种对应不是直接的一一对应 。MDD 函数实现对立的任 务 ,而 MDD 则通过使用这些任务来实现其目标 。因为 PDD 层是硬件相关的 ,因此必须生成一个设置好的 PDD 并输出到平台硬件 。微软为各种各样的内部设备提供了 几个样本 PDD 层 。 3. 1. 2  本机驱动程序的中断处理 和其他的计算机结构一样 ,当设备需要驱动程序的服 务时 ,基于 Windows CE 的平台要使用中断通知操作系 统 。例如在用户敲击键盘或屏幕时 ,键盘硬件和触摸屏就 产生了一个中断信号 。Windows CE 3. 0 以上版本支持嵌 套的中断 ,256 个优先级 ,0 最高 ,以前的 8 个优先级映射 为 248 - 255 高优先级的 ISR 和 IST 可以中断低优先级的 ISR 和 IST。四个范围 : 0 - 96 : 高优先级实时任务 ; 97 152 :缺省的 CE 驱动 ;153 - 247 :比普通的用户级任务高 的任务 ;48 - 255 :非实时的用户应用 。 Windows CE 把中断处理分成两部分 ———核心码和用 户码部分[1 ,5 ] ,这样使得功能和实现的简易性比较平衡 。 核心码部分叫做中断服务例行程序 ( ISR) ,而用户码叫做 中断服务线程( IST) 。中断服务例行程序 ( ISR) 把物理中 断映射到逻辑中断 。 图 3 说明了中断处理过程中各部分之间的关系 ,例外 处理程序 (exception handler) 是所有中断的主要目标 。当 中断发生时 ,核心直接跳到例外处理程序 ,然后例外处理 程序调用已注册的中断服务例行程序 ( IST) 处理当前中 断 。原始设备制造商 (OEMs) 在启动时向例外处理程序 登记中断处理程序( ISR) 。首先 ,核心在 OAL 中调用函数 OEMInit ;第二步 ,OEMInit 调用函数 HookInterrupt ,通知 例外处理程序哪个中断服务例行程序对应单独的物理中 断线 。OAL 中的一些程序如 OEMInterrupt Enable ,OEM2 InterruptDisable 和函数 OEMInterruptDone 也在处理过程 © 1994-2007 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net 第 7 期            李长河等 :嵌入式 Windows CE 设备驱动的研究实现 ·71 · 中调用 。 架的缓冲区 ,也就是说 ,显示器的内存必须存在于连续的 内存区域 ,使用非连续的的框架缓冲区来修改 GPE 类将 要付出巨大的努力 ,图 4 表示了显示驱动程序的体系结构 和调用过程 。 图 3  Windows CE 中断处理过程 3. 2  开发流接口驱动程序 流接口驱动程序是动态联接库[1 ,5 ] ,是由一个叫做设 备管理程序的特殊应用程序加载 、管理和卸载 ,与具有单 独目的接口的内部驱动程序相比 ,所有流接口驱动程序使 用同一个接口并调用同一个函数集 ———流接口函数 。对 于每个流接口驱动程序来说 ,其所要求的入口点用来实现 标准文件 I/ O 函数和电源管理函数 ,这些函数由 Windows CE 操作系统的内核使用 。其所要求的入口点为 : XXX- close , XXX-Deinit , XXX- Init , XXX- IOControl , XXX- Open , XXX- PowerDown , XXX- PowerUp , XXX- Read , XXX- Seek , XXX- Write 。当你生成一个 DLL 后 ,就用设 备文件名前缀替换入口点名字中的 XXX。 流接口驱动从设备管理器和通过文件系统调用的应 用程序来接受命令 ,驱动装入将这些命令翻译成它所控制 设备的适当操作的所有信息 。所有的流接口驱动 ,无论它 管理的是内置式设备还是可安装式设备 ,是系统引导加载 还是动态加载 ,它们和其它的系统组件都有类似的交互过 程。 4  Windows CE 驱动开发实例 以笔者开发的彩色 LCD 显示驱动程序为例 ,具体介 绍 Windows CE 驱动开发的过程 。 Windows CE 中显示驱动程序应归于内部驱动程序 , 因为驱动程序和图形 、窗口和事件系统( GWES) 间存在定 制接口 。GWES 模块或设备管理器[1 ] 可以被它们的父进 程直接加载和调用 。Windows CE 的显示设备驱动程序接 口 (DDI) 是 Windows N T 显示设备驱动程序接口 (DDI) 的 子集[5 ] ,在 Windows CE 2. 0 及其以上版本中 , GDI 调用显 示其驱动程序并将显示器驱动程序写到物理的显示设备 上 。所有基于 Windows CE 的显示器驱动程序必须实现 一套显示的 DDI 函数 ,这些函数用来初始化显示器驱动 程序并画到显示器上 。Windows CE 显示器驱动程序使用 Microsoft 提供的一套称作图形原始引擎( GPE) 的C + + 类 来实现 ,这些 GPE 类提供了基本的代码 ,可以通过这些代 码导出自己硬件的显示器驱动程序 。GPE 类处理显示 DDI 层的所有通信 。GPE 类要求显示器硬件采用平铺框 图 4  显示驱动程序的调用过程及体系结构 上面的调用过程表明驱动程序被 GEWS 直接调用 , Windows CE 的显示器驱动程序采用分层结构 ,微软提供 的 GPE 库处理所有缺省的画图和在显示驱动程序的模型 设备驱动层 ( MDD) 的动作 ,OEM 开发商在 PDD 层根据 不同的显示设备编写特定硬件的代码 。 Windows CE 的显示缓存格式 : Windows CE GDI 所支 持的显示器具有宽广的颜色深度和颜色模型的变化范围 。 范围从 1 - bit 到调色板颜色再到真 32 - bit 红 、绿和蓝 (R GB) 颜色 。每种格式也支持各自的像素排序 ,这依赖于 存取显示缓存的方法是通过位 、WORD 或 DWORD ,对于 所有的显示器缓存格式 ,像素的排序都是从左到右从上到 下 。也就是说像素 (0 ,0) 在显示器的左上角 ,像素 ( width - 1 ,height - 1) 在右下角 。由于笔者所用 LCD 为 16 位色 LCD 屏 ,下面以每个像素占 15 位 (15 - bpp) 或 16 位 (16 bpp) 加以介绍 ,15 - bpp 和 16 - bpp 格式都是屏蔽和非调 色格式 ,不管是 15 - bpp 或 16 - bpp ,每个像素存在每两个 字节的 word 中 ,每个 15 - bpp 格式浪费每个字的一个高 序位 。表 1 给出了微软建议的抽取红 、绿和蓝的屏蔽 。 表 1  抽取红 、绿和蓝的屏蔽 颜色 红色 绿色 蓝色 15 位屏蔽 (5 - 5 - 5R GB) 0x7C00 0x3 E00 0x001 F 16 位屏蔽 (5 - 6 - 5R GB) 0xF800 0x07 E0 0x001 F   笔者使用最新的 RTOS 开发工具 Microsoft Platform builder 4. 1 ,开发的 LCD 显示驱动程序是基于 StrongArm 处理器的 ,该处理器内置了一个 LCD 接口控制器 ,所采用 的液晶显示器为 NL6448BC20 - 08 ,它是一款 Active Ma2 trix 型 640 ×480 TFT 彩色液晶显示器 。根据具体 LCD 的电器特性 ,在板级支持包 BSP 驱动中通过设置 LCD 控 制寄存器和 DMA 通道的地址等来实现对这些参数设置 (如 LCD 屏大小 、单屏还是双屏等) ,以及完成显示驱动接 口 GDI 的各种功能函数 , 具体程序可参看板级支持包 BSP ,下面给以简要介绍 。 © 1994-2007 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net · 7 2 ·                    微 机 发 展                     第 13 卷 注册表文件 Platform. reg 来配置与显示驱动有关的 信息 : [ HKEY-LOCAL- MACHIN E \ Drivers \ Display \ SALCD2 \ CONFI G] “DisplayDll”=“sa-lcd2 . dll” “LCDBaseVirtual”= dword :ab100000 “GPIOBaseVirtual”= dword :a9040000 “LCDVirtualFrameBase”= dword :ac008900 “LCDPhysicalFrameBase”= dword :c0008900 “bClearAlternateVideoBCR”= dword :1 [ HKEY-LOCAL- MACHIN E \ System \ GDI \ Drivers] “Display”=“sa-lcd2 . dll” 在 sa-lcd2 . h 文件中定义从 GPE 的 sa-lcd2 的继承类 。 class SA-LCD2 : public GPE { private :  …  DWORD m-colorDept h ;  DWORD m- VirtualFrameBuffer ;  …   Public :  …  void InitializeHardware (void) ;  … } 在 sa-lcd2. cpp 文件中具体实现显示 PDD 层 DDSI 的 有关接口函数 , 以下以构造函数 SA-LCD2 和 Initialize2 Hardware 函数简要说明 , SA-LCD2 主要实现屏幕 、鼠标 参数的初始化 ; InitializeHardware 函数读注册表配置信 息 、分配显示缓存 、设置调色板 、配置 LCD 控制寄存器等 。 static ulong gBit Masks[ ] = { 0xF800 , 0x07 E0 , 0x001 F } ; / / 565 MODE SA-LCD2 : :SA-LCD2 (void) {…   m- nScreenWidt h = 640 ;   m- nScreenHeight = 480 ;  … } void SA-LCD2 : : InitializeHardware (void) {…  WRI TE-BI TFIELD ( struct lccr0Bits , &m-LCDRegs - > lc2 cr0 ,len ,0) ;  WRI TE-BI TFIELD ( struct lccr0Bits , &m-LCDRegs - > lc2 cr0 ,cms ,0) ;  … } 5  结束语 随着后 PC 时代的到来 ,嵌入式系统已经广泛应用到 信息家电 、工业控制 、移动通信 、互联网等领域 ,可以预见 在不久的将来人们的日常生活的衣 、食 、住 、行等方方面面 都将与嵌入式系统密切相关 ,嵌入式系统的发展对人类科 技的发展起着重要的作用 。文中简单介绍了 Windows CE 操作系统的体系结构 ,详细阐述了 Windows CE 操作系统 驱动程序的开发模型 。并在此驱动程序开发模型的基础 上 ,以笔者设计的基于 StrongArm 处理器的多媒体通信终 端的 640 ×480 TFT 彩色液晶显示器驱动程序开发为例 , 详细介绍了具体的驱动程序开发过程 。希望文中介绍的 基于嵌入式操作系统 Windows CE 的驱动程序开发模型 能够帮助读者开发出更多的嵌入式系统产品 。 参考文献 : [ 1 ]  Goggin T A. Windows CE 高级开发指南[ M ] . 尤  滔 ,张   平 ,周晓权 ,译. 北京 :电子工业出版社 ,2001. [ 2 ]  Microsoft . Microsoft Windows CE communications Guide[ M] . 希  望译. 北京 :北京希望电子出版社 ,2000. [3 ]  Boling D. Microsoft Windows CE 程序设计 [ M ] . 博彦科技 译. 北京 :北京大学出版社 ,2000. [ 4 ]  Wilson J Y , Havewala A. Building Powerful Platforms wit h Windows CE[ M] . United States :[ s. n. ] ,2001 . [5 ]  Microsoft . Microsoft Windows CE Device Driver Kit [ M ] . 希 望译. 北京 :北京希望电子出版社 ,2000. (上接第 47 页) 成完毕 ,在界面上提示“可以点击“Save”按钮 ,保存数据”。 如果在 MM5 运行界面下 ,点击“Save”按钮 ,可以将数据和 图像文件保存到相应目录下的以当前日期命名的子目录 下 。切换到图像显示界面下 ,可以直接浏览这些云图 。 3  结  论 以前气象部门预报 ,需要出 1 000 多张云图 ,工作人 员从国家气象台网上下载数据计算 ,再绘制成气象图需要 几个小时 。如今 ,利用气象专用计算机只需 1 个多小时 。 该机能对 48 小时气象动态模式进行实时系统监控跟踪 , 把处理结果以数据形式传输给气象部门 ,以便让用户及时 得到准确的气象服务信息 。 参考文献 : [ 1 ]  Brown M C. Pyt hon 技术参考大全[ M] . 北京 :清华大学出 版社 ,2002 . [2 ]  Brueck D. Pyt hon2 . 1 宝典[ M ] . 北京 : 电子工业出版社 , 2002 . © 1994-2007 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
更多简介内容

评论

下载专区


TI最新应用解决方案

工业电子 汽车电子 个人消费电子