基于ARM的视频监控终端的设计与实现 - 中国一卡通网
用户名密码 [免费注册] [找回密码] 推广技巧 发布求购 建商铺  发产品  会员体制比较  
 

基于ARM的视频监控终端的设计与实现

来源:嵌入式在线  作者:语馨 收编  发布时间:2008-07-31 15:26:41  字体:[ ]

关键字:arm  视频监控  监控终端  监控系统  

摘   要:本文介绍了一种基于ARM的视频监控系统的设计方案,采用软压缩算法,讨论了系统的硬件和软件设计。本系统和市场上其它视频监控系统相比,开发周期短,价格低廉,适用于对视频图像要求不太高的场合。


    RS-232接口与PC机串行总线相连,通过PC机对嵌入式系统进行相关信息显示和控制。而JTAG接口主要是对系统进行调试,还可将程序烧写到Flash中。

系统的软件设计

    视频监控终端的软件设计主要完成两方面的工作:

    (1)在硬件上搭建一个软件平台,搭建嵌入式Linux软件开发平台需要完成UBOOT移植、嵌入式Linux操作系统内核移植以及嵌入式Linux操作系统的设备驱动程序的开发等工作。
    (2)在软件平台的基础上,开发系统的应用程序。借助交叉编译工具,开发视频监控终端上运行的采集、压缩、传输程序。

构建基于S3C2410的Linux平台 

    Linux具有许多优点,如开放源码;功能强大的内核,支持多用户、多线程、多进程、实时性好、功能强大稳定;大小功能可定制;支持多种体系结构。 

    构建嵌入式Linux开发平台需要先构建交叉编译环境,如图4所示。一套完整的交叉编译环境包括主机和目标机。在开发中主机是一台装有红帽公司的FedoreCore 2操作系统的PC机,目标机是基于S3C2410的视频监控终端。选用的交叉编译器是GCC3.3.4 for ARM版,嵌入式Linux内核源代码包版本号为2.6.8RC。 

构建基于S3C2410的Linux平台

     2.6.8RC版的Linux内核源代码包中包含了所有的功能模块。系统中只用到了其中的一部分。因此,编译内核之前首先要配置内核,裁减掉冗余的功能模块,经过定制的内核才符合系统设计。具体步骤如下:

    (1)键入命令make menuconfig,对内核进行配置,选择YAFFS文件系统,支持NFS启动,系统使用的是USB接口的摄像头,故要启用USB设备支持模块,包括USB设备文件支持模块、USB主控制器驱动模块等。此外,USB摄像头属于视频设备,为了使应用程序能够访问它,还需要启用Video4Linux模块。
    (2)用make dep命令生成内核程序间依赖关系。
    (3)make zImage命令生成内核映像文件。
    (4)make modules和make modules_install命令生成系统可加载模块。

    这样就生成了zImage内核映像文件,把它下载到目标平台的Flash中。

    本设计采用USB外置摄像头,在内核配置时要求以模块形式加载。首先要完成驱动程序,驱动中需要提供基本的I/O操作接口函数open、read、write、close的实现,对中断的处理实现,内存映射功能以及对I/O通道的控制接口函数ioctl等,并把他们定义在struct file_operations中。这样当应用程序对设备文件进行诸如open、close、read、write等,系统调用操作时,嵌入式Linux内核将通过file_operations结构访问驱动程序提供的函数。接着把USB驱动程序编译成可以动态加载的模块,这样摄像头就可正常工作了。

视频监控终端软件的设计

    视频监控终端软件按功能分为三部分:视频采集、压缩、传输。这个软件的开发都是基于先前配置好的嵌入式内核。

    (1)视频采集部分:使用Video4Linux接口函数访问USB摄像头设备,捕获实时的视频流。首先完成v4l_struct数据结构的定义,如设备基本信息,图像属性,各个信号源属性等;采集模块一方面通过USB集线器采集USB摄像头中的图像,另一方面启动多个采集线程,分别在不同的端口上监听,一旦有请求连接,采集线程立即从设备缓冲区中把视频流数据读出,放入到视频处理缓冲区中进行下一步的处理。 
    (2)视频数据的压缩部分:在视频监控系统中,大量的数据需要通过网络传输,为了保证传输质量和传输实时性,就需要在传输之前进行编码压缩以减少数据量,本文采用MPEG-4编码标准进行数据压缩。在网络上可以下载到开源的xvidcore软件作为视频压缩的核心算法,xvidcore是一个高效的、移植性很强的多媒体编码软件,将它在PC机上进行交叉编译,生成的文件拷贝到目标系统下。
    (3) 视频数据传输部分:传输模块的作用在于把压缩之后的视频流传送到远程的PC机客户上,视频流数据的传输是基于TCP/IP协议。视频传输采用了标准的RTP传输协议。RTP是目前解决流媒体实时传输问题的最好办法,在Linux平台上进行实时流媒体编程,需要使用一些开放源代码的RTP库,如LIBRTP、JRTPLIB等。定义一种较为简单的握手协议:PC机端的采集程序不停地发请求数据包到采集终端,采集终端把已经捕获的图像打包返回给主机。每个RTP信息包被封装在UDP消息段中,然后再封装在IP数据包中发送出去。接收方自动组装接收到的数据帧,还原成视频数据。

结束语

    本文介绍了一种基于ARM的视频监控系统的设计方案,采用软压缩算法,讨论了系统的硬件和软件设计。本系统和市场上其它视频监控系统相比,开发周期短,价格低廉,适用于对视频图像要求不太高的场合。

更多

新闻投稿合作邮箱:yktchina-admin@163.com    字体[ ] [收藏] [进入论坛]

推荐文章

论坛热帖