WinCE的OLED驱动程序设计

最新更新时间:2012-12-29来源: 电子发烧友关键字:WinCE  OLED  驱动程序 手机看文章 扫描二维码
随时随地手机看文章
  随着计算机技术和嵌入式技术的迅猛发展, 嵌入式软、硬件设计需求越来越广泛, 嵌入式软件开发, 特别是嵌入式软件的驱动开发,成为一个热点。

  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 详细描述了三者之间的关系。

  

20120216110910515.jpg

  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 所示。

  

20120216110911188.jpg

  3 Windows CE 设备驱动程序

  设备驱动程序将操作系统和设备连接起来, 使操作系统能够识别设备, 并为应用程序提供服务。

  3.1 设备驱动程序模型

  Windows CE 提供了用于驱动开发的模型,其中包括来自其他操作系统的驱动程序模型。

  因为有这些多变的驱动程序模型, 使Windows CE可以适应大部分的内部和外围设备。目前,Windows CE提供了4 种设备模型,其中两种是专用于Windows CE模型, 另外两种外部模型来自其他的操作系统, 汇总如图3 所示。

  

20120216110911365.jpg

  3.2 本机驱动程序

  要把Windows CE 移植到目标平台上, 必须为平台上已建立的设备提供驱动程序。一些类型的设备, 如键盘、显示器和PC 卡插槽等对操作系统都有一个自定义接口。因为这些接口是专门用于Windows CE 的,所以称这类驱动程序为本机驱动程序。Windows CE 平台生成器提供本机设备驱动程序的样本,可考虑把本机设备驱动程序样本应用到平台上, 而不需要再从头开发自己的本机驱动程序。用户可根据驱动程序样本快速开发自己的驱动程序。3.3 流接口驱动程序

  流接口驱动程序由设备管理应用程序加载、管理和卸载,与具有单独目的接口的本机驱动程序相比,所有流接口驱动程序使用同一个接口并调用同一个函数集---流接口函数。流接口驱动程序把外设抽象成一个文件, 使用标准文件I/O 函数和电源管理函数, 这些函数由Windows CE 操作系统的内核使用。流接口驱动程序的入口点函数为: XXX_ Init、XXX_Deinit、XXX_IOCONtrol、XXX_Open 、XXX_Close 、XXX_PowerDown 、XXX_PowerUp 、XXX_Read 、XXX_Seek 、XXX_Write .流接口驱动程序函数的作用及调用关系如表1 所示。

  

20120216110912774.jpg

  表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 所示。

  

2012021611091322.jpg

  飞凌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 开发板。

  4.2 流接口驱动程序开发过程

  Windows CE 提供了两种编写流接口驱动的方法:

  (1) 通过编写动态链接库的方法实现; (2) 通过修改BSP的方法实现。由于第二种方法可以加快开发进度, 在该实例中,使用修改BSP 的方法进行流接口驱动程序开发, 其开发步骤为: 首先在BSP 中新建一个目录,编写驱动程序文件并确定驱动程序向外提供的接口函数,然后进行注册表设置, 最后进行测试。

  (1) 驱动程序代码编写

  设备初始化使用OED_Init 函数实现, 设备卸载使用OED_Deinit 函数实现。在OED_Init 函数中,使用DrvLib_MapIoSpace 函数实现物理地址到虚拟地址映射;在OED_Deinit 函数中, 使用VirtualFree 函数释放驱动程序使用的虚拟内存从而实现了设备的卸载。

  设备的I/O 控制向设备发出命令, 按照维信诺VGG13264C OLED 显示模块的时序关系,通过控制相应管脚的电平高低实现向设备发出命令。设备的I/O 控制在OED_IOControl 函数中实现, 函数部分代码如下:

  

20120216110913578.jpg(2) 向外提供函数接口
 
  通过配置OED.def 文件导出OLED 提供的接口函数, 供设备管理器使用。在OED.def 文件中添加如下代码:
  
20120216110917785.jpg
 
  (3) 注册表配置。
  注册表文件Platform. reg 用来配置与OLED 驱动有关的信息, 配置如下:
  [HKEY_LOCAL_MACHINEDriversBuiltInIoControler]
  "Prefix "="OED"
  "Dll "="OED.dll "
  "Index "=dword:0

  随着嵌入式系统广泛应用到信息家电、工业控制、移动通信、互联网等领域,大量嵌入式系统的开发必将对人类科技的发展起着重要的作用。本文介绍的基于嵌入式操作系统Windows CE 的驱动程序会帮助读者开发出更多的嵌入式系统产品。

关键字:WinCE  OLED  驱动程序 编辑:探路者 引用地址:WinCE的OLED驱动程序设计

上一篇:OLED的电源高效设计方案
下一篇:LED 驱动器应用中升压转换器的简单开路保护

推荐阅读最新更新时间:2023-10-17 15:13

基于PCI总线集成电路测试仪接口设计
0 引言 如今社会的正常运行已离不开集成电路产品,集成电路技术在社会各行各业,诸如,交通运输、工业生产、农林自动化、电力等等都有着广泛的应用,集成电路技术与社会的发展密切相关。集成电路行业的发展日趋专业化,逐渐形成设计、制造、封装、测试独立并举、相互依持、共同发展的新局面。其中集成电路测试作为芯片设计、芯片制造和芯片封装的有力补充,推动了集成电路产业的迅速发展。集成电路测试的能力和水平的提高是保证集成电路性能、质量的关键手段之一。 目前广泛用于集成电路封装测试的设备是由计算机软件控制,通过接口总线与硬件设备通信,能够代替测试人员的大部分劳动,也称为自动化测试系统(ATE)。其工作原理是:在计算机中使用测试软件编写待测芯片的测试程序
[测试测量]
基于PCI总线集成电路测试仪接口设计
atmega8l直接驱动笔段式lcd驱动程序
#include include.h uchar lcdtab ={{{0x07,0x01,0x03},{0x04,0x00,0x02},{0x06,0x03,0x01}, {0x06,0x02,0x03},{0x05,0x02,0x02},{0x03,0x02,0x03},{0x03,0x03,0x03},{0x06,0x00,0x02}, {0x07,0x03,0x03},{0x07,0x02,0x03}}, {{0x18,0x14,0x0c},{0x10,0x10,0x00},{0x18,0x08,0x0c}, {0x18,0x18,0x08},{0x10,0x1c,0x00},{0x08,0x1c,0x08},{0x08
[单片机]
还在讨论OLED吗,下一代屏幕已经到来
就在本月26日,京东方正式下线了一条AMOLED屏幕生产线,这不仅代表着我们已经能够自主生产柔性屏幕,更表示我们可以摆脱三星的掣肘,做到全球第二家可批量生产柔性显示屏的国家。 做到这样的成绩,京东方也值得所有国人为之骄傲。但是在国外,新一代屏幕技术已经悄然酝酿,相信过不久就会与大家见面。 据国外媒体报道,已经有科学家将银与石墨烯相结合,开发出了一种对环境更友好、更灵活的屏幕材质,并且相较于现在的手机屏幕,成本大幅度降低。 同时,这种新方法在生产的时候将使用更少的能源、更灵敏的设备,并且不会在空气环境下受到损害,而目前用来制造智能手机的铟锡氧化物非常脆弱且昂贵。 并且铟锡氧化物中的铟为稀有金属,不仅昂贵,且在生态上对环境有一定的破
[家用电子]
USB设备驱动程序开发
引言   USB总线是1995年微软、IBM等公司推出的一种新型通信标准总线,特点是速度快、价格低、独立供电、支持热插拔等,其版本从早期的1.0、1.1已经发展到目前的2.0版本,2.0版本的最高数据传输速度达到480Mbit/s,能满足包括视频在内的多种高速外部设备的数据传输要求,由于其众多的优点,USB总线越来越多的被应用到计算机与外设的接口中,芯片厂家也提供了多种USB接口芯片供设计者使用,为了开发出功能强大的USB设备,设计者往往需要自己开发USB设备驱动程序,驱动程序开发一直是Windows开发中较难的一个方面,但是通过使用专门的驱动程序开发包能减小开发的难度,提高工作效率,本文使用Compuware Numega公司
[嵌入式]
OLED出货强劲上扬,NB应用是下一个增长点
  根据DisplaySearch发表的最新一季OLED出货报告,第二季全球OLED出货金额创新高达1亿9,200万美元,较上一季成长32%,与去年同期相比成长22%。   DisplaySearch预测全球OLED产值将从2008年的6亿美元,按每年33%复合成长率成长,估计到了2016年,整体产值将达到62亿美元;其中手机屏幕仍是最主要的应用,2016年出货金额估计为30亿美元,同时OLEDTV产值将达20亿美元,成为OLED第二大应用产品。   由于手机品牌厂商如SamsungElectronics、Nokia与SonyEricsson积极在手机主屏幕上导入AMOLED面板,使得用于手机主屏幕AMOLED面板出货
[手机便携]
<font color='red'>OLED</font>出货强劲上扬,NB应用是下一个增长点
OLED产线投建高峰期将至 设备商机会巨大
    益于业绩爆发式增长,美股OLED龙头UDC公司股价强势反弹,股价突破一百美元大关,5月8日最高上探至116.85美元。受其带动,A股中的OLED概念股表现同样强势。机构人士指出,UDC公司的爆发式增长可能意味着整个OLED产业正处在产业爆发前夕。目前OLED产线的建设除了三星之外,其他的基本处于刚开始投入阶段,尤其是国内厂商,一般各家的第一条生产线建设都会经过一个相对比较长的工艺摸索过程,之后将会更快速地导入第二三四条生产线,这意味着接下来将迎来OLED产线的投建高峰期,对设备商而言将是巨大的机会。   OLED龙头股大涨    5月5日,美股OLED材料公司UDC公司(UNIVERSAL DISPLAY COR
[电源管理]
嵌入式Linux下的I2C设备驱动程序设计
  0 引言   由于I2C总线的通用性,Linux作为一款优秀的 嵌入式操作系统 ,也必须要对其要有很好的支持。在Linux内核源码中对I2C总线的驱动是基于总线设备驱动模型的,其驱动程序用到了特殊的几个数据结构,对I2C总线协议进行了更抽象更通用的定义,极大的增加了设备驱动的可移植性。要编写出自己的I2C 设备驱动程序,必须对这种内核I2C总线驱动的架构有深刻的理解。   1 I2C总线的硬件构成   I2C 总线协议只有两条总线线路,一条是串行数据线(SDA),一条是串行时钟线(SCL)。SDA 负责数据的传输,SCL 负责数据传输的时钟同步。I2C 设备通过这两条总线连接到处理器的I2C总线控制器上,不同设备之
[嵌入式]
字符设备驱动程序按键驱动---中断方式
中断函数:包含#include linux/irq.h request_irq(irq,handle,irqflag,name,dev_id) { 1,分配一个irqaction结构体 2、把这个结构体放到irq_desc (action链表)中 3、设置引脚 4、使能中断 } free_irq(irq,dev_id) { 1、irqaciton出链 2、禁止中断 } ----------------------------------------------------------------------------------------------------------------------
[单片机]
小广播
最新电源管理文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved