元器件交易网-中发网全新升级平台
关注我们:
首页 > 技术资料 > 正文

嵌入式视频监控系统的组成及硬件设计分析

  引言

  传统的数字视频服务器监控系统多采用数字芯片集成或采用纯PC监控,由于数字芯片无智能化的操作系统而PC机处理多路视频信号的速度较低,导致系统稳定性不够好。随着嵌入式系统和视频压缩技术的日渐成熟,以及高网络带宽的普及,通过嵌入式平台,将视频信号数字化并压缩,并通过内置的Web服务提供给访问者已成为可能。用户可在现有网络环境中,通过浏览器直接观看实时的监控图像,实现高效、简洁的监控操作。以嵌入式系统为基础的数字视频监控具有:便于计算机处理,适合远距离传输,可靠性高、安装方便、使用灵活和体积轻巧等优点。

  1  系统组成方案

  我们设计的嵌入式视频监控系统由视频服务器、控制中心、和客户端组成,这是因为当监控点和控制台到达一定数目之后,监控点对于用户的开销也越来越大,因此增加控制中心辅助进行管理。

  1) 嵌入式视频服务器

  嵌入式的视频服务器由硬件模块和软件模块组成。视频服务器硬件模块主要完成视频信号采集、压缩、网络传输和用户设置,每个视频服务器出厂时被分配了一个唯一的序列号作为用户访问的唯一标识。嵌入式软件模块的主要功能有是控制硬件和向用户传输经过压缩的视音频数据。

  2) 控制中心

  控制中心主要处理从客户端发送过来的视频监控信息,然后将许可的请求通知视频服务器,使它们之间建立有效连接以传输监控视频数据;另外,控制中心负责视频服务器的登记注册,设定用户权限和视频服务器的参数。控制中心软件运行在PC服务器上,由管理员操作维护。

  3) 客户端

  客户端是提供给用户使用的基于PC的操作界面,可根据不同用户权限设定其操作功能。客户端完成控制中心的管理维护、图像观看、云台调整、图像参数调整、录像、告警等功能。

 

  2  视频终端硬件设计

  视频终端硬件完成视频信号采集、MPEG-4压缩和网络传输。由于高精度实时视频信息量巨大,在传输时需丢弃大量数据帧,因此必须压缩。我们采用专用芯片按即定格式高速压缩视频,实时性好,可靠性高。

  (1) 视频解码器模块:采用SAA7114H视频解码芯片,主要功能是将1路模拟视频量化后形成YUV数据格式通过并行输出端口传输到IME6410视频MPEG-4压缩处理单元。

  (2) 音频编解码器模块:主要是完成模拟音频到数字音频的解码工作,采样速率32K bps。

  (3) MPEG-4压缩处理器模块:数字视频数据编码压缩工作由INTIME公司设计的IME6410视/音频压缩处理器完成。微控制器通过主机接口对IME6410配置和接收压缩得到的视频码流。

  (4) SDRAM模块:IME6410和网络处理器S3C2500B各需要一片SDRAM,为DSP和网络处理器中程序运行提供外部存储器

  (5) FLASH模块:用来存储DSP和网络处理器中运行的程序。

  (6) 网络处理器模块:选用SAMSUNG的ARM940T内核的S3C2500B网络处理器,S3C2500B将编码后的视频/音频数据流打包形成标准的网络数据流并传输到因特网中。用户可通过互联网发送命令,对IP编码器进行参数调整,例如编码的帧率、编码效率、图像质量、IP地址设定等。

  (7) 异步串口:支持RS-232、RS-422/485等多种协议,用于和PC通讯和控制摄像头。用户可根据需要设置系统的工作参数,例如网络的IP地址,编码的帧率、编码效率、图像质量等。

  (8) I/O模块:通用I/O接口可以满足用户的控制目的,例如摄像机的镜头焦距控制等。

  (9) PHY层网络接口:完成调制、解调功能。

 

  3  嵌入式视频服务器软件的设计与实现

  uCLinux具有精巧、高效的内核,完整的网络功能和良好的可裁剪性,它内置的TCP/IP协议找、良好的开放性和可扩展性以及高效的任务管理,能够满足数字视频服务器的要求。

  本视频服务器采用了uCLinux作为嵌入式操作系统,移植BLOB作为系统引导模块,移植ez-ipupdate实现动态域名解析,使用在系统内核态下编写的driver实现视频数据的获取,使用在系统用户态下编写的应用服务程序iplay实现组帧、发送以及与用户交互等功能。

  3.1  系统引导模块

  系统引导模块LOADER移植自BLOB(Boot Loader OBject)项目,它是LART项目的系统引导模块。移植的BLOB的发行版是BLOB-2.0.5-pre2,编译器使用arm-linux- toolchain。由于视频服务器上的硬件环境与处理器SAMAUNG的S3C2500B的软件开发包SMDK2500中的配置有所不同,因此对 BLOB中的源代码在移植过程中作出了修改。以下是对BLOB程序做出的具体修改。

  (1) 串口参数代码修改

  由于视频服务器上的串口时钟源和SMDK2500不一样,因此对文件“/src/lib/serial-s3c2500.c”做出修改。

  (2) 修改BLOB程序中各块在内存中的分布。

  因为BLOB中的各部分内存分配和SMDK2500不一样,因此需要修改内存分配的预定义。修改文件是“include/BLOB/arch/smdk2500.h”。

  (3) 增加对网卡支持

  由于BLOB只支持一个网口,且只能在编译前指定使用使用WAN还是LAN,故首先在编译配置时添加:enable-network,这个指定修改在文件“/src/BLOB/smdk2500.c”中。为了在网络中避免地址冲突,需要为本机网卡设置唯一的MAC地址。这个修改在文件“src /lib/ether.c”中。

 

  (4) 修改启动延时

  针对本系统的启动延时,修改文件“src/BLOB/main.c”中的原设置时间。

  3.2  系统内核的移植

  系统内核Kernel是基于uClinux-dist-20040408的uClinux的分发版,下面是移植的修改部分。

  (1) 修改时钟频率的设置

  修改的原因是目标版与评估版采用的时钟源不一样。需要修改的文件为“uClinux-dist/linux-2.4.x/arch/armnommu/mach-SMDK2500/config.c”。

  (2) 添加支持从flash中获取MAC地址

  为了防止网络上出现MAC地址重复的情况,采用了从flash中直接读取BLOB中设定的MAC地址。在此需修改在文件“uClinux- dist/linux-2.4.x/arch/armnommu/mach-SMDK2500/readf.c”中相关的调用函数实现调用自己的函数。添加的自定义函数用来从flash的BLOB区域中指定的位置来获取MAC参数,然后向系统内核kernel提供获取的MAC参数内容。

  (3) 添加kernel中对GPIO口通用操作的支持

  为了在系统内核kernel中调试和使用GPIO提供统一的调用接口,需要修改文件为“uClinux-dist/linux-2.4.x/arch/armnommu/mach-SMDK2500/lmhgpio.c” 。

  (4) 修改有关内存分配的内容

  为了使系统支持内存GFP_DMA方式的内存分配,需要修改文件“uClinux-dist/linux-2.4.x/mmnommu/page_alloc2.c”。

 

  3.3  动态域名解析

  ez-ipupdate程序用于实现动态域名解析(DDNS)的功能,移植自uClinux-dist中的ez-ipupdate包。使用此模块的 DDNS功能,系统开机运行即自动登记已注册的动态域名。ez-ipupdate基本实现了DDNS的规范流程,但它直接读取端口的IP地址,这对于直接使用公网IP的用户是可以的。而有些计算机可能并不是直接连接公网,直接获取端口IP不合适,需要适当修改程序。

  3.4  应用服务模块

  应用服务模块iplay是运行在嵌入式系统上用来控制系统硬件,同时完成与客户端软件交互过程的程序。系统启动时会自动运行这个程序,视频音频压缩处理芯片IME6410只有通过这个程序才能正常工作。其工作模式是一个多线程的工作组合模式。主控程序首先对系统初始化,在完成了必要的初始化过程以后创建与其他模块对应的工作线程,如RTP协议处理线程、包接收控制线程、包发送控制线程、系统监控线程和CDMA通讯处理线程

  4  结束语

  本文介绍了一种视频嵌入式的设计方案,该系统由一个基于视频平台的监控、控制中心、客户端三大部分组成。依据系统的总体架构和设计思想,主要给出了嵌入式视频服务器软硬件的设计与实现。系统已开发完成,基本达到了预期的各项目标。

  • 微笑
  • 流汗
  • 难过
  • 羡慕
  • 愤怒
  • 流泪