基于ARM11的嵌入式Web监控系统的研究与实现
随着嵌入式计算机、互联网、数字图像以及通信等技术的发展,视频监控技术也得到迅速的发展,并渗透到人们的现实生活中。视频监控的领域涉及安全监控、远程医疗、智能家居、视频实时会议等。
文中利用Web和嵌入式技术,以ARM11-S3C6410处理器为硬件核心,以嵌入式Linux系统作为软件平台,研究并实现了一个嵌入式Web实时监控系统,为嵌入式设备接入Internet提供了一种简单且有效的解决技术,进而可以实现通过Web浏览器对嵌入式设备进行远程监控的目的。
1 系统总体设计
文中设计一种典型的嵌入式Web监控系统主要通过嵌入式终端上的摄像头进行视频图像的采集,视频服务器MJPG—streamer然后对采集过来的数据进行压缩,传输JPEG格式的图像到用户客户端浏览器。用户可以通过Web浏览器实时远程监控摄像头采集到的视频图像。系统整体框架如图1所示。
2 硬件设计
本系统使用的硬件平台功能框图如图2所示。该平台采用三星处理器S3C6410。该处理器基于ARM1176JZF—S内核,64/32位内部总线架构,并且具有丰富的内部资源,支持MPEG4/H.264编解码、VC1的解码,实时视频会议和NTSC,PAL的输出。在片上资源非常丰富的基础上,对硬件系统的配置进行了相关的扩展,包括1块256 MB的NAND Flash和2块64 Mbyte的DDR SDRAM,1个连接PC机用于调试的串口、2个USB接口、1个以太网控制芯片DM9000AE扩展了1个网络口,在主控USB接口外接数字摄像头。
3 软件设计
3.1 嵌入式Web服务器boa的移植
本项目采用的嵌入式Web服务器有Boa(WWW.boa.org),它一般是单进程服务器,即同一时刻只能响应单个用户的,而无法并发响应,这也是和Apache等高性能的Web服务器主要的区别,但对于应用于嵌入式设备的场合里已足够。这里介绍常用的web服务器boa的移植。Boa的可执行代码只有约60KB,是一个非常小巧的单任务服务器,所以只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个新的进程来响应用户的需求。在其站点公布的速度和安全性能测试中,Boa的性能要好于Apache服务器。
最后将生成的可执行程序boa挂在到目标系统,若能成功地访问静态HTML网页和运行测试用的CGI程序,则表明配置成功。
3.2 Cgi技术简介以及Cgi库的移植
目前Web开发中生成动态Web页面的方法有CGI和服务器脚本,如JSP,ASP等,但在嵌入式Web服务器中,考虑资源有限,一般都只提供CGI支持,因此在嵌入式设备中Web应用实际上就是基于CGI的开发。
CGI(Common Gate Interface)是一段运行在Web服务器上的程序,它提供了同客户端Html页面的接口。为了完成服务器与客户端的动态交互,依据cgi标准编写的代码运行在服务器端,处理来自用户浏览器的数据,如表单数据的操作、Web数据库的访问以及远程操控等。编写不同的cgi程序,用于视频采集设备的初始化以及实时控制。CGIC是一个支持CGI开发的开放源码的标准C库,只需要在开发的站点和程序文档中公开声明即可,表明程序使用了CGIC库,用户也可以购买商业授权而无需公开声明。首先在其官网下载源代码,目前使用的是cgic205版,设置交叉编译器进行交叉编译,并移植cgic库。完成移植后,将capture和egictest.cgi文件复制到Web服务器中的/web/cgi—bin目录下。C GIC库移植成功后,可在浏览器中访问其测试页面则表明测试成功。测试页面如图3所示。
3.3 MJPG-streamer服务器的设计
MJPG-streamer是一个基于网络应用的开源流媒体服务器。本课题对MJPG-streamer流媒体服务器进行深入研究,结合试验平台的特点,对其进行修改、编译,使这个流媒体服务器可以正常的工作在系统平台上。利用MJPG-streamer流媒体服务器与Linux系统所提供的API以及丰富的网络功能完成视频数据的采集、压缩和网络传输。
用户通过浏览器与嵌入式Web服务器通信。MJPG-streamer视频服务器主要负责架设服务,进行配置(端口,显示参数),摄像头的识别由s3c2440_camif.c驱动程序完成。MJPG-streamer服务器是一个命令行应用软件,它运行时会启动一个socket套接字来侦听8080端口,若有TCP连接请求,则以TCP流将视频发送出去。可以从一个输入端复制JPG格式的图像到多个输出端,也可以将从摄像头采集到的JPEG视频流通过网络传输到浏览器上或者嵌入式设备上。有了视频服务器处理数据的输入输出,在构建前台网页时可以直接调用生成相应的实时数据,方法是在HTML页面上输入:http://IP地址:端口/? action=参数”格式来调用,其中参数为“stream”表示调用视频网页,“snapshot”表
嵌入式Linux Web服务器 Boa CGI MJPG―streamer 相关文章:
- 嵌入式Linux技术在工业控制网络中的应用(10-30)
- 基于嵌入式Linux的组态软件实时数据库的设计(02-01)
- 基于ARM+DSP的嵌入式Linux数控系统设计(11-18)
- 基于嵌入式Linux的细胞特征提取算法设计(11-19)
- 基于S3C2410的嵌入式Linux系统构建(03-02)
- 嵌入式Linux网络编程之:网络基础编程(08-13)