CAD/CAE/CAPP/CAM基于嵌入式Linux的视频采集与传输系统的设计(东北工业学院,武汉710072)摘要:介绍CMOS图象传感OV9640的性能特性,系统的总体结构,以及S3C2440与OV9640的插口电路,详尽论述在嵌入式Linux下的OV9640驱动程序的编撰方式,阐述在UDP合同下视频数据的网路传输的关键技术。实验及应用结果表明,在400Mhz的时钟频度下linux 视频采集 软件,VGA图象可以达到20左右的采集速度。关键词:嵌入式Linux;OV9640;视频采集中图分类号:TP393文献标示码:B文章编号:1671—3133(2007)03—0048—03videocollectiontransferssystembasedembeddedLinuxWangYing-nan,GaoMan-tun(ScooIMecatronicEngineering,NortwesternPoIytecnicaIUniversity,Xian710072,ChN)Abstract:TecaracteristicsCMOSimagesensorOV9640,testructurecircuitinterfaceintroduced,anddriversdetaiIedIyexpatiatedembeddedLinux.keytecnoIogynetworktransmissionaboutUDPprotocoIresuItsexperimentappIicationsowVGAimagesframespeedcan20FPS400MhzcIockfreuency.Keywords:EmbeddedLinux;OV9640;VideocoIIection序言伴随着多媒体技术的急速发展,视频大会、远程监控、可视电话等基于视频技术的应用愈加普遍,为了实现这种应用,获得视频数据是其中重要的环节。
本方案基于三星公司的S3C2440(CPU芯片富含视频采集插口)和CMOS图象传感,软件平台采用Linux-220操作系统内核,因为Linux操作系统免费开放的源代码、优良的网路支持性能、模块化的结构(可依据系统须要来配置软件模块),较好地满足系统的须要。CMOS图象传感以其低廉的价钱、低帧率、高集成度在多媒体、视频监控领域获得广泛的应用,本系统采用的图象传感芯片是Omnivision公司的OV9640,是一款高帧率的(130万象素)CMOS系统的硬件设计系统由嵌入式处理器、CMOS图象传感、存储器、以太网插口、串口和电源管理电路构成(见图1)。嵌入式处理器是美国三星公司的基于ARM920920T内核的16RSC嵌入式微处理器(机型:S3C2440),主要面向高性价比、低帧率的应用。为了处理图象数据,CPU的工作频度可达400Mhz。S3C2440的资源包括LCD控制器,SDRAM控制器,摄像头插口,三路串行插口,CBUS插口,USB插口,触摸屏插口。在处理器丰富资源的基础上,还进行相关的扩充,配置32MFIasROM和64MBSDRAM。在嵌入式处理器的控制下,CMOS图象传感(片上)采集到的数据经帧同步讯号触发形成中断后被拷贝到SDRAM。
之后通过网路插口借助UDP合同传输到远端做进一步处理。视频采集模块的设计图象传感插口电路是硬件设计的关键部份,怎样有效地采集数据也是系统的关键问题。视频采集CAD/CAE/CAPP/CAM现代制造工程2007模块采用OV9640图象传感[2,3],OV9640是日本Omnivision公司生产的CMOS彩色图象传感芯片。最大码率可以达到1280960。其内部结构包括:1280X960视频感光阵列、模拟讯号处理、10AD转换器(转换速度可达到12MHz)、时序发生器(生成控制讯号)、SCCB插口、数字讯号处理(DSP)、数据视频输出口等。OV9640图象传感采用24引脚CSP封装,引脚功能见参考文献[3]。OV9640集成了SC-CB(SeriaICameraControIBus)控制插口以访问片内寄存器。该芯片内部有138个设备控制寄存器,地址从0x00~0x8A,通过对片内寄存器的读写可以便捷地对图象帧频、曝光时间、增益进行控制。各寄存器的功能见参考文献[3]。该芯片支持RGB(4=)数据输出格式。因为S3C2440芯片有一个专用的视频插口,所以CPU可以直接和CMOS图象传感联接。
图象传感输出的数据及控制讯号包括象素时钟(PCLK)、水平参考(HREF)、帧同步(VSYNC)和数据总线(D0D7),分别和主处理器的相应讯号相连。PCLKHREF在处理器内部相遇后形成有效的象素时钟讯号,在有效时钟讯号的上升沿将数据锁定。模块和S3C2440插口电路如图2所示。在OV9640图象传感中,假如输出YUV格式Y9;假如输出RGB格式,则要用数据线Y0Y9。本设计中采用了YUV格式。网路插口的设计在S3C2440芯片上无网路插口,为了实现在系统调试时,下载操作系统内核、文件系统映像,及在系统运行中实现视频数据的网路传输等功能,所以在系统中扩充网路插口模块(DM9000)。该芯片为10M/100M以太网化学层芯片,具有通用的处理器插口,支持SA/uP插口,支持半双工流控制下的反向电流模式和全双工模式下的EEE802.3x流控制,支持联接状况变更、远程唤起可选的EEPROM配置。模块与2440插口如图3所示,其中:CMD为命令类型引脚,在高电平时为数据周期,在低电平时为地址周期。可通过CMD与数据总线访问内部54个控制及状态寄存AS9-AS8设置成高,SA7设置成低,SA6-4TD2-0匹配时,DM9000由AEN引脚惟一控制是否网路插口电路被选中。
据悉,DM9000工作在正常模式,TEST1-依次为1、1、0、0。为了保证DM9000收发正常,系统的软件设计软件平台由三部份组成:系统引导加载程序、嵌Linux内核、文件系统及应用程序。本设计圆通ARM平台移植u-boot-1.实现系统的引导加载,uboot不仅正常的引导嵌入式Linux外,还可以便捷地切换到下载更新模式,借助TFTP功能对内核映像及文件系统实时更新。嵌入式操作系统采用Linux220,开发模式采用最为普遍的寄主开发模式,即在宿主机上编译内核及应用程序,之后通过网口下载到目标平台上运行,通过复印终端复印调试信息。文件系统是嵌入式系统软件平台占用储存量最大的一部份,它储存了系统配置文件、系统程序和系统外设驱动程序。嵌入式Linux内核移植要工作就弄成在操作系统下编撰驱动程序。这儿注重介绍OV9640驱动程序的开发及视频数据的网路传输。OV9640驱动的开发在Linux下编撰OV9640CMOS图象传感驱动,首先要初始化OV9640。通过SCCB总线设置OV9640的工作模型,各类参数,分配连续显存空间,容量与采集图象的点阵数相匹配。之后用reguest_irg()函数为OV9640登记中断,其中断号为06。
当S3C2440捕捉到VSYNC讯号时触发中断,把一帧图象数据拷贝到用户空间。这么反复,视频数据源源不断地被采集到SDRAM。软件流程如图4所示。读OV9640流程CAD/CAE/CAPP/CAM用户进程是通过设备文件与硬件相联系,对设备文件的操作就是一些系统调用。要想把系统调用和设备驱动程序关联上去,必须用到一个特别关键的数据结构:structfie_operations{}。因而编撰设备驱动的主要工作就是编撰数据结构中定义的子函数,并填充fie_operations的各个域。摄像头fie_operations的数据结构如下。staticstructfie_operationscam_fops设备标志open:cam_open,/打开设备函数read:cam_read,/读设备函数ioct:cam_ioct,/控制设备函数reease:cam_reease,/编撰好成员函数后linux 软件,接出来编撰modue_initmodue_exit()。modue_init()是驱动程序的入口,当用insmod命令加载模块时手动运行。
此函数中包括:l)初始化CMOS图象传感;2)分配连续显存地址空间;3)注册设备文件;4)登记中断。modue_exit数在rmmod卸载模块时调用。函数功能包括:释放显存空间;释放中断;注销设备文件。至此,驱动模块编撰完毕,编译加载后,就可以像操作普通文件一样对摄像头进行读取数据。视频数据的网路传输UDP是面向数据报的传输合同层,它构建在IP合同之上,提供了一种无联接的高效率的服务。不保证数据的可靠并且信噪比短,很适宜实时性高而不要求数据绝对可靠的场合,因为视频数据的实时性强,数据量大,所以采用此合同传输数据数据传输过程中用到的基本套接字函数包括:l)intsocket(intdomain,inttype,intprotoco)用于创建一个套接字描述符,domain用于说明采用的通信合同,type指套接字类型,在这儿用数据报套接字(SOCK_DGRAM)。protoco一般设置成)intbind(intsockfd,structsockaddrmy_addr,intaddren)函数用于将本地地址与套接字绑定在一起。在主机有多个网络插口时使用,顾客机通常不用绑定。
3)intsendto(intsockfd,constvoidmsg,inten,unsignedintfags,structsockaddrto,inttoen)发送数据函数,成功则返回发送数据的厚度。4)intrecvfrom(intsockfd,voidbuf,inten马哥linux,unsignedintfags,structsockaddrfrom,intfromen)接收数据的函数,接收成功返回接收数据的厚度。给出了在UDP合同下数据传输的软件流程。UDP通信流程结语传统的视频采集通常是PC视频采集卡的方式,此方案容积大linux 视频采集 软件,成本高,因为PC总线插孔数量及采集q版道的限制,实现多点采集比较困难。本方案基于目前市场上主流的ARM处理器与嵌入式Linux操作系统,符合数字化、网络化的发展趋势,整个系统布线集中,智能化程度高,与传统的采集系统相比有