首页 > 嵌入式软件 > WinCE

随着计算机技术和嵌入式技术的迅猛发展, 嵌入式软、硬件设计需求越来越广泛, 嵌入式软件开发, 特别是嵌入式软件的驱动开发, 成为一个热点。

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 中断处理

本文引用地址: http://embed.21ic.com/software/wince/201806/63072.html

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 流接口驱动程序

流接口驱动程序由设备管理应用程序加载、管理和卸载, 与具有单独目的接口的本机驱动程序相比, 所有流接口驱动程序使用同一个接口并调用同一个函数集---流接口函数。流接口驱动程序把外设抽象成一个文件, 使用标准文件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 所示。

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

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 函数中实现, 函数部分代码如下:


(2) 向外提供函数接口

通过配置OED.def 文件导出OLED 提供的接口函数, 供设备管理器使用。在OED.def 文件中添加如下代码:


(3) 注册表配置。

注册表文件Platform. reg 用来配置与OLED 驱动有关的信息, 配置如下:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IoControler]
"Prefix "="OED"
"Dll "="OED.dll "
"Index "=dword:0

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

换一批

延伸阅读

[行业资讯] 齐聚深圳、嵌入式专家研讨人工智能时代发展机遇

齐聚深圳、嵌入式专家研讨人工智能时代发展机遇

近日,嵌入式系统联谊会第23次主题讨论会就这些问题,邀请业内知名专家和学者做了深入的探讨!本次会议由嵌入式系统联谊会、深圳北航新兴产业技术研究院主办,深圳北航物联网研究院、物联网咖啡承办,北京航空航天大学出版社、泰智会共同协办。主题为”人工......

关键字:嵌入式 单片机 人工智能 嵌入式系统

[行业资讯] 晶心科技再创里程碑 累积授权合约数突破200份

晶心科技再创里程碑 累积授权合约数突破200份

晶心的销售市场涵盖臺湾、美国、日本、韩国、大陆、欧洲等地,代表晶心科技的产品与技术获得全球客户的肯定。 ......

关键字:晶心科技 IPO 嵌入式系统

[行业资讯] 物联网操作系统现状与发展前景研讨会

物联网操作系统现状与发展前景研讨会

操作系统是物联网时代的战略制高点,今天PC和手机时代的操作系统霸主未必能在物联网时代延续霸业。操作系统产业的规律是,当垄断已经形成,后来者就很难颠覆,只有等待下一次产业浪潮。如今,一个全新的、充满想象空间的操作系统市场机会正在开启。 ......

关键字:物联网 嵌入式系统 研讨会

[行业资讯] 嵌入式系统的创新与创业,要从实处做起!

嵌入式系统的创新与创业,要从实处做起!

21ic讯 “大众创业、万众创新”已经成为社会各界的基本共识。从全球来看,现代电子信息技术在与社会的互动发展中,已经用自身的成就赢得了“科技革命的牵引......

关键字:嵌入式系统

[行业资讯] 嵌入式系统联谊会12月主题讨论会议程(总第17次)

嵌入式系统联谊会12月主题讨论会议程(总第17次)

最近两年集成电路产业发生了许多变化,呈现出以下三个特点:第一,并购频繁。Intel斥资167亿美元并购Altera,Avago 耗费370亿美元并购Broadcom,NXP花费 118亿收购了飞思卡......

关键字:嵌入式系统 联谊会

[真心话] IT开发的岔路口:究竟是JAVA好还是嵌入式好?

IT开发的岔路口:究竟是JAVA好还是嵌入式好?

一份工作在一个人的生活中占据重要地位,对于一个人的生活质量占据决定性作用,可以说工作决定一个人一生,对于选择工作当然是要选择新兴产业且有发展前途的行业......

关键字:嵌入式 JAVA

[新鲜事] 8年前用一万个比特币买2个披萨,如今的他又出手了...

8年前用一万个比特币买2个披萨,如今的他又出手了...

2010年5月22日,一名为Laszlo Hanyecz的程序员用一万个比特币购买了两个披萨。当时一枚比特币价值仅为0.003美分,如今则是9669.27美元。......

关键字:比特币 程序员

[新鲜事] 三星跟苹果的专利官司败了要赔5.39亿美金,不过三星将继续上诉

三星跟苹果的专利官司败了要赔5.39亿美金,不过三星将继续上诉

6月12日消息,据外媒报道,上周四,三星要求法院驳回其与苹果的手机专利案的判决,或者重新审理这起案件。三星在提交给美国加州圣何塞地方法院的一份长达34页的庭审后动议中表示,陪审团做出的5.39亿美元的赔偿判决......

关键字:三星 苹果
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi®和蓝牙®combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14