基于ARM嵌入式的视频监控系统的设计
目前,嵌入式系统在视频监控中的应用越来越广泛。伴随着网络的强大功能,视频监控更侧重网络监控方案,要求体积小、远程化、成本低、功耗小、操作界面人性化等。本系统基于嵌入式Linux 平台上利用USB 摄像头采集视频图像,通过视频图像压缩及结合网络进行视频图像传输,使远程监控成为可能。
1 系统概述
视频图像监控系统由4 部分组成, 分别为视频图像采集、视频图像处理、视频图像传输、视频图像显示。视频图像采集部分由数字摄像头、USB 通道和嵌入式处理器构成、视频图像处理主要是视频图像压缩,由算法实现、视频图像传输主要利用视频服务器来实现、视频图像显示主要是在远程的主机上实现视频图像的浏览、保存和处理等,Linux 主机上由应用程序实现,Windows 主机上通过浏览器上的JAVA 程序实现。系统原理框图如图1 所示。
图1 系统框图
2 系统硬件
CPU 处理器使用Samsung S3C2440A, 主频400 MHz,最高533 MHz;64 M SDRAM、32 bit 数据总线、SDRAM 时钟频率100 MHz;256 M/1 GB Nand Flash, 掉电非易失、2 M NorFlash,掉电非易失;统宝3.5 真彩LCD,屏集成4 线电阻式触摸屏, 屏幕分辨率可以达到1024×768 象素;100 M 以太网RJ-45 接口(采用DM9000 网络芯片)、串行口、USB Host、USB Slave B 型接口、SD 卡存储接口、路立体声音频输出接口, 麦克风接口、JTAG 接口、4 USER Leds、6 USER buttONs(带引出座)、I2C 总线AT24C08 芯片、20 pin 摄像头接口;摄像头用良田,兼容SN9C20X 系列芯片的驱动,本系统的内核中集成了该驱动。
3 系统软件
3.1 Linux 内核的移植
移植新内核主要是为了给LCD 以及摄像头添加相应的驱动支持,在Fedora 9 中打开内核的目录,使用缺省配置文件进行配置:在内核中添加V4L 支持、添加万能USB 摄像头驱动GSPCA。
3.2 基于V4L2 的图像采集程序
系统使用的交叉编译工具为arm-linux-gcc-4.3.2.设计使用到的应用程序都要通过该编译器编译后下载到开发板上运行。将编好的应用程序V4L2.c 交叉编译后下载到板。
V4L(Video for Linux)是Linux 下提供的一个音视频接口规范,所有的音视频驱动编写都要用到这些接口。
V4L 从2.4.1.x 的内核版本中开始出现, 设计使用的Video for Linux2(简称V4L2)是V4L 的改进版,修复了第一代中的部分BUG。
设计的图像采集及处理程序主要基于V4L2 架构, 通过对一些ioctl 函数的调用来实现视频设备的打开,图像的采集处理,图像的显示等。几个主要的ioctl 函数的简介:
1)ioctl(fd,VIDIOC_S_FMT, fmt):用于设置图像的格式。
2)ioctl(fd, VIDIOC_REQBUFS, req):向内存申请缓冲区,申请的buffer 个数存在count 中。
3)ioctl(fd, VIDIOC_QUERYBUF, buf):查询已经分配的V4L2 的视频缓冲区的相关信息, 包括视频缓冲区的使用状态、在内核空间的偏移地址、缓冲区长度等。
4)ioctl(fd, VIDIOC_QBUF, buf):放一个空的视频缓冲区到视频缓冲区输入队列中,函数执行成功后,指令的视频缓冲区进入视频输入队列,在启动视频设备拍摄图像时,相应的视频数据被保存到视频输入队列相应的视频缓冲区中。
5)ioctl(fd, VIDIOC_STREAMON, type):启动视频采集命令,应用程序调用VIDIOC_STREAMON 启动视频采集命令后,视频设备驱动程序开始采集视频数据,并把采集到的视频数据保存到视频驱动的视频缓冲区中。
图像采集处理流程图如图2 所示。
图2 图像采集处理流程图
3.3 网络服务器
系统采用Boa 服务器。Boa 是一种非常小巧的Web 服务器, 其可执行代码只有大约60 kB 左右。作为一种单任务Web 服务器,Boa 只能依次完成用户的请求,Boa 支持CGI,能够为CGI 程序fork 出一个进程来执行。板上移植该服务器,Boa 服务器默认开机自动运行,配置conf 文件。
服务器端应用程序使用servfox, servfox-R1_1_3 解压修改Makefile 文件:CC=arm-linux-gcc,编译后得到可执行文件servfox,下载到板上,输入命令chmod +x servfox 为它添加可执行属性。
客户端程序使用spcawiew, 该程序用于在Linux 主机上对服务器进行监控,无需移植。在Linux 上编译spcaview.由于此软件包依赖与libsdl,所以在安装spcaview 之前,需要安装SDL-1.2.13. 安装spcaview 软件后,在源文件目录上有3 个可执行文件,spcacat :简单图片的抓取工具,不能用于网络监视客户端,Spcaserv:流媒体服务器,Spcaview: 用来纪录数据流,也能用来播放数据,也能作为网络监视客户端用。
4 监控过程
4.1 在Linux 操作系统上的监控
正常启动运行开发板,运行服务器端程序servfox: servfox
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)
- 基于MPEG-4的嵌入式多媒体监控系统中压缩/解压卡的设计与实现(10-15)
- 基于嵌入式Linux的远程监控系统的设计(11-25)
- 采用DSP的铁路道口图像监控系统设计(02-01)
- 基于DSP芯片TMS320DM642的嵌入式无线视频监控系统设计(01-11)
- 双DSP的多路视频监控系统设计(02-14)