解码芯片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程序能正确找到所依赖的库文件。