1 引言
视频监控系统是日常生产生活中的重要辅助设备,应用十分广泛。当前视频监控系统正逐步由模拟化走向数字化。随着视频压缩技术和网络技术的发展,开发新一代的基于计算机网络和多媒体MPEG-4压缩算法的视频监控系统已成为整个行业技术发展的主要方向之一。通常人们采用DSP与MPEG-4算法结合的方案来实现,在编程的工作上有巨大的复杂程度,而且成本也过高。本文提出并研究设计一种基于MPEG-4专用压缩芯片MPG440、以嵌入式Linux为操作系统的视频监控系统方案,不仅开发便捷、成本低廉,而且实时性较好,适应范围广。
2 视频监控系统总体设计
整个系统的总体设计分为硬件和软件系统两部分。硬件设计部分主要包括以下几个模块:系统主控制器、压缩编码部分、网络接口模块、摄像机控制模块以及PC端监控部分。系统的主控制器模块主要有主控制芯片S3C2410、数据存储Nand Flash以及内存单元SDRAM组成。其中主控制芯片S3C2410主要负责系统的整体调度,为整个系统的核心;Nand Flash里固化了Linux的Bootloader、系统内核、文件系统、应用程序以及环境变量和系统配置文件等;SDRAM作为内存单元供系统运行时使用。压缩编码部分主要由视频数据采集芯片、MPEG-4压缩芯片以及SDRAM组成,负责将视频流转化为MPEG-4数据流。网络接口模块主要负责传输MPEG-4视频流。摄像机的控制部分主要由串口芯片组成,用于实现转发控制相机命令的功能。PC端则通过浏览器进行视频的监测并可发送控制命令对摄像机状态进行控制。主控制器通过对片内Nand Flash控制器的操作将Linux内核从Nand Flash中转入SDRAM中,Linux系统内核从内存单元启动。系统启动后,主控制器通过主机接口(HPI)控制MPEG-4压缩编码模块,系统结构框图如图(1)所示。
图(1) 系统结构框图
系统的软件部分主要由嵌入式Linux的Bootloader和内核的移植、MPEG-4压缩编码模块、CGI控制程序的实现以及MPEG-4解码程序的实现等四部分组成。Linux系统存储在Nand Flash中,负责系统软件的调度。MPEG-4压缩编码模块主要负责模拟视频流的采集和A/D转换,并将数字视频流压缩为MPEG-4数据流以便网络的传输。CGI控制程序主要实现摄像机的控制以及对MPEG-4视频流的相关设置。MPEG-4解码程序则是在PC端对通过网络取得的MPEG-4数据流进行解码播放。
3 系统硬件设计
3.1 主控制器模块
在整个系统中,主控制器是核心部件。文中选用的是三星公司的S3C2410,是一款基于ARM920T核的32位微控制器,其主频可达203HZ,性价比较高,能很好的满足嵌入式Linux系统的性能需求。其主要功能是在正常工作状态下调度控制整个系统工作,在系统上电时配置所有需工作的芯片的功能寄存器,并通过以太网控制器控制物理层芯片发送视频码流。
S3C2410通过片内的Nand Flash控制器和SDRAM控制器对外围的 Nand Flash和内存单元SDRAM进行控制,利用片内的标准UART实现对串口芯片的控制,通过片内地址、数据以及控制总线对片外的网络芯片进行控制。系统控制原理框图如图(2)所示。
3.2 压缩编码模块
压缩编码模块包括两部分:模拟视频信号采集和MPEG-4压缩模块。视频输入解码芯片采用TI公司的TVP5150,压缩编码芯片采用映佳公司的MPG440。TVP5105支持NTSC/PAL/SECAM等3种制式,实现模拟视频信号转换为数字并行信号ITU-R BT.601 或ITU-R BT.656码流格式,正常工作时的功耗仅为115mW。MPG440具有采用符合工业标准的16b/32b的双向主机接口,用来与视频解码芯片和主控制器进行通信,而且支持VGA、QVGA、CIF、QCI、D1五种分辨率模式。主控制芯片通过HPI接口实现MPG440寄存器的初始化配置,接收MPEG-4数据流,整个压缩编码模块硬件原理图如图(3)所示。
图(3) 压缩编码模块电路
解码芯片TVP5150的AIPIA模拟信号输入口与摄像头的信号输出端相连,并向压缩编码芯片MPG440传送视频信号。由于TVP5150分场同步脉冲和行同步脉冲,分别对应的输出端为VSYNC和HSYNC,MPG440根据与之相连的VSYNC和HSYNC信号线来实现图象的场同步和行同步操作,MPG440的视频信号输入数据线DATA_TV[7:0]与TVP5150的输出端YOUT[7:0]相连。MPG440将接收到的数据流传送到压缩编码单元,压缩编码后的视频数据存储到外部SDRAM中,TVP5150所需的14.31818M赫兹时钟频率由外部硬件电路提供,MPG440可通过I/O口对TVP5150的参数进行设置。MPG440通过片内的PDMA控制器和SDRAM控制器来实现对SDRAM的访问,并同时将数据流通过HPI总线发送到S3C2410以便通过网络进行传输。
3.3 网络传输模块
S3C2410通过地址、数据、控制线以及片选信号线对CS8900A网络芯片进行控制和通信。主芯片发送信号时首先置发送使能信号,数据发送信号端TXD0~TXD1与CS8900A的
TXD0~TXD1引脚连接,作为数据的发送通道。数据接收端RXD0~RXD1与CS8900A的RXD0~RXD1引脚对应连接,为数据接收通道。CS8900A由S3C2410选通信号线nCS3来选通,通过对CS8900A一系列寄存器的设置,可以访问CS8900A系统存储空间。CS8900A的INTRQ0端用来产生中断信号。
以太网控制芯片通过DMA通道进行数据的传输。首先设置好传输控制和传输地址寄存器的参数,依次从指定的数据存储区域读取数据,送入内部发送缓冲器中,用MAC对数据进行封状发送,并同时记录已发送完的字节数,等到整个数据块发送完毕。一组数据发送完后,请求DMA中断,由S3C2410进行处理。整个网络模块硬件设计原理图如图(4)所示。
4 系统软件设计
整个Linux系统由四部分组成:引导加载程序(BootLoader)、Linux内核(Kernel)、文件系统(filesystem)以及用户空间(user)。四者分别被存储在Nand Flash的四个分区模块中。本文中采用的是较节省空间的CRAMFS只读文件系统,而Bootloader以及内核Kernel等在移植完成后可不需动态改变,user用户空间则用来存放一些可以动态更新的配置文件,需要进行多次的读写操作,故可以使用支持动态擦写保存的JFFS2文件系统。由于Linux系统移植技术已经很成熟,本文中不再细述,下文主要介绍MPEG-4压缩编码和CGI模块的程序设计。
4.1 MPEG-4压缩编码程序设计
整个压缩编码模块完成了MPG440和TVP5150相关寄存器的配置,保证了MPEG-4数据流的正常输出。系统启动后,首先配置MPG440的寄存器,初始化完成后,通过I2C总线对TVP5150进行初始化配置。在压缩编码过程中,MPEG-4数据流接收存储程序由MPG440的数据流缓冲器标志信号来进行控制。当缓冲器满时,RISC_INT0置低,主控制器通过DMA通道把从MPG440的HPI接口接收过来的码流通过网络通道传输到PC端。其压缩编码模块程序流程图如图(5)所示。
4.2 CGI程序设计
CGI(Common Gateway Interface)是外部应用程序与万维网(WWW)服务器交互通信的一个标准接口。在本系统中,其工作过程如下:在监控端的PC机的浏览器中输入网络摄像机的IP地址,嵌入式网络服务器根据请求,将相应的控制页面反馈给IE浏览器,用户填写完表单,然后提交,CGI程序根据表单的信息,来处理相应的事件,如设置MPG440相关属性、相机的云台和镜头的相关操作等。CGI的控制原理图如图(6)所示。
CGI模块程序的设计主要包括如下几部分:WEB服务器的配置、html页面的编写、CGI程序的设计。嵌入式WEB服务器采用的是Boa,其配置是以文件的形式提供,放在文件系统中的/etc/httpd/conf/目录下面,其配置主要涉及以下几个方面:
(1)配置根文件的路径:“DocumentRoot /home/httpd/html/”,html页面必须放到此目录下。
(2)配置CGI程序所存放路径:“ScriptAlias /cgi-bin/ home/httpd/cgi-bin/”。
(3)配置环境变量:“SetEnv D_LIBRARY_PATH=/lib:/usr/local/lib:/usr/lib”,该变量将会被传送到CGI脚本和SSI页面,以保证CIG程序能正确找到所依赖的库文件。
网页页面的编写采用html与shtml相结合的方法。Html的解析速度较快,而shtml可以在普通网页中嵌入外部CGI程序,通过这种方式将系统的默认配置反馈给客户端。
CGI程序的设计采用的是C语言和shell脚本相结合的方式,其编写过程和Linux下其他程序的编写相同,在此不在赘述。
4.3 MPEG-4解码程序
由于映佳科技已经提供了供二次开发的MPEG-4解码插件OCX,OCX在PC机注册后可以方便的被网页调用,实现在PC端实时观看图象。
5 结语
本文叙述了一种基于S3C2410、MPG440以及TVP5150等芯片设计的嵌入式网络视频监控系统的实现方案。在测试过程中,该系统实时性好、稳定可靠、图象质量也比较优越,可广泛应用于银行、交通以及工业监控、视频会议等众多领域。
本文作者创新点:设计了一个基于S3C2410的远程图像监控系统的实现方案,详细讨论了
该文观点仅代表作者,本站仅提供信息存储空间服务,转载请注明出处。若需了解详细的安防行业方案,或有其它建议反馈,欢迎联系我们。