admin管理员组

文章数量:1532708

2024年4月4日发(作者:)

66・ 实验科学与技术 201O年2月 

基于嵌入式WinCE的USB摄像头驱动开发 

张禾,高凤水 

610500) (西南石油大学电子信息工程学院,成都

摘要:介绍了USB视频规范,给出WinCE环境下USB摄像头驱动模块的层次结构以及摄像头驱动的开发流程。文章主要 

对摄像头驱动中的重点函数进行了分析介绍,最后将该驱动移植到了WinCE嵌入式操作系统上,并在PXA270硬件平台下 

进行了测试。在实验葙上使用罗技快看Pro 5000和快看S 5500两种型号的摄像头,测试成功。结果表明该文编写的驱动符 

合USB视频规范。不依赖于摄像头的硬件,适用于所有符合USB视频规范的摄像头。 

关键词:嵌入式;Win CE操作系统;摄像头驱动;USB视频规范 

文献标识码:B 文章编号:1672—4550(2010)01—0066一o3 中图分类号:TP37 

Development of USB Camera Driver Based on Embedded WinCE 

ZHANG He,GAO Feng—shui 

(College of Electronic and Information Engineering,Southwest Petroleum University,Chengdu 5 10500,China) 

Abstract:This paper introduced the hierarchical structure of USB camera driver module,as well as the development process of Cam- 

era drivers.The main functionof the driver Was analysed.Finally,the driver Was embedded in operating system and tested in the 

PXA270 p]affo ̄One sueeeed in testingdriver by suing both Logtech QuickCam Pro5000 and S5500 camers.The aresults show that 

the driver accords with the USB video criterion,and depends on the camera software.Thus,it is suitable for all the ealneHl¥,which 

agrees with the specification. 

Key words:embedded;WinCE;camera driver;USB video speciifcation 

1 引 言 

WinCE 5.0是一个32位、多任务、多线程的 

实时嵌入式操作系统。USB摄像头以其良好的性 

规范,本文编写的驱动程序适用于罗技系列的所有 

摄像头。采用PXA270为实验的硬件平台。 

2 USB视频规范 

USB视频类规范是一个新的标准,由USB—IF 

能和低廉的价格得到了广泛的应用。同时因其灵 

活、方便的特性,易于集成到嵌人式系统中。 

采用USB摄像头可以在WinCE操作系统下方 

便地得到实时图像¨一’j。但是由于嵌人式硬件环境 

的多样性以及WinCE 5.0对USB设备驱动开发只 

所属的USB设备工作组负责,对象是所有传输视 

频流的设备,如PC摄像头、视频摄像机/录像机、 

媒体转换器以及电视调谐器等。视频的格式相当灵 

活,可以是无压缩的,也可以是MJPEG、MPEG一 

1/2/4或DV(包含元数据)格式。在这个新规范中, 

设备都被看作是终端和单元。终端是指数据源,如 

CCD/CMOS感应器、液晶显示器、存储设备等; 

单元是指担当逻辑传输或数据路由的设备,如输人 

提供了一些底层支持,摄像头厂商尚未提供 

WinCE5.0下USB摄像头的驱动,而且现有的很多 

摄像头都依赖于摄像头的硬件,一种驱动只支持一 

种摄像头,所以如果编写的驱动程序可以不依赖于 

任何一款指定的摄像头,同时不必暴露任何私有接 

口给摄像头,这样的驱动程序将具有很大的实际应 

用价值。为了解决这一情况,USB组织发布了USB 

视频规范,按照规范编写的驱动程序完全符合以上 

 

的要求。本文选择了罗技摄像头,它支持大多数的 

来自摄像头的视频信息。

控制接口用来控制摄像头的参数,例如明暗 

度、对比度以及设置和视频流有关的视频格式、帧 

收稿日期:2009—07—06 

作者简介:张禾(1973一),男,大学本科,副教授,研 

大小、帧频率和压缩比等参数。此外,控制接口还 

究方向:测控技术。 

选择器、数字信号处理器等。终端和单元按照信号 

在设备内的逻辑流程连接在一起。 

USB视频规范介绍了两种接口,一个是控制摄 

像头的控制接口,另一个是流接口用来发送和接收 

可以请求摄像头传递静态数据帧。 

第8卷第1期 Experiment Science&Technology ・67・ 

3 WinCE驱动模型 

基于WinCE平台的两种专用的驱动模型:本 

机设备驱动程序和流接口驱动程序¨ 。流接13驱 

动程序是一种可以定制接口的驱动模型,一般由设 

备管理器负责管理。它把设备管理器和应用程序的 

命令转换成所控设备的适当动作所需信息。流接口 

驱动程序需要实现一组固定的流接口函数,供给 

WinCE5.0系统内核使用。 

图1 流接口驱动程序与操作系统和硬件的关系 

由图1可见:流接口驱动程序由设备管理器统 

加载、管理和卸载;应用程序使用WINCE操作 

系统的文件API函数和流接口进行通信,从而达到 

应用程序访问驱动程序及操作硬件的目的;流接口 

驱动程序具有固定的1O个人口点函数,例如XXX 

Init,XXX

Open,XXX

—.

IOContml,XXX

—. 

..

—.

Read等。WINCE的文件系统通过这些人口点函数 

与流接口驱动进行通信。对于USB摄像头驱动来 

说,除上面10个入口点需要实现外,还需要实现 

3个额外的人口点: 

(1)USBInstallDriver:设备第一次加载的时候 

由系统调用,用来安装注册表以便搜索设备。 

(2)USBDeviceAttach:设备加载的时候由系 

统调用。 

(3)USBUnlnstallDriver:设备移除后,清除由 

第一个函数写入的注册表配置。 

4驱动程序的开发 

4.1驱动程序的加载 

设计驱动程序时,必须确保所开发的驱动能够 

成功加载,为此,必须完成3个接口函数:USBIn— 

stallDriver、USBDeviceAttach、CAM

Init o 

1)USBInstallDriver。这个函数在驱动程序 

DLL被加载的时候会被调用,但是不是任何情况下 

加载驱动都会调用这个函数人口,当系统能够根据 

注册表定位到驱动程序dll并且成功加载的话,这 

个函数就不会被调用了。 

USBInstallDriver函数的作用是进行与USB设 

备相关的注册表操作,主要的语句如下: 

bSuccess=(1pfnRegisterClientDriverlD)(wsUsb— 

DevicelD); 

bSuccess=(1pfnRegisterClientSettings)(szDriver- 

LibFile, wsUsbDeviceID, NULL, 

&usbDriverSettings); 

即先注册设备类别,然后是设备细节。这2个 

与注册有关的函数是由USBD接口提供的。 

2)USBInstallDriver成功之后,系统调用USB. 

DeviceAttach函数。在USBDeviceAttach函数中,主 

要进行3个工作:(1)USB设备接口配置的枚举 

和保存;(2)调用ActiveDevice函数激活一个流接 

口; (3)调用RegisterNotmcati0nRoutine函数注册 

个设备状态回调函数,这里被注册的函数的主要 

功能是在设备移除时通知驱动程序停止设备,并释 

放其占用的资源。 

3)CAM—Init函数被调用,参数就是Ac— 

tiveDeviee函数的参数1,依据这个参数,在注册 

表中找到USB驱动程序的上下文,并返回,这样 

即可找到USB驱动的上下文,然后交换数据。 

4.2驱动程序的卸载 

当设备移除时,驱动程序会调用USBUnInstall- 

Driver和CAM—Deinit接口,清除设备加载时写入 

的注册表设置,释放设备所占用的资源。 

4.3实时视频数据的获取 

本驱动程序在CAM—IOCon ̄ol流接口中定义 

了很多IOCTL命令来查询、设置摄像头属性,读 

取静态和动态图像数据。 

DWORD CAM

IOControl(DWORD dwOpen,DWORD dw— 

Code,PBYTE pin,DWORD dwln,PBYTE pOut,DWORD 

dwOut,DWORD pdwBytesWritten){ 

pDrv=(PDRVCONTEXT)dwOpen; 

switch(dwCode){ 

case IOCTL

CAMERA

DEVICE

QUERYPARAMETERAR・ 

ARY: 

//查询摄像头所支持的特性列表,例如:色调、饱和度、亮度、 

对比度等。 

case IOCTL

_

CAMERA

DEVICE

QUERYVIDEOFORMATS: 

//查询摄像头所支持的视频格式。 

case IOCTL

_

CAMERA

DEVICE

STARTVIDEOSTREAM: 

//指令格式的视频流请求。 

case IOCTL

CAMERADEVICEGETNEXTVIDEOFRAME: 

_——

//一旦流传输开始,驱动程序可以通过此命令请求视频数据 

的一帧。 

case IOCTL CAMERA DEVICE GETSTILLIMAGE: 

68・ 实验科学与技术 2010年2月 

//获得一帧静态图片。 

f 

现动态、静态图像的采集和显示。 

6结

罗技摄像头支持的视频数据格式有MJPEG、 

论 

本文先介绍了USB视频规范,结合USB罗技 

摄像头的驱动开发实例说明了USB驱动程序的开 

发流程和摄像头重点函数的实现和解释,最后讨论 

了驱动的移植和测试方法。 

参考文献 

[1]何宗键.WinCE嵌入式系统[M].北京:北京航空航 

天大学出版社,2006. 

MPEG一2、DV和无压缩的数据,对于每一种格式 

摄像头都可以返回各种分辨率的帧。例如,160 x 

120、320×240或者更好。本文采用MJPEG压缩 

格式,支持的分辨率有160×120、176×144、320 

×240等9种不同的大小 J。对于每一种帧格式和 

帧大小,摄像头都可以支持一种帧间时隙(视频图 

象流中两帧之间的时间间隔)的设置。当读取数据 

之后,就需要采用MJPEG的解压算法,还原压缩 

数据,显示图像。实验验证,已经实现了最高为 

30帧/s,大小为640 x480的图片的采集。 

[2]周立功.MagieARM270实验理论指导书[z].广州致 

远电子有限公司,2006. 

[3]周立功.PXA270&Windows cE 5.0实验指导[z].广 

州致远电子有限公司,2007. 

5摄像头驱动的移植和测试 叫 

为便于测试,摄像头驱动先移植到INTEL公 

司的PXA270实验箱上,该实验箱有较为完备的调 

试接口,如串口、网口和一些上传和下载的工具, 

有利于调试和测试。PXA270处理器是一个高度集 

成的片上系统微处理器,用在高性能、低功耗、便 

携、手持式设备中【to]。 

它支持一个USB host接口,兼容USB 1.1协 

[4]Jeffrey R.Windows核心编程[M].王建华,张焕生, 

侯立坤,译.北京:机械工业出版社,2000. 

[5] 张益贞,刘滔.Visual C++实现MPEG/JPEG编解 

码技术[M].北京:人民邮电出版社,2003. 

[6]潘宁,杨丹,宋恩民.WinCE下基于ARM的USB摄 

像头图像采集[J].微计算机信息,2008(7):272. 

[7] 西南石油大学电子信息工程学院.嵌入式实验开发 

装置RC—ARM一11I(270RP)WinCE实验教程[z]. 

成都:西南石油大学,2009. 

议,可挂接低速或高速设备。驱动模块单独编译, 

编译后成为webcam.dU,将此dll文件添加到 

WinCE操作系统镜像中,然后重新下载操作系统 

镜像到PXA270实验箱上,最后使用EVC++编写 

应用测试程序,调用webcam.dll中的函数可以实 

(上接第39页) 

O.6 

[8]黄文礼.基于ARM9一WinCE的多媒体监控系统的设 

计[D].南昌大学,2007:58—62. 

[9]孙鑫,余安萍.VC++深入详解.北京:电子工业 

出版社,2006. 

[10] Intcl公司,Intel⑩PXA27x Processor Family 

Developer's Manual[z].[s.1.]:lntel,2004. 

捷、基体干扰少、节省试剂等优点,解决了M— 

EDTA络合状态下EDTA的测定问题,是一种既实 

0.5 

O.4 

用又灵敏的测定方法。可适用于各种生活用水及各 

厂矿的工业废水中微量EDTA的分析检测。 

参考文献 

[1] Gismera M J,Lacal J.Oa Silya StRay of 哪e1}ak幻 - 

tionation in fiver sediments.A comparison between kinet— 

O.3 

0.2 

O.1 

O.O 

c/00一 otol-L一 ) 

ic and sequential extraction procedures[J].Environ Pol- 

lut.2004,127(2):175—82. 

图1 EDTA的标准曲线 

[2]吴性良,朱万森,马林.分析化学原理[M].北京: 

化学工业出版社,2005. 

铵盐的阳离子成离子缔合体而被萃入有机相,而 

EDTA与多种重金属离子的络合物在强酸和多种助 

萃络合剂的作用下被破坏,金属离子被萃于有机 

[3] 陈伟.阻抑动力学光度法间接测定痕量EDTA[J]. 

分析实验室,2006,25(1):87—89. 

相,EDTA不被萃取留在水相中,由此排除了重金 

属离子对水样中EDTA测定的干扰。 

应用该实验方法测定对水样中微量EDTA,分 

析步骤清晰,具有取样量少、操作简单、方便快 

[4]Zhang Xiang—Yu,Keiichi,Atsushi.Simultaneous ion- 

pair solvent-extraction preeoncentration of 12 elements in 

naturl water samlaies for the determination by inductively 

coupled plasma atomic emission spectrometry[J].Ana- 

lyticaL Soences.1997,13:891—895. 

本文标签: 摄像头设备驱动驱动程序接口