基于嵌入式Linux的网络监控系统

2019-07-12 17:11发布

  毕 设 论 文            

基于嵌入式Linux的网络监控系统

摘要 介绍了一种采用Browser/Server结构、在视频服务器上内置一个嵌入式Web服务器、基于嵌入式Linux视频的网络监控系统。重点阐述了其服务器端的设计。   关键字:嵌入式Linux;web服务器;视频服务器  

Embedded Linux-based network monitoring system

Abstract This paper presents a use of Browser / Server structure, built-in video server, an embedded Web server, based on embedded Linux network video monitoring system. Focuses on the design of its  server-side.   Keyword: Embedded Linux; web server; video server                                               目录   前言__ 4 1系统总体架构与功能__ 4 2 系统实现__ 5 2.1 件平台简介_ 5 2.2软件设计与实现_ 5 3实验步骤__ 6 3.1需要的软件与工具简介_ 6 3.2软件安装_ 6 4 实验用途__ 12 5 参考文献__ 13 致谢__ 14        

 

                             

前言

近几年嵌入式软件行业迅猛发展,嵌入式产品渗入各个行业,象常见到的手机、PDA、机顶盒、高清电视(HDTV)、路由器、汽车电子、数码相机、医疗仪器、航天航空设备等等都是典型的嵌入式系统,嵌入式开发已经成为当前最热门最有发展前途的行业之一。业内人士认为,目前嵌入式行业至少存在30-50万的人才缺口,仅北京市场嵌入式软件开发人员的需求就已经超过了5万人,而且还在持续增加,这主要有两方面的原因:一是与目前我们高校的专业设置有关,我国高校的计算机教育普遍以应用软件为主,很少涉及嵌入式软件的课程,因此企业很难招聘到马上可以投入嵌入式软件开发的实战型人才;二是嵌入式领域门槛相对较高,知识要求比较全面,而且需要一定的实验环境(开发板和工具软件)和有经验的人进行指导。需要软件和硬件两个方面的知识,需要掌握操作系统原理、C语言、汇编语言、ARM体系结构也需要知道。所以说对于学习软件的学生,可能还需要花些时间研究硬件,这个是有点难度的。同时也是硬件出生的学生,也需要了解编程语言。                                   1系统总体架构与功能
  
 嵌入式Linux视频网络监控系统是电工电子装置、计算机软硬件以及网络、通信等多方面的有机组合体,它以智能化、网络化、交互性为特征,结构比较复杂。如果利用OSI七层模型的内容和形式,把相应的数据采集控制模块硬件和应用软件以及应用环境等有机组合,可以形成一个统一的系统总体框架.摄像头传送来的视频信号数字化后,经过压缩,通过RS-232/RS485将数据送到内置的Web服务器,嵌入式Linux系统的10/100M以太网口实现接入Internet网络,将现场信号送到客户端。整个系统的核心是嵌入式Linux系统。监控系统启动后,嵌入式Linux系统启动Web Server服务程序,或者自己手动启动Web Server服务程序,接收授权客户端浏览器的请求,Web Server将根据通信协议完成相应的监测。客户端就可以时时看到服务器端监控的图像。客户端可以通过浏览器或者安装客户端软件进行监控,如果是通过浏览器需要安装JAVA插件。通过在开发板的摄像头监控周围的环境,把采集到的数据传输到客户端,也就是监控端,把图像播放出来。同时可以通过网络远程的浏览器把服务器端下保存的数据调出来。  

2 系统实现


2.1 硬件平台简介
  本系统以公开的嵌入式Linux源代码为基础,根据设计的嵌入式目标板编写相应的Bootloader程序,然后裁剪出合适的内核和文件系统。CPU ARM920T 5 级流水线设计- 16KByte指令缓存- 16KByte数据缓存,主频- 203MHz(标称频率200MHz,最高266MHz),内存- 64MByte PC133 SDRAM 32bit BusWidth-前端总线频率100MHzLCD显示输出- 通用液晶屏幕接口,支持单 {MOD}、伪彩、真彩液晶屏幕-最大分辨率1024x768(理论值)- 四线电阻式模拟触摸屏接口,VGA显示输出-最大刷新率80Hz- 最大分辨率800x600(最大刷新率和最大分辨率不可同时达到),网卡- 10M 网络接口,串口- 2 个简化RS232串行口- 2USB HOST接口(USB1.1 2.2软件设计与实现
  视频监控系统软件结构采用的是浏览器/服务器(B/S)网络模型,即由客户端通过Web向服务器提出请求,服务器对请求做出确认响应并执行相应的任务(如向客户端发送组播地址、图像格式、压缩格式等),建立连接后就可以在客户端监控被控点,从而实现远程网络监控。服务器(Web Server)端即现场监控点的软件结构包括采集模块、压缩编码模块、网络通信模块、控制模块等,如图2所示。

3实验步骤

3.1需要的软件与工具简介

摄像头驱动: 2.6.11之前需要的驱动是:spca5xx2.6.11之后需要的驱动是:gspcav1-20070508.tar.gz 服务器视频采集: servfox-R1_1_3.tar.gz 客户端播放视频: spcaview,但是安装Spcaview前提是需要安装SDL 浏览器java plugs: linux下的java插件:jre-xx-linux-i586-rpm.bin windows下的java插件:jre-xx-windows.exe(xx代表版本号) web服务器: boa 交叉编译器: arm-linux-gcc-3.4.1.tar.bz2 Bootloader: Vivi 内核: 2.6.14 文件系统: 通过nfs挂载的cramfs

3.2软件安装

x86环境配置:交叉编译器arm-linux 下载arm-linux-gcc-3.4.1.tar.bz2 Cd /usr/local;mkdir arm;cp arm-linux-gcc-3.4.1.tar.bz2  ./(arm-linux-3.4.1拷贝到这里);tar zxvf arm-linux-gcc-3.4.1.tar.bz2;mv  arm-linux-gcc-3.4.1 3.4.1(重命名) (ok了) 配置交叉编译器的路径:vi /etc/.bashrc然后找到PATH,修改为PATH=/usr/local/arm/3.4.1/bin:$PATH 注销linux; 在命令行输入env查看path有没有/usr/local/arm/3.4.1/bin 结束 安装摄像头驱动程序:gspcav1-20070508.tar.gz 下载gspcav1-20070508.tar.gz gspcav1-20070508.tar.gz拷贝到要编译内核目录下media(我的是/home/linux-2.6.14/driver/usb/media),tar zxvf  gspcav1-20070508.tar.gz;cd /home/linux-2.6.14; 修改内核让其支持gspcav1驱动(适用于zc301芯片的摄像头),内核默认支持ov511芯片的摄像头) 1)Cd /home/linux-2.6.14; vi ./drivers/usb/Makefileobj-$(CONFIG_USB_W9968CF)   += media/之后添加 obj-$(CONFIG_USB_SPCA5XX)    += media/ 2)vi  ./drivers/usb/media/Kconfig添加如下代码
config USB_SPCA5XX
       tristate "USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Cameras"
       depends on USB && VIDEO_DEV
       ---help---
      Say Y or M here if you want to use one of these webcams:
          The built-in microphone is enabled by selecting USB Audio support.
      This driver uses the Video For Linux API. You must say Y or M to
      "Video For Linux" (under Character Devices) to use this driver.
      Information on this API and pointers to "v4l" programs may be found
      at .
      To compile this driver as a module, choose M here: the
      module will be called spca5xx.
3)vi  drivers/usb/media/Makefile添加如下代码 obj-$(CONFIG_USB_SPCA5XX)    += gspcav1-20071224/ 4)配置内核选项 cd /home/linux-2.6.14 make menuconfig  Device Drivers---> Multimedia devices  --->  <*> Video For Linux (内核默认是支持的) Device Drivers--->USB support  --->  │<*> Support for Host-side USB (内核默认是支持的) Device Drivers--->USB support  --->   USB Host Controller Drivers---<*>   OHCI HCD support(内核默认是支持的) Device Drivers--->USB support  --->│---   USB Multimedia devices---   USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Cameras(按空格键选择M让支持编译成模块) make zImage(zImage/home/linux-2.6.14/arch/arm/boot目录下) make modules(gspca.ko/home/linux-2.6.14/drivers/usb/media/gspcav1-20071224下) cp /home/linux-2.6.14/arch/arm/boot/zImage /home/nfs(tftp目录) 5)cp gspca.ko /home/rootfs(nfs目录下) 安装摄像头驱动了 Spcaview 软件包的安装; 依赖关系; 此软件依赖 libsdl,要先安装它才行,下载地址:http://www.libsdl.org ,我下载的是:SDL-1.2.10.tar.gz http://www.libsdl.org/download-1.2.php [root@localhost ~]# tar zxvf SDL-1.2.10.tar.gz
[root@localhost ~]# cd SDL-1.2.10
[root@localhost SDL-1.2.10]# ./configure ; make ;make install
安装SpcaView 软件包: [root@localhost ~]# tar zxvf spcaview-20051212.tar.gz
[root@localhost ~]# cd spcaview-20051212
[root@localhost spcaview-20051212]# make ; make install
配置可执行程序的路径: 可执行的工具被安装到 /usr/local/bin目录中,所以我们还要配置一下用户的环境变量PATH 。配置命令执行路径,在当前用户家目录下的.bashrc文件中加入下面的一行; export PATH="$PATH:/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin" 然后运行如下命令; [root@localhost spcaview-20051212]# source .bashrc servfox软件包的安装和移植: http://mxhaard.free.fr/spca50x/embedded/Servfox/servfox-R1_1_3.tar.gz tar zxvf servfox-R1_1_3.tar.gz cd servfox-R1_1_3 里面没有Makefile,需要自己修改Makefile.arm;mv Makefile.arm Makefile Make;cp ./servfox /home/rootfs/bin 完成移植servfox 移植boa服务器:(arm-linux-2.9.5没有问题) www.boa.org;下载boa-0.94.13.tar.gz(我下载的) tar zxvf boa-0.94.13.tar.gz cd boa-0.94.13/src;./configure(生成Makefile) 1vi Makefile 找到CCgcc把修改为CCarm-linux-;make得到的可执行程序为boa;arm-linux-strip boacp ./boa  /home/rootfs/bin; 2)arm-linux-3.4.1会出现: 错误1util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] Error 1 解决方法:vi src/compat.h #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 修改成 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff make clean;make 启动boa时的错误: Boaerror log 提示 “boa.c:266.icky Linux kernel bug!:No such file”
修改 src/boa.c,將底下判斷式註解掉:
/*if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}*/
make clean;make
Boaerror log  “bo提示 boa.c:211 - getpwuid: No such file or directory 修改 src/boa.c,將底下兩個判斷式註解掉:
/*if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}*/
make clean;make
配置boa环境: 编译好了,自动生成boa.conf,可以根据这个boa.conf修改。 1#ServerName www.your.org.here (在PC机上测试网页,只需修改boa.conf就行了)
改成:
ServerName
域名可以自己写(这句话不能注释,不然会出错)
2
DirectoryMaker /usr/lib/boa/boa_indexer
改成:
#DirectoryMaker /usr/lib/boa/boa_indexer
3
DefaultType text/plain
改成:
DefaultType text/html
4
#AddType application/x-httpd-cgi cgi
改成:
AddType application/x-httpd-cgi cgi
5
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
改成:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
下面是配置开发板的环境: cd /home/rootfs Mkdir ./etc/boa
cp boa.conf ./etc/boa
mkdir ./var/log/boa
mkdir ./var/www
mkdir ./var/www/cgi-bin/
/var/www中放置一个index.html文件 cp /etc/mime.types ./etc spcaview目录下http-java-applet拷贝到/home/rootfs/var/www/下(实现网页远程监控)需要修改文件夹的权限chmod -R 755 /home/rootfs/var/www/http-java-applet就可以了。 安装java插件: 1.linuxjava插件 Download jre-xx-linux-i586-rpm.bin;mkdir /usr/local/java;cp ./jre-xx-linux-i586-rpm.bin /usr/local/java chmod +x ./jre-xx-linux-i586-rpm.bin;./jre-xx-linux-i586-rpm.bin;在执行过程中需要选择输入yes就可以了。 进入fixfore插件目录。我的系统是red flag;cd /usr/lib/fixfore/plugins;创建软连接ln -s /usr/java/jre1.5.0_09/plugin/i386/ns7/libjavaplugin_oji.so libjavaplugin_oji.so 在浏览器中输入about:plugins查看。 windowsjava插件: 下载好软件双击就好了, 到这里所以软件已经安装好了,下面就可以启动开发板,进行相关的测试和配置。 x86配置: 1)启动tftp服务service xinted restart;netstat -au(查看有没有启动) 2)启动nfs服务service portmap restart;service nfs restart 开发版配置: 启动开发板瞬间安键盘空格自己启动内核的方式,我通过网络下载。  net  tftp 192.168.1.88 0x30008000 zImage(192.168.1.88tftp服务器,zImage是内核镜像,0x30008000是开发板的内存空间地址) Boot ram(从内存启动) 通过nfs挂在文件系统。 到此在开发版上的linux跑起来了。 挂载摄像头驱动模块,insmod gspca.ko会打印摄像头的信息。 mknod /dev/video0 c 81 0(建立摄像头设备) 启动boa服务器输入boa &(查看/home/rootfs/var/log/boa/error_log里面的信息有没有启动成功) 启动视频采集服务器输入servfox -g -d /dev/video0 -s 320x240 -w 7070 (-d 表示设备,-s表示大小 -w端口)如果摄像头驱动成功话了,会提示等待连接的信息。 x86环境: 输入 spcaview -g -w 192.1