第18卷V01.18第7期No.7电子设计工程ElectronicDesignEngineering2010年7月Jul.2010基于WinCE的嵌入式视频数据采集系统设计李文新,王广龙,陈建辉,楼杨(军械工程学院导弹工程系,河北石家庄050003)摘要:以嵌入式微处理器S3C24加为系统硬件平台核心,以WinCE操作系统为软件平台,构建了一种微型化的嵌入式视频数据采集系统。选择CMOS图像传感器OV9650为图像采集单元。设计了摄像头接口电路。采用l片输出电压为1.8V及l片输出电压可调节的ASlll7完成摄像头供电电路设计。系统Boatloader开发采用Nboot+Eboot的方案,Nboot完成初始化Flash等硬件,并将Eboot搬到SDRAM运行。而Eboot完成内存地址的映射以及其余设备的初始化、加载NK.bin内核文件。OV9650流接口驱动程序的设计部分,主要论述CISjOControl()、CamInit()等流接口函数的编写。在EVC开发环境中,基于MFc编程完成了系统应用软件开发,主要用Creatfile()函数打开驱动程序,调用DevieeloControl()函数来实现视频数据的采集与停止等功能。实验表明:OV9650驱动程序工作良好。采集到的视频数据清晰连续。关键词:嵌入式系统;视频数据采集;WinCE;¥3C2440;0V9650中图分类号:’11P274.2文献标识码:A文章编号:1674—6236(2010)07-0139—04onDesignofembeddedvideodataacquisitionsystembasedLIWinCEWen-xin,WANGGuang-long,CHENJian-hui,LOUYang(DepartmentofMissileEngineering,OrdnanceEngineeringCollege。Shijiazhuang050003,China)Abstract:Inthisminiatureembeddedvideopaper,adataacquisitionsystemwasconstructedusingembeddedmicroprocessorS3C2440assystemplatformCOreandWinCEoperatingsystemOV9650W88softwareplatform.ACMOSimage∞nsordesigned,andselectedasimageacquisitioncell,correspondingwithoutputvoltage1.8VandanotherwasinterfacecircuitWiltsvoltageregulatorchipASIl17forwithadjustedvoltageweredesignedforthepowerresourcethecamera.ThedesignofBeotloaderdesignedfollowingtheideaofNboottoandEbeot.NbootWasusedtoinitializetheFlashmemoryandand1900ttheEbeottoSDRAM。EbootWasusedmapthememoryaddress,initializeotherhardwareloadtheNK.binetc.InthedesignofOV9650driver,streamfunctionssuchwagCIS_IOControl(),Cam_Init()weredetailed.SystemapplicationsoftwaredevelopedintheIDEEmbeddedVisualC++basedtoMFC,Creatfile()WaSusedtoopenthecameradriverandDeviceIoControl()wagcalledcapturethevideodataandstopit.etc.ExperimentsshowthattheOV9650driverworkswellandthevideodatacollectedisclearandcontinuous.Keywords:embeddedsystem;videodataacquisition;WinCE;¥3C2440;OV9650随着嵌入式技术的不断发展,各种嵌入式微处理器和控制器不断出现,并广泛应用于工控、通信、PDA、安保等1系统结构框图及视频数据采集原理视频数据采集系统结构如图1所示。领域[1-5]。基于ARM920t内核的嵌入式微处理器S3C24加,以其良好的数据处理能力、低功耗、小体积、支持多种嵌入式操作系统(如WinCE、Linux)、集成多种外设(如12C控制器、LCD控制器等)等优点,广泛应用于手持设备等fq。WinCE操作系统具有内核可剪裁、实时性好、支持多种通信、模块化设计、H亘歪囱I2CCAMIFCodei具有丰富的API等特点,广泛用于嵌入式实时操作系统。这里提出的嵌入式图像数据采集系统是某“纳米技术与微系统”实验室开发的“嵌入式传感测控系统”中实现图像采集功能的子系统.该系统是以¥3C2440为硬件核心,以WinCE为软件平台.能实时、连续地采集清晰的视频数据。蹦^|『.面磊牛画圃器i图l视频数据采集系统结构框图收稿日期:2009—12--08稿件编号:200912024作者简介:李文新(1985一),男,湖南新化人,硕士研究生。研究方向:现代测试技术厦仪器。-.139-万方数据《电子设计工程)2010年第7期从图l中可以看出,系统由嵌入式微处理器¥3C2440、存储器(包括NandFlash和SDRAM)、以太网接1:3、CMOS图像传感器OV9650、USB主/从口、SD卡、JTAG接口、电源与复位电路、LCD与触摸屏组成。其中。S3C2440为整个系统的硬件核心,负责采集来自图像传感器的数据。控制给各种外设等。NaiadFlash存储器与SDRAM构成了系统的存储器,其中SDRAM具有掉电数据不保存的特点,只用作系统内存,用于运行主程序等。而NandFlash则具有掉电保存数据的特点,用于存储操作系统内核,引导加载程序(Bootloader)、用户应用程序等。CMOS图像传感器及其接口电路用于采集视频数据。LCD与触摸屏构成人机交互模块。起到数据交互的作用,相当于PC机的键盘和液晶。JrrAG接口用于系统硬件调试和下载Bootloader程序。USB主口不但可以用于外接U盘和移动硬盘等,还可外接带USB接口的鼠标,在触摸屏校正出现大的偏差无法校正时,用鼠标辅助校正。USB从口用于下载WinCE内核文件NK.bin。电源电路包括为微处理器与相关外设提供电压(如微处理器的1.3V内核电压、LCD的3-3V背光电压).以及为摄像头供电。复位电路用于出现故障时系统重启。以太网接口用于扩展系统功能.在视频数据采集的基础上,通过以太网,可以编程实现视频数据的网络传输。视频数据采集原理如下:应用程序通过文件系统的API调用摄像头驱动程序的流接13函数发送命令。驱动程序将接收到的命令转化为对外部设备的相应操作。实现对处理器的理等操作。图像传感器接收由处理器的12c总线发送的配置数据。正常工作之后将图像数据和VSYNC、HREF、PCLK3个时钟信号发送到处理器的CAMIF单元中.2条DMA通道将采集到的图像数据通过系统总线保存到内存的帧缓冲区中,帧缓冲区的图像数据能够被流接13驱动函数读取。摄像头接口电路如图2所示。本系统选用130万像素的一』盯№N叻D【豢臣篆臣豢簪一图2摄像头接口电路—140一万方数据CameraControlBus,SCCB)接13实现对其控制。OV9650支持SXGA、VGA、QVGA、CIF等格式,8位数据输出格式,可以是YUV/YCbCr(4:2:2)、GRB(4:2:2)和RawRGB3种。OV9650内部主要包括l300xl028的图像传感器阵列、模拟信号处理器、ADC、DSP、数字视频端VI、SCCB接口、定时信号发生器和输出格式器。数据输出位Y0只在RAWRGB数据时用作LSB,而Y1只在RGB数据时用作MS,这里都不使用,而用到的主要引脚有:RESET为重置位。用于清空所有的寄存器并重置为默认的值,高电平有效:HREF为内部参考电压引脚。为器件提供参考电压:PWDN为关闭电源模式选择位,高电平有效,为0时是正常模式.为l时电源关闭模式;SIO—D为SCCB串行接13数据I/O。SIO—C为串行接口时钟输入引脚;Y[2:91为数据输出位,共8位;VSYNC为垂直同步输出引脚:PCLK为像素时钟输出引脚。XCLKl为系统时钟输入引脚。OV9650的核心供电电压为1.8V.模拟输入的供电电压为2.45—2.8V。I/O121的供电电压可以为2.5—3.3V。本系统设计中,摄像头供电电路如图3所示。采用电源转换器ASIll7为摄像头提供1.8V和2.8V电压.其中2.8V电压是通过可调压器件分压得到。IJl6Asl”7-18VDDl.8图3摄像头电源电路系统的软件设计应当包括两部分:BSP的开发与应用程序的开发。本文分别从这两个方面简单论述,BSP的开发主Bootloader的开发BSP的开发一般包括3个方面的内容:Bootloader程序设计、OAL层及驱动程序开发。Bootloader是操作系统内核运行之前运行的一段小程序,用于初始化系统的硬件设备,如初始化MMU、屏蔽所有中断、初始化NandFlash等.建立系统的内存空间映射,从而将系统的软硬件环境带到一个已知的状CAMIF单元和图像传感器设备的初始化、I,o控制和电源管2摄像头接口及其电源电路CMOS摄像头OV9650。通过串行摄像头控制总线(Serial3系统软件设计要介绍Bootloader程序设计及0V9650驱动程序开发。3.1李文新,等基于WinCE的嵌入式视频数据采集系统设计态。为操作系统内核的最终调用准备正确的环境。最后Bootloader把操作系统内核映像加载到RAM中。并将系统的控制权传递于它.其作用类似于基于X86的PC中的BIOS。本系统设计的Bootloader。采用Eboot+Nboot的形式,支持USB从机下载通信手段和Nandflash存储介质。NandFlash不支持xip,故必须有一个可执行的程序将烧写在其中的Eboot搬到SDRAM中。Nboot~般配合Eboot一起使用。Eboot与Nboot同样为启动代码。但是Eboot的大小远超过4KB,故不能直接将Eboot存放在block0中。Nboot的作用是初始化Flash等硬件,将Eboot搬到SDRAM运行。而Eboot则负责内存地址的映射以及其余设备的初始化、加载NK.bin内核文件等。Nboot与Eboot在其中的位置如图4所示。图4Nboot。Eboot在NandFlash中的位置3.2oV96卯驱动程序的开发WincE的驱动程序按不同的分类方式分为:本机驱动和流驱动。而0V9650驱动程序则属于流驱动程序。流接口驱动程序由Device.exe统一加载和管理;用户编写的应用程序通过使用WinCE操作系统的文件API函数如CloseHandhr()函数、CreateFih()函数等与流接口进行通信,达到应用程序访间驱动程序最终操作硬件的目的。流接口驱动程序具有固定的入口点函数。WinCE的文件系统通过这些人口点函数与流接口驱动进行通信。OV9650流接口驱动程序的入口点函数包括:CISInit,CIS_Deirtit,CISOpen,CIS_Close,CIs_IOControl,CI殳Read.CIS_Write,CISPowerUp,CIS-PowerDown等,CIS前缀表示设备的名称。驱动程序首先调用VirtualAlloc()函数来完成将物理地址映射到虚拟空间内同。以申请摄像头12C寄存器地址对应的虚拟地址,随后初始化12C.通过下列语句打开12C,并设定其访问权限。万方数据pCIS一>h12C=CreateFile(L“12C0:”,/,咒接1:2名GENERIC—READIGENERIC_WRITE,,,表示文件内容可读,可写FILE_SHARE_READIFILE_SHAREWRITE。//表示其他进程打开该文件时.可读/可写NULL。OPEN—EXISTING,//打开已存在的文件0。0);接着调用Cam_Init()函数,该函数主要负责摄像头的一些硬件初始化工作。包括:摄像头与¥3C2440连接的GPIO的初始化、时钟的初始化等。随后调用InitInterruptThread()函数,初始化中断线程,通知系统注册中断;调用CreateEven()函数创建一个CameraEvent事件。在CameraCaptureThread()函数中。调用WaitForSingleObject()函数来等待CameraEvent事件的发生。这里重点说明CISIOControl()函数。该函数主要用于向设备发送一个命令。应用程序使用DevicelOControl()函数来通知WinCE调用这个函数.通过参数dwCode通知驱动程序要执行的操作。该函数通过swish()语句为用户提供能操作的语义.以下给出实现播放采集的MPEG4视频数据和退出驱动、停止采集功能的关键代码,“……”表示省略部分代码。switch(dwCode){CAMIOC阻MOVIE_START://播放采集的MPEG4视频数据IOCTL_CAM_CONT:RETAILMSG(MSC—EN-l,(7I'EXT(“CAMERA:IOCTL-CAM_CONT(MOVIE-‘汀ART)№”)));s2440INT一>INTMSK&=一(1<<IRQ.-CAM);114吏.能视频采集中断s2年40INT一>INTSUBMSK&=~((1<<IRQ_SUB_CAM_P)I(1“IRQ_-SUB—CAM_C));CAMj【OCTL_MOVIE_STOP://停止播放MPEG4视频数据.关闭IOCTL_CAM_STOP:RETAILMSG(MSG_EN—l,(TEXT(“CAMERA:IOC7I’I。CAM-ST0n舳”)));,,以下语句为取消视频采集中断s2440INT一>INTMSKI_(1<(IRQ.CAM);s2440INT一>IN7ISUBMSKJ-((1<<IRQLSUILCAMP)I(1<<IRQ_SUB—CAMC));if(s2440INT一>INTPND&(1<<IR钆CAM))s2舭10INTL>INTPND|.(1<<IRQCAM);s2440INT->SRCPNDk(1<<IRQI.cAM);s2440INT一>SUBSRCPNDk((1<<IRQSU8_CAMP)I(1.<<IRQ^SUBCAM—C));-14l一《电子设计工程)2010年第7期CloseHandle(Cameralllread);,/关闭视频显示线程句柄CameraThreadVirtualFree((void*)s2440IOP,sizeof(IOPreg),MEM_RE·LEASE);,/以下语句为释放相关内存VirtualFree((void*)s2440CAM,sizeof(CAMreg),MEM—RELEASE);VirtualFree((void+)s2440INT,sizeof(INTreg),MEM_RE-LEASE);……l驱动程序编写完成后。通过DEF与Sources文件的编写、流驱动的编译以及加载该驱动进入WinCE内核.则直接可以通过应用程序调用该驱动。3.3应用程序开发应用程序开发在可视化集成开发环境EmbeddedVisualC++中完成.主要基于MFC编程用C++语言实现。通过给“打开”按钮添加单击事件代码。实现对驱动程序的打开操作。打开驱动程序通过以下语句实现。if语句用于判断m_hFile的初始值是否为l,为l则关闭摄像头驱动,重新赋值为l。CreateFile()函数用于打开驱动,并将结果返回给操作句柄。if(m_hFile!=INVALID_HANDLE_VALUE)//m_hFile为打开摄像头驱动返回的句柄.{CloseHandle(m_hFile);m__hFile=NULL;lm_hFile=CreateFile(—T(“CISh”)。GENERIC_READGENERIC—WRITE,0,NULL,OPEN—EXIsrnNG,O,0);接着。给“显示”按钮添加单击事件代码。主要是通过DeviceloControl()函数调用CIS_IOControl()函数中的CAM_IOCTL-MOVIEjITART来实现。其代码如下:BOOLret--0;,,初始化ret为Oret=::DeviceIoControl(m_hFile,CAM—IOC7吐MOVIE—sTART,NULL,NULL,NUU,NULL,NULL,NULL);,,调用CISIOControl()函数中的CAM—IOClrI。MOVIE—START.即播放视频给“返回”按钮添加单击时间响应函数代码。通过调用CIS_IOControl()函数中的CAM_IOC7nMOVIE_STOP,实现对驱动程序的关闭。其实现方式跟“打开”按钮基本一样。这里不再赘述。当然,返回按钮还应添加CDialog::OnCancel()语句来返回到系统主界面。4视频数据采集实验结果应用程序开发完成后,单击“打开”按钮,弹出“打开CISl成功”对话框,如图5所示。表明摄像头驱动打开成功。单击“显示”按钮,在右边的视频显示区.能实时显示动态的视频数据,如图6所示。实验证明,摄像头驱动工作良好,实时数据采集的“纳米技术与微系统”墙面上的展板画面比较清晰.-142-万方数据网5打开OV9650驱动图6视频数据实时采集界面达到了预期效果。单击“返回”按钮,视频显示画面顺利关闭,返回主界面成功。5结束语以嵌入式微处理器¥3C2440为硬件核心.以WinCE嵌入式实时操作系统为软件开发平台,以EVC为集成开发环境,完成系统的硬件设计。BSP的开发和应用程序设计。在开发平台上能顺利打开驱动程序.顺利采集到实验室的展板图像并实时连续播放视频数据.表明0V9650驱动程序工作正常,软硬件设计合理。下一步工作主要是采取合适的视频编码算法如H.264、M-JPEG等,通过以太网实现视频数据的网络传输。实现视频远程监控功能。参考文献:的设计叨.安防科技,2009(6):28-30.与实现叨.沈阳大学学报,2009,21(3):108—1lO.通大学.2008.【4】谭云福,张海燕.一种嵌入式网络视频监控系统的研究与实现[J】.微计算机信息,2009,25(6—2):108一llO.子器件,2009,32(3):646—648.电路12c驱动程序开发叨.电子测量技术,2009,32(10):73-76.设计阴.仪器仪表用户,2009,16(3):98-99.【l】周培斌,苗长云,武志刚.一种基于以太网的视频监控系统【2】赵立辉,霍春宝.基于ARM9的远程视频监控系统的设计【3】刘万志.基于ARM9的图像采集系统设计【D】.北京:北京交【51查婧,刘波,曹剑中.嵌入式视频采集与网络传输系统[II.电【6】李文新,王广龙,陈建辉,等.基于WinCE的数字罗盘集成【7】黎燕霞,李扬,刘奕宏,等.基于¥3C2440的视频采集驱动基于WinCE的嵌入式视频数据采集系统设计
作者:作者单位:刊名:英文刊名:年,卷(期):
李文新, 王广龙, 陈建辉, 楼杨, LI Wen-xin, WANG Guang-long, CHEN Jian-hui, LOU Yang
军械工程学院,导弹工程系,河北,石家庄,050003电子设计工程
ELECTRONIC DESIGN ENGINEERING2010,18(7)
1.黎燕霞;李扬;刘奕宏 基于S3C2440的视频采集驱动设计[期刊论文]-仪器仪表用户 2009(03)
2.李文新;王广龙;陈建辉 基于WinCE的数字罗盘集成电路I2C驱动程序开发[期刊论文]-电子测量技术 2009(10)3.查婧;刘波;曹剑中 嵌入式视频采集与网络传输系统[期刊论文]-电子器件 2009(03)4.谭云福;张海燕 一种嵌入式网络视频监控系统的研究与实现 2009(6-2)5.刘万志 基于ARM9的图像采集系统设计 2008
6.赵立辉;霍春宝 基于ARM9的远程视频监控系统的设计与实现[期刊论文]-沈阳大学学报 2009(03)7.周培斌;苗长云;武志刚 一种基于以太网的视频监控系统的设计[期刊论文]-安防科技 2009(06)
本文链接:http://d.g.wanfangdata.com.cn/Periodical_dzsjgc201007044.aspx