APP下载

基于S3C2410的嵌入式网络视频监控系统的设计

2014-11-19王刚肖娟刘华艳

电子技术与软件工程 2014年20期
关键词:嵌入式系统

王刚 肖娟 刘华艳

摘 要 基于GX-ARM9-2410EP开发板完整地建立了一个嵌入式Linux网络视频监控系统。介绍了该嵌入式系统的软硬件设计思想和体系架构,详述了嵌入式Linux下USB接口摄像头驱动的实现、利用Video4Linux API函数实现视频采集以及网络通信的具体实现过程和方法。

【关键词】Linux Video4Linux S3C2410 嵌入式系统 网络视频监控

1 引言

随着计算机多媒体应用技术及网络技术的发展,在政府、教育、银行、医疗、商场监控、城市交通管理等方面,视频监控系统的市场需求量大幅度的上升。嵌入式网络视频监控系统具有监控设备体积小巧、性能稳定、通讯便利、利用网络进行传输等显著优点。设计一种简便、廉价、新型的基于嵌入式系统的网络视频监控系统具有很大的工程实际意义。

本文针对网络视频监控设备的实际应用需求,结合图像采集、压缩编码、嵌入式系统和网络技术等几方面的技术,设计了一套嵌入式网络视频监控系统。该系统基于S3C2410的ARM920T芯片和嵌入式Linux操作系统,采用USB摄像头捕捉视频,系统直接与网络相连,用户使用标准的网络浏览器即可查看远程视频图像。

2 系统硬件设计

在本系统的设计中,硬件结构包括图像采集模块和视频服务器模块。视频采集部分主要完成数据的采集,系统通过前端USB摄像头采集图像,然后进行压缩,并把压缩的图像进行存储。视频服务器部分主要完成服务器的功能,通过嵌入式 ARM 和物理层芯片来实现。硬件结构框图如图 1所示。

图像采集过程通过 USB 接口完成。其处理流程如下: COMS 传感器摄像头采集数字图像数据,通过 USB 接口将图像数据传送到微处理器,操作系统通过应用程序对图像数据进行 JPEG 压缩。

在网络服务模块的设计中,以基于 ARM9 内核的微处理器 S3C2410 芯片为系统的控制核心。通过 USB 接口从图像采集模块中接受图像信号并进行压缩为 JPEG 图像后从网络接口中传出。

3 系统软件设计

软件设计部分主要有:嵌入式Linux操作系统的裁剪与移植、视频图像采集模块、图像数据JPEG编码压缩模块、网络数据传输模块四部分。

本设计使用移植的嵌入式Linux 2.4作为操作系统。Linux操作系统内核稳定,兼容多种硬件平台,且其源代码完全开放,内核可根据用户的不同需求进行剪裁,操作方便,内核本身就包含 TCP/IP 网络协议。Linux 具有丰富的内核配置功能,可以进行剪裁shell 和嵌入式 C 库,能够将开发的应用代码嵌入到存储器中。针对嵌入式系统的设备,其驱动程序可以实现静态或动态模块加载,调试、操作简便。Linux相关的剪裁与移植技术,本文不再作详细的介绍。以下主要介绍USB接口摄像设备驱动程序、基于Video4Linux设计的视频图像采集模块、视频图像采集流程和基于B/S模式的网络数据传输模块的设计。

3.1 USB接口摄像设备驱动程序的设计

Linux中的设备驱动程序是外围设备与Linux底层核心之间的接口。上层的应用程序不需要去了解底层的硬件是如何工作的,只需要通过设备驱动程序这个接口来操作外围设备,如同操作普通的文件一样。驱动程序是通过调用标准的系统接口函数来实现对外围硬件设备的使用,包括对外围设备相关的开启、结束、读写和I/O控制等操作。 Video4Linux (V4L) 是 Linux 中关于视频捕捉卡、TV卡和USB摄像头等视频设备的内核驱动,是Linux下用于获取视频和音频数据的API接口函数。 USB 接口摄像设备的驱动程序中需要提供基本的输入/输出操作接口函数的实现,包括打开(open)、读操作(read)、写操作(write)、关闭(close)四个函数。Linux底层核心通过file_operations数据结构访问设备驱动程序提供的输入/输出接口函数来实现顶层应用程序对外围设备的调用操作。

本设计使用的是Zc301p芯片USB接口摄像头。该设备的驱动程序是开源的,可以网站上自由下载使用。但是需要针对具体使用的嵌入式设备平台,重新设置包括设备处理器的型号、交叉编译的环境等,然后再重新编译生成后缀为.o的驱动模块文件。再在需要启动USB摄像设备时,使用加载命令insmode动态加载驱动模块。加载成功后,Linux系统就会在系统目录下成功注册USB视频设备/dev/video0。这样USB接口的视频摄像头就可以正常使用了。

3.2 基于V4L设计的视频采集模块

在Linux系统中,外围设备是被标识成特有的设备文件。系统底层的内核与上层的应用程序之间的接口是系统调用,而系统底层的内核与外围设备间的接口则是设备驱动程序。当上层的应用程序操作外围设备时,不需要直接去设置设备的初始化、释放、中断处理等操作,因为这些操作都由设备驱动程序完成。应用程序可以如同操作普通文件一样的操作外围设备。

在Linux系统里,上层的视频应用程序与系统内核的接口是Video4Linux(V4L),V4L为视频应用程序提供了诸多的接口函数,并在Linux系统中注册视频设备文件。视频应用程序通过系统调用来操作各种视频设备,即通过对视频设备文件的操作来实现对外部视频设备的控制。

3.2.1 V4L_device数据结构:

视频图像采集程序通过视频设备进行图像采集时,需要诸多的视频图像数据信息。V4L中的数据结构V4L_device为此提供了各种视频图像的相关数据信息。这个数据结构中主要包含了以下信息:

其中: video_window包含关于捕获视频图像区域的信息,在视窗中横向和纵向的坐标位置、捕获图像的宽度、高度等;video_capability包含视频设备的主要信息,有是否能捕获、分辨率可以达到的范围、有设备名称、有多少个信号来源等; video_picture包含设备捕获到图像的亮度、色度、色调、颜色、对比度、白平衡等属性; video_channel包含关于信号源的编号、制式、类型等属性; video_mbuf 包含使用mmap进行映射到存储缓冲区里的帧的属性,有每帧大小、最多支持的帧数、每帧相对基址的偏移等。endprint

3.2.2 视频采集流程

根据V4L的数据结构特点,可以得出视频图像采集的流程,如图2所示。首先启动视频捕获设备,然后获取视频捕获设备和图像视频的属性信息,接下来完成色彩、帧频状态、视窗大小等初步设置,最后启动视频图像的捕获采集。

图中主要包括两部分内容,一部分是视频采集的过程,另一部分是图像数据处理包括视频压缩和网络传输部分。

3.2.3 视频采集主要函数

截取视频图像主要有两种方法:一种是较为简单的read()直接读取方法,即通过系统调用read()直接获取内核缓冲区中的视频图像数据。另一种是快速的mmap()内存映射方式,将设备文件映射到进程地址空间,对设备文件的操作是如同指针访问内存一样,绕过了对磁盘的输入输出访问,虽然占用较多资源,但能读写操作更快速。本文设计中采用的是mmap()方式。

3.3 图像数据的压缩编码模块

3.4 基于B/S模式网络数据传输模块

本文采用B/S模式来实现远程网终视频监控。其中采用Boa来构建嵌入式Web服务器。Boa是上世纪九十年代由飞利浦公司开发的并广泛应用于GUN/Linux操作系统中单任务Web服务器。支持CGI公共网关接口技术实现动态Web,提供更加安全、有效的Web服务,CGI接口适用于各种不同平台,是用户应用程序与Web服务器之间的最常用的标准通信接口。

浏览器端只需安装有JAVA虚拟机的普通Windows系统的IE浏览器即可。

4 远程视频监控的实现

服务器端的网络视频采集硬件设备采用GX-ARM9-2410EP开发板,操作系统为移植的嵌入式Linux 2.4操作系统,配接USB接口的摄像头进行工作。在Linux操作系统下编译内核源代码和文件系统,进行相关的配置,编写开发板的启动脚本,并把BOA和视频采集程序的启动命令加入到自启动脚本中,重新生成文件系统并将生成的文件系统拷贝到tftpboot目录下。在MiniCom下完成嵌入式Linux和文件系统的下载与烧写。完毕后重新启动开发板。

监控端(浏览器端)通过WWW服务连接到嵌入式BOA服务器上。CGI响应浏览器端发送过来的视频图像采集请求,开始视频图像捕获采集,获取的图像通过socket传送到网页代码中。用户只需在浏览器的地址栏输入作为服务器端的嵌入式Linux平台的IP地址,通过网络访问嵌入式平台中制作的主页,即可进入WebServer系统的监控界面接收图像数据进行显示。

5 结语

本系统是基于GX-ARM9-2410EP开发板建立的一个嵌入式Linux网络视频远程监控系统。结合Linux系统中的V4L接口函数开发了视频图像采集程序,使用JPEG编码压缩捕获的图像文件,采用Boa来构建嵌入式Web服务器,通过Java Applet进行网络传输,实现了互联网远程实时监控。整个系统开发简洁高效,稳定性强,成本低、性价比高,监控距离不受地域的限制。在远程教育、远程医疗、智能交通控制系统、字化城管系统等诸多领域均有广阔的应用前景。

参考文献

[1] 章派南.S3C2410网络视频监控系统的设计与实现[J].微计算机信息,2008,24(12-2):174-175.

[2] 彭铁钢,刘国繁.基于ARM的嵌入式视频监控系统设计[J].计算机工程与设计,2010.31(6):1191-1194.

[3] 师娟娟.基于ARM9的嵌入式Linux移植[J].武汉理工大学学报,2008,30(2):205-208.

[4] 张航,李乃祥,秦培龙.基于S3C210A的嵌入式视频监控系统服务器的设计实现[J].天津农学院学报,2009.6(16-2):27-30.

[5] 杨大千,梅大成,张岩等.基于ARM9和Linux的嵌入式动态Web技术设计与实现[J].工业控制计算机,2006.19(8):45-47.

作者单位

湘南学院计算机科学系 湖南省郴州市 423000endprint

3.2.2 视频采集流程

根据V4L的数据结构特点,可以得出视频图像采集的流程,如图2所示。首先启动视频捕获设备,然后获取视频捕获设备和图像视频的属性信息,接下来完成色彩、帧频状态、视窗大小等初步设置,最后启动视频图像的捕获采集。

图中主要包括两部分内容,一部分是视频采集的过程,另一部分是图像数据处理包括视频压缩和网络传输部分。

3.2.3 视频采集主要函数

截取视频图像主要有两种方法:一种是较为简单的read()直接读取方法,即通过系统调用read()直接获取内核缓冲区中的视频图像数据。另一种是快速的mmap()内存映射方式,将设备文件映射到进程地址空间,对设备文件的操作是如同指针访问内存一样,绕过了对磁盘的输入输出访问,虽然占用较多资源,但能读写操作更快速。本文设计中采用的是mmap()方式。

3.3 图像数据的压缩编码模块

3.4 基于B/S模式网络数据传输模块

本文采用B/S模式来实现远程网终视频监控。其中采用Boa来构建嵌入式Web服务器。Boa是上世纪九十年代由飞利浦公司开发的并广泛应用于GUN/Linux操作系统中单任务Web服务器。支持CGI公共网关接口技术实现动态Web,提供更加安全、有效的Web服务,CGI接口适用于各种不同平台,是用户应用程序与Web服务器之间的最常用的标准通信接口。

浏览器端只需安装有JAVA虚拟机的普通Windows系统的IE浏览器即可。

4 远程视频监控的实现

服务器端的网络视频采集硬件设备采用GX-ARM9-2410EP开发板,操作系统为移植的嵌入式Linux 2.4操作系统,配接USB接口的摄像头进行工作。在Linux操作系统下编译内核源代码和文件系统,进行相关的配置,编写开发板的启动脚本,并把BOA和视频采集程序的启动命令加入到自启动脚本中,重新生成文件系统并将生成的文件系统拷贝到tftpboot目录下。在MiniCom下完成嵌入式Linux和文件系统的下载与烧写。完毕后重新启动开发板。

监控端(浏览器端)通过WWW服务连接到嵌入式BOA服务器上。CGI响应浏览器端发送过来的视频图像采集请求,开始视频图像捕获采集,获取的图像通过socket传送到网页代码中。用户只需在浏览器的地址栏输入作为服务器端的嵌入式Linux平台的IP地址,通过网络访问嵌入式平台中制作的主页,即可进入WebServer系统的监控界面接收图像数据进行显示。

5 结语

本系统是基于GX-ARM9-2410EP开发板建立的一个嵌入式Linux网络视频远程监控系统。结合Linux系统中的V4L接口函数开发了视频图像采集程序,使用JPEG编码压缩捕获的图像文件,采用Boa来构建嵌入式Web服务器,通过Java Applet进行网络传输,实现了互联网远程实时监控。整个系统开发简洁高效,稳定性强,成本低、性价比高,监控距离不受地域的限制。在远程教育、远程医疗、智能交通控制系统、字化城管系统等诸多领域均有广阔的应用前景。

参考文献

[1] 章派南.S3C2410网络视频监控系统的设计与实现[J].微计算机信息,2008,24(12-2):174-175.

[2] 彭铁钢,刘国繁.基于ARM的嵌入式视频监控系统设计[J].计算机工程与设计,2010.31(6):1191-1194.

[3] 师娟娟.基于ARM9的嵌入式Linux移植[J].武汉理工大学学报,2008,30(2):205-208.

[4] 张航,李乃祥,秦培龙.基于S3C210A的嵌入式视频监控系统服务器的设计实现[J].天津农学院学报,2009.6(16-2):27-30.

[5] 杨大千,梅大成,张岩等.基于ARM9和Linux的嵌入式动态Web技术设计与实现[J].工业控制计算机,2006.19(8):45-47.

作者单位

湘南学院计算机科学系 湖南省郴州市 423000endprint

3.2.2 视频采集流程

根据V4L的数据结构特点,可以得出视频图像采集的流程,如图2所示。首先启动视频捕获设备,然后获取视频捕获设备和图像视频的属性信息,接下来完成色彩、帧频状态、视窗大小等初步设置,最后启动视频图像的捕获采集。

图中主要包括两部分内容,一部分是视频采集的过程,另一部分是图像数据处理包括视频压缩和网络传输部分。

3.2.3 视频采集主要函数

截取视频图像主要有两种方法:一种是较为简单的read()直接读取方法,即通过系统调用read()直接获取内核缓冲区中的视频图像数据。另一种是快速的mmap()内存映射方式,将设备文件映射到进程地址空间,对设备文件的操作是如同指针访问内存一样,绕过了对磁盘的输入输出访问,虽然占用较多资源,但能读写操作更快速。本文设计中采用的是mmap()方式。

3.3 图像数据的压缩编码模块

3.4 基于B/S模式网络数据传输模块

本文采用B/S模式来实现远程网终视频监控。其中采用Boa来构建嵌入式Web服务器。Boa是上世纪九十年代由飞利浦公司开发的并广泛应用于GUN/Linux操作系统中单任务Web服务器。支持CGI公共网关接口技术实现动态Web,提供更加安全、有效的Web服务,CGI接口适用于各种不同平台,是用户应用程序与Web服务器之间的最常用的标准通信接口。

浏览器端只需安装有JAVA虚拟机的普通Windows系统的IE浏览器即可。

4 远程视频监控的实现

服务器端的网络视频采集硬件设备采用GX-ARM9-2410EP开发板,操作系统为移植的嵌入式Linux 2.4操作系统,配接USB接口的摄像头进行工作。在Linux操作系统下编译内核源代码和文件系统,进行相关的配置,编写开发板的启动脚本,并把BOA和视频采集程序的启动命令加入到自启动脚本中,重新生成文件系统并将生成的文件系统拷贝到tftpboot目录下。在MiniCom下完成嵌入式Linux和文件系统的下载与烧写。完毕后重新启动开发板。

监控端(浏览器端)通过WWW服务连接到嵌入式BOA服务器上。CGI响应浏览器端发送过来的视频图像采集请求,开始视频图像捕获采集,获取的图像通过socket传送到网页代码中。用户只需在浏览器的地址栏输入作为服务器端的嵌入式Linux平台的IP地址,通过网络访问嵌入式平台中制作的主页,即可进入WebServer系统的监控界面接收图像数据进行显示。

5 结语

本系统是基于GX-ARM9-2410EP开发板建立的一个嵌入式Linux网络视频远程监控系统。结合Linux系统中的V4L接口函数开发了视频图像采集程序,使用JPEG编码压缩捕获的图像文件,采用Boa来构建嵌入式Web服务器,通过Java Applet进行网络传输,实现了互联网远程实时监控。整个系统开发简洁高效,稳定性强,成本低、性价比高,监控距离不受地域的限制。在远程教育、远程医疗、智能交通控制系统、字化城管系统等诸多领域均有广阔的应用前景。

参考文献

[1] 章派南.S3C2410网络视频监控系统的设计与实现[J].微计算机信息,2008,24(12-2):174-175.

[2] 彭铁钢,刘国繁.基于ARM的嵌入式视频监控系统设计[J].计算机工程与设计,2010.31(6):1191-1194.

[3] 师娟娟.基于ARM9的嵌入式Linux移植[J].武汉理工大学学报,2008,30(2):205-208.

[4] 张航,李乃祥,秦培龙.基于S3C210A的嵌入式视频监控系统服务器的设计实现[J].天津农学院学报,2009.6(16-2):27-30.

[5] 杨大千,梅大成,张岩等.基于ARM9和Linux的嵌入式动态Web技术设计与实现[J].工业控制计算机,2006.19(8):45-47.

作者单位

湘南学院计算机科学系 湖南省郴州市 423000endprint

猜你喜欢

嵌入式系统
办公自动化系统的设计
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究