1 引言
随着计算机技术、网络技术和自动控制技术的快速发展,智能化的家居生活不仅能提供全方位的信息交换功能,优化人们的生活方式和居住环境,而且能帮助人们有效地安排时间、节约各种能源。视频监控系统成为监控系统中最重要的组成部分之一。视频监控系统已经越来越广泛地出现与银行、交通部门、政府部门、学校、军队、家庭等各种场合,视频应用也呈现多样化的发展趋势,并具有越来越多的数字化、网络化、实时性等特征[1]。传统的视频监控多数采用PC最为终端监控,监控成本高。嵌入式系统开发需要专门的开发工具和开发环境。嵌入式系统针对具体应用,软硬件可裁剪特点,有很强的专用性。
本文设计了一种基于ARM9和Linux操作系统远程视频监控。在嵌入式系统中构建一个WEB服务器,USB摄像头采集视频图像,通过Linux系统处理,然后基于TCP/IP协议进行传输,可以直接用浏览器实现家居远程视频监控。
2 视频监控系统总体方案设计
系统的设计是在ARM9芯片及其外围接口电路形成开发板,通过USB接口连接摄像头到开发板,然后通过以太网甚至Internet网络与用户的电脑相连接,最终构成了一个远程视频监控系统,如图1所示。
3 视频监控系统硬件实现
嵌入式系统具有软件、硬件可裁减特点,对功能、可靠性、成本、体积、功耗严格要求。本系统以S3C2440芯片为核心进行外围功能及电路扩展,设计如图2 所示的硬件系统。S3C2440是基于ARM920T核心的RISC处理器,主频为400MHz,提供了一套完整的通用外围设备接口[2]。
系统具有比较好的可扩展性及开发的持续性。ARM9开发平台配置了256M的NAND FLASH和64M 的SDRAM,一个USB接口和一个串行接口,通过以太网控制器芯片DM9000E扩展了一个网口,最后引出一个JATG接口,主要用于调试。在USB接口上外接一个摄像头,将采集到的视频图像数据放入存储器缓冲区中,或者用JPEG压缩处理图像数据并保存,等待远程主机的访问,也可通过网络接口直接发送视频数据到Internet上。
4 视频监控系统软件实现
本系统的软件构架主要有USB驱动程序模块、视频服务器模块、终端视频信号处理模块。基于嵌入式Linux开发环境一般由运行嵌入式Linux操作系统、用户应用程序的目标硬件和进行嵌入式系统Bootloader移植、内核编译、文件系统制作、应用程序开发调试等的主机平台组成。
4.1 Linux操作系统裁剪与移植
本系统采用的Bootloader为U-Boot,其源码可以在网上下载,然后根据需要进行修改和配置。内核移植部分主要是添加本系统所需要的驱动程序,通过make menuconfig命令调用配置单,在DeviceDrivers配置选项下添加摄像头的驱动,并编译进内核,然后将U-boot编译好的内核镜像和根文件系统烧写到S3C2440 嵌入式系统板上,这样就完成了Linux系统的裁剪和移植,并且也完成了摄像头的驱动程序[3]。
4.2 视频图像数据采集程序的实现
Video For Linux(简称V4L)是Linux中关于视频设备的内核驱动,也就是一个视频设备与应用程序的一接口函数集合,这些视频设备包括市场上流行的TV 卡、视频捕捉卡和USB 摄像头等[4]。摄像头驱动成功后,利用Linux内核中V4L库所提供的API函数,编写视频图像采集程序。在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,以便对摄像头的参数进行设置和读取其的状态及图像数据,摄像头一般挂载在下。对USB 摄像头执行打开,读写,关闭等基本操作通过V4L提供的API函数,摄像头驱动程序提供open,read,write,close等函数的具体实现,视频采集的流程如图3 所示。
4.3 视频网络传输模块的实现
USB摄像头输出的数据流被成功接收后,让摄像头采集的视频信号能够在网络上传输并最终显示在监控终端,需要设计一个网络视频服务器,实现客户端与服务器之间的数据通信。本系统视频传输基于TCP/IP协议实现,linux操作系统通过协议提供的套接字进行编程。通过HTTP server进行传输,其中的关键套接口操作函数有:创建指定类型的套接口并返回其描述符的函数、函数用于IP地址、端口绑定、函数用于服务器建立连接。当函数与某一端绑定后,就要函数监听端口及接受连接队列里的服务请求,并返回函数的新的socket描述符。当有请求时服务器接收请求并创建新的套接字与客户连接通信。
4.4 嵌入式WEB服务器的实现
随着互联网技术的高速发展,B/S模式的网络通信越来越流行,用户通过以太网,甚至Internet访问WEB 服务器,利用IE浏览器即可观看到远程视频设备的监控画面,用户不需要做任何维护,并且可以跨平台操作。本文使用的就是B/S模式。
嵌入式主要有三个Web服务器和Boa。httpd是最简单的,只支持静态页面,不支持认证和CGI;thttpd和Boa都支持认证、CGI等,功能都比较全。其中,Boa服务器是一个单任务的http服务器,代码简单、速度快、支持动态CGI、ftp服务、源代码开放、性能好,特别适合在嵌入式系统中做Web服务器[5][6]。将其移植在该系统中实现了嵌入式Web服务器。
5 监控系统测试结果
连接好系统,在用户的IE浏览器输入嵌入式Web服务器的IP地址192.168.1.6,然后在浏览器页面上观看到了效果图,如图4 所示。画面清晰、流畅,实现远程监控。
6 结束语
本文的系统基于“ARM+Linux”平台开发,实现了远程视频实时监控,与传统的视频监控系统相比,成本低,通用性好、稳定性高。该系统操作简单,通过用浏览器就可以实现视频监控。在此系统的基础上还可扩展并完善其他的功能。随着人们对信息化要求程度的增高及获得更安全的生活环境,对监控要求越来越高,而且视频监控可广泛应用于工业控制、交通、银行、家居等,所以未来有很广阔的发展前景。
作者简介:李成国(1982-),男,研究生在读,研究方向:嵌入式系统的研究。