主页(http://www.pttcn.net):基于嵌入式系统的网络视频监控设备的设计与实现 【中国集群通信网】随着计算机技术及网络技术的迅猛发展,视频监控系统的发展趋势必然是全面数字化、网络化,即采用嵌入式网络摄像机,利用网络进行传输,并充分利用大规模集成电路和网络的科技成果,及体积小巧、性能稳定、通讯便利等特点,将使监控无处不在成为现实。而目前,我国基于嵌入式技术的网络视频监控系统刚刚起步,所以研究并开发一种基于嵌入式系统的网络视频监控系统具有很大的工程实际意义。 本文针对网络视频监控设备的实际应用需求,有机的结合图像采集和嵌入式系统两方面的新技术,设计了基于ARM 32位单片机系统和图像采集存储系统的嵌入式网络视频监控设备,并实现了视频数据的采集、压缩与网络传输。 2 ARM与嵌入式网络视频监控设备 32位嵌入式处理器中有MIPS、ARM、M-CORE等等。ARM(Advanced RISC Machines)处理器本身是32位系统,其内核具有性能高、成本低和能耗省的特点。 支持ARM的嵌入式操作系统主要有:Windows CE、Vxworks、uClinux等[1]。uClinux是“Micro-Control-Linux”缩写,意即“针对微控制领域而设计的Linux系统”[2]主要是面对没有MMU并且资源很少的嵌入式系统。高性能、高集成度将是嵌入式系统的发展方向[4]。“嵌入式网络视频监控设备”是第三代数字监控设备。 嵌入式网络视频监控设备体积小巧,具有图像采集、图像处理功能,带有以太网接口,TCP/IP协议栈,性能比较稳定,可直接与Internet互连,系统的扩展性很好,监控区域几乎无限,并且由于设备传输到网络上是数字化视频信号,可直接利用软硬件进行处理。同时因为设备本身带有操作系统,因此可以方便的进行后续开发,增加用户所需功能,提高设备的智能程度。 3 嵌入式监控系统硬件模块的设计 3.1系统总体设计 硬件系统可以分为三个模块:ARM集成开发模块、图像采集模块、图像存储控制模块。其中ARM集成开发模块模块的CPU采用三星的S3C4510B;图像采集模块中的CMOS图像采集芯片采用Ommvision公司的OV7620,镜头采用桑来斯公司生产的DSL103镜头;图像存储模块主要包括74LS244(八进制3状态线缓冲器),4040(12位二进制串行计数器),512K 的SRAM CY7C1049。 系统工作过程可分为主要两个步骤:图像数据存储和图像数据读出过程。系统上电之后,单片机将通过I2C总线对CMOS图像传感器的工作寄存器进行初始化设置,以便使图像传感器进入正常的工作状态,如开窗口位置、逐行扫描方式、自动曝光、自动平衡等。如果上位机需要调整CMOS图像传感器的工作参数,则可以通过地址端口写入;随后,CMOS图像传感器输出的8位图像数据在逻辑控制电路的协调控制下,顺序存入静态RAM构成的图像数据缓冲器。如果上位机没有发出读数据的命令,则此过程一直进行下去,新的图像数据不断地覆盖原有的数据;如果上位机发出读取图像数据的命令,则等待一帧完整的图像写入后,单片机将CMOS图像传感器的图像输出通道关闭,然后将SRAM中的数据顺序从IO读入。读完一帧图像后,再将CMOS图像传感器的图像输出通道打开重新开始新的一帧图像的采集。 3.2 ARM集成开发模块模块的设计 本系统CPU S3C4510B是基于以太网应用系统的高性价比16/32位RISC微控制器,内含一个由ARM公司设计的16/32位ARM7TDMI RISC处理器,ARM7TDMI为低功耗高性能的16/32位核。该CPU最适合用于对价格及功耗敏感的应用场合。 系统中采用的Flash存储器MBM29F016在本系统中用来存放uClinux操作系统程序代码。SDRAM是高速的动态随机存取存储器,在系统中主要用作程序的运行空间、数据及堆栈区。RTL8201是一种全双工以太网控制器,当系统中主处理器要向网上发送数据时,先将一帧数据通过远程DMA通道送到RTL8201中的发送缓存区,然后发出传送数据命令。RTL8201在完成了上一帧的发送后,再完成此帧的发送。RTL8201接收到的数据通过MAC比较,CRC校验后,由FIFO存到接收缓冲区,收满一帧后,以中断的方式通知主处理器。 3.3 OV7620摄像头模块电路设计 由于OV7620集成度高,外围电路设计非常简单,仅由石英晶体和一些电阻、电容等元件组成。 3.4图像存储模块的硬件设计 图像存储模块采用两个计数器4040作为RAM的地址信号,分别采集和读取利用PCLK或ARM的IO脉冲信号作为计数器的时钟信号。本模块利用MAX+plusⅡ 软件仿真了硬件时序,分析组合逻辑电路及时序逻辑电路,验证了数字系统设计的准确性。 4 嵌入式系统控制软件的设计与实现 4.1系统控制流程 系统软件模块主要在嵌入式操作系统uClinux下用C语言实现。其主要作用在于控制硬件设备,完成预定的图像采集、压缩、传输功能。按控制时序方向依次为I2C驱动程序、图像数据采集程序、图像压缩程序、网络传输程序四部分组成。 当将要采集图像数据时,嵌入式系统通过I2C驱动程序设置OV7620内部寄存器的值,配置合适的图像格式。当一帧图像完全存储到SRAM后,启动图像采集程序,将SRAM中的数据读取到嵌入式系统内存中,并进行压缩,最后打包发送到网络上。 4.2 I2C驱动程序的原理与实现 系统上电之后,单片机将通过I2C总线对CMOS图像传感器的工作寄存器进行初始化设置,以便使图像传感器进入正常的工作状态,如开窗口位置、逐行扫描方式、自动曝光、自动白平衡等。如果上位机需要调整CMOS图像传感器的工作参数,则可以通过地址端口写入,虽然S3C4510B提供了I2C BUS。但是目前市面上的uClinux则没有针对S3C4510B的I2C BUS的驱动。 同时通过在uClinux操作系统下编制调试IO数据读取控制程序、图像压缩程序、网络通信程序后,I2C驱动可以方便的修改OV7620寄存器数据,CPU可以通过IO高速的把数据读到内存,图像压缩后体积明显减小,通过网络可以流畅的把图像数据发送到客户端。其中也有一些不足之处比如I2C驱动有时会由于干扰不能成功的修改OV7620的寄存器,还有待深入分析修改。 4.4 图像的合成与处理 图像的合成主要根据位图文件的的数据结构、颜色空间模型概念,并结合彩色图像合成原理对图像进行合成。
|