您的位置 首页 系统

WinCE的USB Camera流接口驱动开发

引 言WinCE5.0是一个32位、多任务、多线程的实时嵌入式操作系统。USB Camera 以其良好的性能和低廉的价格得到广泛的应用,同时因其灵活、方便的特性,

引 言

WinCE5.0是一个32位、多任务、多线程的实时嵌入式操作体系。USB Camera 以其杰出的功用和低价的价格得到广泛的运用,一起因其灵敏、便利的特性,易于集成到嵌入式体系中。

经过选用USB Camera能够在WinCE5.0下便利地得到实时图画。可是因为嵌入式硬件环境的多样性以及WinCE5.0对USB设备驱动开发只供给了一些底层支撑,摄像头厂商没有供给WinCE5.0下USB摄像头的驱动,因而开宣布WinCE5.0下USB摄像头驱动具有实践的含义和价值。本文正是针对这一状况,对WinCE5.0下USB设备驱动开发进行研究,并规划出根据流接口驱动模型的USB摄像头驱动程序。现在现已开宣布来的驱动适用于Zc030x PLUS这一系列的摄像头。Samstmg 2410为试验的硬件渠道。

1 WinCE5.0下USB总线驱动结构

USB体系由USB主机、一个或多个USB设备和物理总线组成。主机上又分两层:较高的包含USB设备驱动程序的软件层和主机操控器硬件层,也称作“适配层”。主机的首要任务是操控对USB设备的双向数据传输。物理总线是一组USB电缆,用来将操控器和外围设备衔接起来。WinCE5.0的USB体系软件由两层组成:USB设备驱动程序层和底层的由WinCE5.0完结的USB函数层。

USB设备驱动程序运用USB函数来树立与它们所操控设备的衔接,并对这些设备进行装备和通讯。较低的USB函数层自身又由两部分组成——较高的通用串行总线驱动程序(USBD)模块和较低的主操控器驱动程序(HCD)模块。HCD供给了笼统的主机操控器,且对主机操控器所见到的USB体系的数据传输进行笼统。USBD供给一个笼统的设备,且对USBD客户和USB设备功用部件之间的数据传输进行笼统。USB设备驱动程序运用USBD接口函数与外围设备进行通讯。

IHV和USB设备制造商运用USBD供给的函数来完结USB设备的驱动程序。OEM担任给根据WinCE的渠道供给HCD模块,这样相应的硬件才能与USBD模块进行交互。图1阐明晰与主机的USB硬件和外围设备相对应的软件的各个层。

2 WinCE5.0下贱驱动模型

根据WinCE5.0渠道的两种专用的驱动模型为:本机设备驱动程序和流接口驱动程序。本机设备驱动程序适合于集成到WinCE 5.0 渠道的设备;而后者则是一般类型的设备驱动程序,适用于大部分外围设备,如调制解调器、打印机等。对大多数USB外围设备来说,适用于选用流接口驱动程序模型来开发驱动程序。

流接口驱动程序是一种能够定制接口的驱动模型,一般由设备办理器担任办理。它把设备办理器和运用程序的指令转化成所控设备的恰当动作所需信息。流接口驱动程序需求完结一组固定的流接口函数,供给WinCE5.0体系内核运用。

USB设备的流接口驱动程序和WinCE5.0体系其他部件间的联系如图2所示。流接口驱动程序经过体系供给的文件体系API与运用程序交互;而体系经过设备办理器完结对流接口驱动程序的加载、卸载等办理作业;流接口驱动程序经过调用USBD模块供给的接口函数完结与底层USB设备通讯。

本文运用的流接口函数办法如表1所列。

USB设备驱动程序有必要输出的函数有:

①USBDeviecAttach()。当USB设备衔接到核算机上时,USBD模块就会调用此函数。这个函数首要用于初始化USB设备,取得USB设备信息,装备USB设备,而且请求必需的资源。

②USBInstallDriver ()。首要用于创立一个驱动程序加载所需的注册表信息,例如读/写超时、设备称号等。

③USBUninstallDriver ()。首要用于开释驱动程序所占用的资源,以及删去UsbInstallDriver ()函数创立的注册表等。

上述3个函数接口是一切的USB驱动程序有必要供给的,缺一不可。

别的较为重要的是USB设备驱动程序的注册表装备。一般的USB设备驱动程序的注册表装备在[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\口]下,每个驱动程序的子键都有Group 1_ID\Group2_ID\Group3_ID\DriverName 格局,设备的子键由供货商、设备类和协议信息经过下划线组成。表2列出了答应的组合。

以本试验所选用的USB Camera为例,该USB Cam-era的供给厂商ID为0X046d,设备ID为0x08a2,那么它的加载注册表应该写为:

需求留意的是,注册表的构成都是以十进制数值来标识的,也要留意十进制和十六进制之间数的转化。

3 WinCE5.0下USB摄像头驱动程序

试验运用的USB Camera是中星微公司的301芯片组的Zc030x,它的Vid/Pid为0x046d、0x08a2。因为实时图画数据传送量比较大,许多USB Camera产品在图画传输之前已进行了数据压缩处理,假如不知道解码算法,是没有办法在WinCE上取得图画的。在开发的时分首要运用SnoopyPro,它是一款能够剖析USB通讯数据的软件,辅佐进行Zc030x的驱动开发作业,最终成功开宣布Zc030x在WinCE5.0下的驱动程序。下面结合USBCamera驱动开发阐明驱动中的数据流向和必要的函数运用。首先是详细的注册表信息:

其间,hDevice是由体系供给的当时外设的句柄,经过它能够获取外设的信息,如VID、PID等;UsbFuncs是体系供给的指向USBD函数的函数指针,经过它能够调用USBD函数,如GetlsochResult、IssuelsochTransfer等;AcceptControl指针指向的bool值需求咱们确认,假如可控,令其为TRUE,否则为FALSE。

在这个函数里边,要做的作业包含确认外设是否可控,分配和填写设备的上下文内容,调用ActivateDevjce()函数在“Drivers\USB\ClientDrivers\Camera_Class”键值中注册分配到的设备上下文的指针(其间Camera_Class是对USB Camera的命名),一起ActivateDevice在注册表[HKEY_LOCAL_MACHINE\Drivers\Active\N]中挂号设备上下文的指针,其间N为整数,它是体系主动分配给此驱动的数字。体系在调用ActivateDevice()过程中,又会主动调用CAM_Init函数。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/297521.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部