前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇驱动程序范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
关键词:wince 驱动程序;开发;设计
1 引言
WINCE和Windows 98或Windows 2000不同,它可以工作在12种不同的处理器体系结构、180余种CPU上;同时,WINCE是一个实时操作系统(实时系统的意义就是输入的指令不必进入队列就可以马上处理,过去我们使用的DDS就是实时系统),可以满足应用程序所需要的实时性要求。
Windows CE的模块化设计使得它能够在大量的平台上定制使用,从客户电子设备到专用的工业控制器。由于它是模块化的,因而我们可以使用满足平台系统需求的最小软件模块和组件集合来设计嵌入式系统平台,从而使内存用量最小,但最大可能地提高操作系统的性能。因此外围扩展设备就必须要有硬件驱动才能正常工作。
和其它的操作系统一样,Windows CE也提供设备驱动软件,这些软件的目的是驱动内部和外围的硬件设备,或为它们提供接口。设备驱动程序将操作系统和设备链接起来,使得操作系统能够识别设备或者为应用程序提供设备服务。
Windows CE支持广泛的基于各种CE平台的设备驱动程序。也提供一些用于驱动程序开发的模型(model) ,其中包括来自其它操作系统的驱动程序模型(model),因为这些丰富多变的驱动程序模型, Windows CE适应大部分的内部和外围设备口Microsoft Windows CE设备驱动程序工具包配备了文档资料,这些文档资料使得你能够为Windows CE创建设备驱动程序。目前,Windows CE提供了四种设备模型,其中两种是专用于Windows CE的模型,另外两种外部模型来自其它操作系统。
2 驱动程序开发简介
2.1 开发工具
Windows CE驱动可以使用Platform Builder或者Visual Studio开发,但是开发人员一般都使用Platform Builder开发设备驱动程序,对于部分驱动也会使用Visual Studio开发,应用程序开发人员更多的使用Visual Studio开发驱驱动程序。作为BSP(Board Support Package)的一部分进行整体编译开发。
2.2 驱动分类
2.2.1 按加载方式和接口类型分类
1) 本机驱动程序(Built-In Drivers)
通常由GWES加载,驱动接口一般都是定制的(Custom Purpose)。
2) 流驱动程序(Stream Drivers)
通常由Device Manager加载,驱动接口是标准的流式接口。
3) 混和型驱动程序
同时有定制式和流驱动两套驱动接口,但是和系统交互只使用流式驱动接口,比如PC卡槽驱动。
2.2.2 按驱动层次分类
1) 层次型驱动程序(Layered Driver)
> MDD(Model Device Driver),与硬件无关,面向上层应用程序,一般由微软建立统一框架;
> PDD(Platform Dependent Driver),针对具体硬件平台的操作代码,一般由驱动开发商实现MDD和PDD之间通过标准的设备驱动服务供应商接口DDSI连接。
2) 独立型驱动程序(Monolithic Driver)
> 独立驱动程序包含了MDD面向上层应用和PDD面向硬件平台两方面的代码;
> 适用于操作不复杂的驱动;
> 减少了MDD和PDD传递之间传递信息的开销,实时性更强;
3 流驱动程序的实现
流驱动程序必须实现一套标准接口,流驱动程序适用于IO操作,这也是嵌入式系统中最常见的设备驱动,操作接口和文件系统操作相似,通过CreateFile,ReadFile,WriteFile,IOControl函数等来操作应用程序和流驱动交互,可以把设备当作文件操作。
3.1 文件前缀名确定
根据文件前缀名在系统中必须唯一这一特点,在定义文件前缀名必须是三个字母,若有多个同类设备,由后缀一个阿拉伯数字区分,例如COM1,LPT3等等。文件前缀名将会在驱动的标准接口函数中体现,比如XXX_Init,XXX_Close等。
3.2 通用函数
根据设备的不同,所需函数不同,通用函数如下所示:
1) XXX_Init:通知设备管理器为设备初始化分配资源;
2) XXX_Deinit:通知设备管理器回收设备初始化时分配的资源;
3) XXX_Open:打开设备。应用程序调用CreateFile时,通过文件系统映射为XXX_Open;
4) XXX_Close:关闭设备。应用程序调用CloseFile时,通过文件系统映射为XXX_Close;
5) XXX_PowerUp:设备上电时,操作系统调用该函数完成必要的上电操作;
6) XXX_PowerDown:设备掉电时,操作系统调用该函数完成必要的关机操作
7) XXX_Read:从打开的设备文件中读取数据,可以通过ReadFile映射;
8) XXX_Write:向打开的设备文件写数据,可以通过WriteFile映射;
9) XXX_Seek:文件定位,根据设备情况决定是否支持;
10) XXX_IOControl:IO操作扩展,可以根据设备情况来决定支持何种特殊的操作模式。
3.3 DEF文件建立
流驱动一般以DLL形式存在,DEF文件定义了DLL需要导出的接口集,因此DEF文件的名称与设备驱动名称相同。
3.4 写注册表
在wince中任何设备的识别都是通过注册表来实现的,因此必须在注册表中添加具体的设备驱动项,以便系统识别。具体方法如下:
在注册表中增加驱动程序入口点,找到注册表项,注册项位于注册表的Root Key下,一般为[HKEY_LOCAL_MACHINEDriversBuiltInSampleDrv],建立必要的子键和键值,“Prefix”和“DLL”是两个重要,而且是必须的键,分别描述了设备前缀名和驱动程序的动态连接库名,然后根据具体设备的需要建立驱动程序需要的其子他键。
4 调试驱动程序
驱动程序编写完毕后,就应该进行硬件的调试。具体方法如下:
4.1 调试区信息(Debug Zone)
调试区一般和WinCE的控制台调试工具Cesh.exe配合调试,在不打断OS运行情况下,进行驱动的实时调试,利用宏开关,可以选择需要输出的调试区信息,可以得到进程,线程和调试状态信息。并且可以利用IDE环境,动态选择开关调试区信息,但是打印驱动程序输出调试信。必须借助于至少一种外设显示调试信息,比如串口或者网卡或者其他通过调用RETAILMSG或者DEBUGMSG完成,不影响OS的运行,保证驱动程序运行的真实性,动态输出设备的状态信息,调试相对简单,也是最广泛使用的一种调试方法。
4.2 核心调试工具(Kernel Debugger)
核心调试工具将会禁止所有硬件中断,挂起操作系统,因此可以单步调试OS或者核心代码,可以访问堆栈信息,但是必须在Platform的环境下,利用至少一种外设进行通信。
4.3 硬件辅助调试方法
利用硬件调试工具可以观察物理设备的真实状态,一般常用的方法可以利用JTAG工具实时查看CPU内部寄存器,利用逻辑分析仪或者示波器实时查看物理外设的输入输出状态。利用指示LED来显示驱动程序实时状态信息。
4.4 Visual Studio调试
可以利用VS内置的调试工具进行单步跟踪,状态调试等。
5 测试驱动程序
驱动程序经过调试以后就需要对驱动的功能进行测试。其常用的方法如下:
1) 写一个应用程序来测试驱动程序的正确性
2) 模拟各种可能发生的硬件输入状态来测试驱动程序的正确性
3) 利用Windows CE自带的测试工具CETK来测试驱动程序的性能和完备性
6 驱动程序的集合和
6.1 驱动程序集成
驱动程序经过调试和测试确定其正确性后,就可以对驱动程序进行集成了。具体过程如下:
1) 在BSP的Driver目录下建立新的驱动文件夹MyDrv
2) 实现MyDrv驱动以及相关的DEF文件
3) 如果需要用到硬件中断资源,修改原BSP中的相关中断处理函数OEMInterruptEnable,OEMInterruptDisable,OEMInterruptDone,OEMInterruptHandler
4) 在Platform.reg中,增加驱动程序相关项
5) 在Platform.bib中,增加驱动程序的相关注册表项MyDrv.Dll$(_FLATRELEASEDIR)MyDrv.dll NK SH
6.2 驱动程序
驱动程序进过集成以后就可以使用了,具体的过程如下所示:
1) 利用CAB Wizard生成.cab驱动包
2) 直接提供驱动程序文件夹以及相关注册表项和修改说明
7 总结
本为详细的介绍了,wince下驱动开发的流程,介绍了驱动程序开发到的详细过程,并详细说明了各个部分的实现和操作方法,使是初学者对wince下驱动程序的开发流程和一般的开发工具有了初步的了解。
DriverMax2.5小资料:
软件语言 英文
软件授权 免费软件
软件大小 1891KB
运行环境 Windows Vista/2003/XP/2000/ NT/ Me/98/
下载地址 省略/soft/44921.htm
DriverMax是专门备份/恢复Windows驱动程序的软件,当然它也可以备份/恢复Vista驱动程序。DriverMax能够找到电脑中所有硬件(例如显示卡、声卡、主板等)的驱动程序,然后让你选择对哪些驱动程序进行备份,当然你也可以备份系统中所有驱动程序。
DriverMax备份了驱动程序之后,备份文件保存方式有两种,一种是将驱动备份到指定的目录中,另一种是打包压缩成一个ZIP文件。如果你想节省空间,建议将驱动备份成ZIP文件加以保存。以后如果你想恢复系统中的驱动程序,只要运行DriverMax进行恢复操作,即可恢复之前的驱动程序。
下载和安装
DriverMax当前最高版本是2.5,请到省略/soft/44921.htm下载。下载完毕,点击压缩包中的drivermax_44921.exe文件进行安装;安装完成会自动启动DriverMax2.省略)即可。
注册邮箱最好使用国外的,例如yahoo(mail.省略)等邮箱,国内的网易163邮箱(mail.省略)也可以。注册完毕稍等片刻,到刚才填写的邮箱(例如)中就能收到一封邮件,内容包含一个注册码,回到DriverMax软件,点击“Enter registration code”输入该注册码,按“确定”后,该软件就变成正式版了,这样以后你就能永远免费使用该软件了!
备份Vista驱动程序
DriverMax备份/恢复驱动程序的操作非常简单,因为整个过程都会有操作精灵引导你,只要你按照提示进行操作即可!如果你想备份当前系统的驱动程序,请进入DriverMax主画面,单击“Export drivers”按钮,随之会启动操作精灵,出现一段说明。请点击“Next”,软件就会检查系统中所有的驱动程序,检查完毕会弹出一个画面,显示一张驱动程序清单。如果你不知道应该备份系统中哪些有用的驱动程序,建议选择画面右下方的“All drivers”(图2),然后点击“Select all”按钮,这样就能备份系统中所有的驱动程序,不至于漏下某个驱动程序没有备份!
如果你想对系统中驱动搜索结果进行修改,即希望指定搜索当前系统中的某些驱动程序,请单击右下角的“Settings”按钮进行设定。在弹出的“Display settings”对话框中,设定过滤驱动程序的5项条件(图3),例如你选择“Only show driver versions currently in use”,以后就会搜索、显示当前系统正在使用的驱动程序,设定完毕后单击“OK”返回到驱动程序清单画面;接下来,你可以勾选要备份的驱动程序,例如显示卡、声卡、主板芯片等,重要的必不可少的驱动都应该勾选;
勾选完毕点击“Next”,会弹出一个提示框,询问你如何保存驱动备份文件,你可以选择将驱动程序直接备份到某个目录中,或者将驱动备份成一个ZIP文件,注意如果你决定将驱动备份到指定的文件夹中,该文件夹必须是一个空目录,否则软件就会拒绝备份操作。
设定好保存方式和路径后,单击“Next”按钮,软件就会开始对系统中的驱动程序进行备份了;稍等片刻,备份完成,点击Close大功告成!
快速恢复Vista驱动程序
平时备份好系统中的驱动程序,对电脑用户来讲非常重要!因为以后系统一旦被病毒破坏崩溃了,就需要重新安装,接下来就需要重装驱动程序。
如果你想快速恢复Windows或者Vista驱动程序,可以运行DriverMax2.5,然后单击“Install drivers”,随后弹出恢复驱动操作精灵,按“Next”,选择从目录或者ZIP文件中恢复驱动程序(图5),然后根据提示即可恢复系统中原来的驱动程序。
方法1:
1·在联网状态下,访问设备提供商官网主页,找到驱动程序下载页面,选择合适的版本下载并保存到本地硬盘。
2·右击“我的电脑”,依次点击“属性”、“硬件”、“设备管理器”,在弹出窗口中找到需要升级驱动程序的硬件,卸载并重新安装设备驱动程序。
方法2:
在联网状态下,右击“我的电脑”,然后依次点击“属性”、“硬件”、“设备管理器”,在弹出窗口中找到需要升级驱动程序的硬件,右击,在弹出菜单中选择“更新驱动程序”。然后按照提示一步步操作。
升级BIOS:
关键词:PCI; vxworks;驱动程序;运动控制卡
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2012)29-6966-03
VxWorks是目前世界上用户数量最大的实时嵌入式操作系统, 它具有高度可剪裁的微内核结构、高效的多任务调度、灵活的任务间通信手段、快速灵活的I/O系统、确定的微妙级中断延迟时间等优点。
本文介绍了基于PCI 接口规范的通用运动控制卡在VxWorks下的驱动程序的设计。对其设计驱动程序需要对实时操作系统、实时软件设计、硬件设备有深入的了解。因此, 该设计不仅本身具有很高的应用价值, 也为实时驱动程序的设计提供了一个样例。
1 系统组成
在基于微机的数据采集、处理与控制系统中,计算机接口卡常常是其中的关键硬件设备。目前在运动控制领域,各类运动控制卡得到广泛运用,其中以工控机通过ISA或PCI等系统总线连接运动控制卡的主从式结构最为流行,由工控机发出控制指令和参数,控制卡根据接收到的指令及参数完成具体控制功能。由于PCI总线的高速和即插即用特性,使其取代ISA被广泛应用于高速数据采集与传输等系统中,有效地解决了实时采集、实时传输和实时存储等问题。
2 PCI 配置空间
PCI系统具有三种地址空间:存储器空间、I/O空间和配置空间。每个PCI设备都有64个配置双字用于实现配置寄存器,64个配置双字分为两部分,⑴PCI协议定义了开头16个双字的格式和用途,称为设备的配置头区域;⑵其它48个双字的用途是由设备指定的。目前PCI协议定义了两种头区域格式,第1类配置头区域用于定义PCI-PCI桥,而第0类配置头区域用于定义其它PCI设备。所有的PCI设备,包括PCI-PCI桥都必须实现下述配置寄存器:厂商标志、设备标志、命令、状态、分类码、版本标志和头区域类型寄存器。如表1所示为PCI配置寄存器。这些寄存器对编程访问PCI设备至关重要,我们就是利用vendor ID 和device ID来枚举出对应的设备,再进一步获得设备的其他信息的。
3 驱动程序的开发
VxWorks 提供在指定目标系统上运行的板级支持包(BSP),本文选用的是针对pentium的板级支持包。VxWorks是支持PCI总线的,提供了一些库函数专门用来访问PCI设备。为了调用这些函数以方便开发,需要包含如下头文件"iosLib.h"、"pciConfigLib.h"、"pciIntLib.h"、"sysLib.h"和"pciLocalBus.h",还需要导入sysOutLong()和sysInByte()等函数。在config.h里面定义INCLUDE_PCI以添加VxWorks对PCI的支持,还可以定义PCI_CFG_TYPE为PCI_CFG_FORCE、PCI_CFG_AUTO 或 PCI_CFG_NONE,我们一般定义为PCI_CFG_NONE,Vxworks只需把配置好的信息读出来就可以了。
针对PCI 总线结构的数据采集模块,其驱动程序的主要开发步骤如下:确定设备的PCI 配置信息确定设备的内部存储器、寄存器基地址及中断号设备初始化中断服务程序设备各功能函数。以下按照程序执行的顺序分步骤给出源代码,并加以详细的说明。
4 结束语
利用上文所述的方法编写的驱动程序,达到了本项目所要求的性能指标,系统经过实际验证是高速稳定可靠的,而且由于PCI总线的即插即用特性,不需要用户去手动跳线,极大得方便了使用。
参考文献:
[1] microsoft msdn[EB].2001.
2、选择添加本地打印机后点击下一步。
3、选择使用现有的端口后点击下一步。
4、选择打印机厂商和驱动程序后点击下一步。
5、打印机名称使用默认 ,点击下一步。
6、选择不共享这台打印机后进行下一步。