Linux-第15章-基于ARM-Linux的家庭安全监控系统设计_第1页
Linux-第15章-基于ARM-Linux的家庭安全监控系统设计_第2页
Linux-第15章-基于ARM-Linux的家庭安全监控系统设计_第3页
Linux-第15章-基于ARM-Linux的家庭安全监控系统设计_第4页
Linux-第15章-基于ARM-Linux的家庭安全监控系统设计_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第15章基于ARMLinux的家庭平安监控系统设计随着经济的快速开展,生活节奏的提高,人们照顾家庭的时间越来越少,感觉时间也越来越紧张:不但要周旋在繁杂的工作之中,同时也要兼顾自己的“家”。怎样才能够解决这个矛盾,做到“鱼与熊掌兼得”成了人们关注的重点。而传统的网络视频监控系统如模拟视频监控,都是应用到专用的视频监控领域,采用专有线路、模拟电视信号等实现,需要较多的硬件,整个系统昂贵、通用性差、不易扩展、建设安装复杂,需要专业人士完成。这些要求都导致了该类系统难以普及进入普通家庭。第15章基于ARMLinux的家庭平安监控系统设计系统功能和组成15.1系统模块功能描述15.2软件平台与开发工具

15.3基于嵌入式平台的网络服务器

15.4第15章基于ARMLinux的家庭平安监控系统设计视频监控系统的实现

15.5红外监控模块设计15.615.1系统功能和组成家庭平安监控系统的目标是使用户可以随时通过移动通信设备、通过网络查看被监控地点的摄像设备捕捉到的视频信息。家里的摄像设备进行监视,将视频信息传送到效劳器进行处理和保存。当用户向效劳器发出请求时,效劳器将数据通过无线网络传送至用户的移动通信终端。整个家庭平安效劳系统包括效劳器、传感器和客户端三局部组成。传感器通过无线网络实现对用户家庭平安情况的实时监测。本系统使用无线技术在家庭内组建无线局域网络,并通过网络中的传感器设备,如无线摄像头、无线红外探头等对用户室内情况监测,将监测信息通过无线局域网传送数据至效劳器,供效劳器进行相应处理。摄像头负责采集家庭室内视频及图像信号,并传输至效劳器。红外探头负责监控家庭内是否有陌生人入侵,并将信号传输至效劳器。Linux客户端系统,通过有限网络实现对用户家庭平安情况实时监测。其中屏幕负责显示图片或者视频。图15-1为家庭平安效劳系统工作网络图,其中防火墙与监控设备之间由无线节点和效劳器相连,移动通信设备与客户端之间存在TCP/IP通信交互协议。图15-1家庭平安监控系统结构图

S3C2410是韩国三星公司生产的一款基于ARM920T体系结构的32位高性能CPU,丰富的外设接口,203MHz的主频使它特别适合进行操作系统的移植和进行应用开发。S3C2410采用0.18μm制造工艺的32位微控制器。该处理器拥有独立的16kB指令Cache和16kB数据Cache、MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer,I/O口,RTC,8路10位ADC,TouchScreen接口,IIC-BUS接口,IIS-BUS接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。15.1.1S3C2410介绍S3C2410的内部结构如图15-2所示。图15-2S3C2410内部结构图

1.片上功能介绍1.8V的ARM920T内核,1.8V/2.5V/3.3V存储系统,带有3.3V16KB指令和16KB数据缓存及MMU单元的外部I/O接口的微处理器;外部存储器控制〔SDRAM控制和芯片选择逻辑〕;LCD控制器〔支持4K颜色的STN或256K色TFT的LCD〕,带有1个通道的LCD专用DMA控制器;4通道DMA,具有外部请求引脚;3通道UART〔支持IrDA1.0,16字节发送FIFO及16字节接收FIFO〕和2通道SPI接口;1个通道多主I2C总线控制器/1通道IIS总线控制器;0版本SD主机接口及2.11版本兼容的MMC卡协议;2个主机接口的USB口和1个设备USB口〔1.1版本〕;4通道PWM定时器/1通道内部计时器;看门狗定时器;117位通用目的I/O口、24通道外部中断源;电源控制:正常、慢速、空闲及电源关闭模式;带触摸屏接口的8通道10位ADC;带日历功能的实时时钟控制器;具有PLL的片上时钟发生器。2.体系结构集成了手持设备和通用嵌入式系统的解决方案;32/16位结构体系和ARM920TCPU核的强大指令体系;增强的ARMMMU体系结构支持WinCE、POC32和Linux操作系统;指令缓存、数据缓存、写缓冲器和RAM物理地址标签减少了主存储器带宽和潜在性能的影响;ARM920TCPU核支持ARM调试体系结构;内置的高级微控制总线体系结构〔AMBA〕〔AMBA2.0,AHB/APB〕。3.系统管理器支持小/大端模式;寻址空间:每个bank128M字节〔总共1G字节〕;支持每个bank可编程的8/16/32位数据总线宽度;bank0到bank6具有固定的bank起始地址;bank7具有可编程的bank起始地址和bank大小;共有8个存储器bank:6个存储器bank用于ROM,SRAM及其它;2个存储器bank用于ROM/SRAM/同步DRAM;所有的存储器bank具有可编程的操作周期;支持外部等待信号延长总线周期;支持掉电时的SDRAM自刷新模式;支持多种类型的引导ROM〔NOR/NandFlash,EEPROM及其它〕。 各种物体因为外表热度的不同,都会辐射出强弱不同的红外线,物体不同辐射的红外线波长也有不同。红外探测主要用来探测人体和其他一些入侵的移动物体,当人体进入探测区域,稳定不变的热辐射被破坏,产生一个变化的热辐射,红外传感器接收后放大、处理,发出报警信号。15.1.2无线红外探头RD-HW14G无线红外探头RD-HW14G采用先进的数字信号处理技术,由高精度被动红外探测头和逻辑数码电路设计组成,具有更强的抗干扰能力、精细的全范围温度补偿;含微处理,CPU控制,防小宠物;超微功耗设计,智能节电模式,当探测不到信号时,自动进入30秒节电模式。探测器通过探测人体辐射的红外热能而发射无线数码信号来启动主机相应报警。具有外形美观、平安可靠、受环境影响小,安装使用方便等优点,适合目前现代家居阳台落地窗、超大窗户等使用。1.特点及结构原理:(1)防拆开关:外壳被翻开探测器发射报警信号。(2)与主机对码:将主机要对码防区拨“ON”,按探测器防拆开关一次后发出信号,主机鸣响一声表示对码成功。(3)电池低压报警:当电池电压降低时,人体移动时LED灯闪次,静态环境不告警。(4)编码地址:出厂已设好。(5)设防时间选择:约3秒或30秒,由跳线块选择。(6)可以与多种主机兼容。2.技术参数:(1)工作电压:9V锂锰电池500mAh(2)工作电流:静态:﹤30μA报警:﹤16mA(3)探测角度:110°(4)工作环境:-10℃~50℃(5)外型尺寸:143×55×68mmLinux客户端的主要功能有:监控功能:用户通过效劳器终端向效劳器发送监控请求,明确需要进行的监控类型。效劳器收到请求后,向终端发送相关的多媒体信息,包括图片或视频。在视频监控功能中用户向效劳器发起视频监控请求。效劳器通过摄像头捕捉室内的视频信息后,将这些信息通过无线网络发送到移动终端,经过合法的身份验证时,用户可以查看这些视频。而在图片监控的时候效劳器通过摄像头对室内进行拍照。将照片通过无线网络发送到移动通信终端,同样也应该经过合法的身份验证,用户看到是那么是这些图像。15.2系统模块功能描述

图15-3监控功能活动图历史查询功能:用户可以通过发送一个历史视频浏览的请求,将想浏览的历史视频的时间发送到效劳器端。效劳器找到这个时间端的视频后,通过网络将视频数据发送到客户端,用户可以看该视频数据。如果在被请求的时间段中,用户没有将视频捕捉模式设置为实时捕捉,或者不是定时拍照时间,那么向客户端发送一个错误信息。数据捕捉功能:包括实时捕捉功能、触发捕捉功能、定时捕捉功能。用户可以在终端上访问效劳器端的功能设置页面,设置视频捕捉模式,并将这些视频数据存入效劳器中。自动提醒功能:通过在用户室内的大门、窗台、厨房和卫生间里安装传感器,实现对非法入室、煤气泄漏和火灾监控。传感器捕捉到报警信号后将该信号传到效劳器。然后效劳器将该信息转换为文本信息发送到终端用户。管理功能:用户可以通过浏览登录效劳器的网页,设置需要获得功能模式和管理个人信息,如密码、绑定的号等。15.3软件平台与开发工具

15.3.1Linux系统15.3.2Shell脚本15.3.3GCC编译器15.3.4Make工程管理器156.3.5Socket编程接口从二十世纪八十年代末开始,陆续出现了一些嵌入式操作系统,比较著名的有Vxwork、Neculeus、pSOS和WindowsCE。但这些专用操作系统都是商业化产品,其高昂的价格使许多做低端产品的小公司望而却步,而且,源代码封闭性也大大限制了开发者的积极性。Linux是一种遵循POSIX标准〔POSIX是一套由IEEE即电气和电子工程学会所制定的操作系统界面标准〕的开放源代码的操作系统,与UNIX的风格非常相像,同时具有SystemV和BSD的扩展特性,但是Linux系统的核心代码已经全部重新编写。作为一个操作系统,Linux几乎满足当今Unix操作系统的所有要求,因此,它具有Unix操作系统的根本特征。15.3.1Linux系统符合POSIX1003.1标准:POSIX1003.1标准定义了一个最小的Unix操作系统接口,任何操作系统只有符合这一标准,才有可能运行Unix程序。Unix具有丰富的应用程序,当今绝大多数操作系统都把满足POSIX1003.1标准作为实现目标,Linux也不例外,它完全支持POSIX1003.1标准。支持多用户访问和多任务编程:Linux是一个多用户操作系统,它允许多个用户同时访问系统而不会造成用户之间的相互干扰。另外,Linux还支持真正的多用户编程,一个用户可以创立多个进程,并使各个进程协同工作来完成用户的需求。采用页式存储管理:页式存储管理使Linux能更有效地利用物理存储空间,页面的换入换出为用户提供了更大的存储空间。支持动态链接:用户程序的执行往往离不开标准库的支持,一般的系统往往采用静态链接方式,即在装配阶段就已将用户程序和标准库链接好,这样,当多个进程运行时,可能会出现库代码在内存中有多个副本而浪费存储空间的情况。Linux支持动态链接方式,当运行时才进行库链接,如果所需要的库已被其它进程装入内存,那么不必再装入,否那么才从硬盘中将库调入。这样能保证内存中的库程序代码是唯一的。支持多种文件系统:Linux能支持多种文件系统。目前支持的文件系统有:EXT2、EXT、XIAFS、ISOFS、HPFS、MSDOS、UMSDOS、PROC、NFS、SYSV、MINIX、SMB、UFS、NCP、VFAT、AFFS。Linux最常用的文件系统是EXT2,它的文件名长度可达255字符,并且还有许多特有的功能,使它比常规的Unix文件系统更加平安。支持TCP/IP、SLIP和PPP:在Linux中,用户可以使用所有的网络效劳,如网络文件系统、远程登录等。SLIP和PPP能支持串行线上的TCP/IP协议的使用,这意味着用户可用一个高速Modem通过线连入Internet网中。Shell其实是内核与用户之间的一个接口,如果有一系列经常使用的linux命令,可以把它们存储在一个文件中。Shell可以读取这个文件,并执行其中的命令。这样的文件成为脚本文件。Shell脚本在处理自动循环或大的任务方面可节省大量的时间,且功能强大。如果有处理一个任务的命令清单,不得不一个一个敲进去,然后观察输出结果,再决定它是否正确,如果正确,再继续下一个任务,否那么再回到清单一步步观察。一个任务可能是将文件分类、向文件插入文本、迁移文件、从文件中删除行、去除系统过期文件、以及系统一般的管理维护工作等等。创立一个脚本,在使用一系列系统命令的同时,可以使用变量、条件、算术和循环快速创立脚本以完成相应工作。这比在命令行下一个个敲入要节省大量的工作时间。15.3.2Shell脚本Linux系统下的GCC〔GNUCCompiler〕是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。GCC是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。GCC编译器能将C、C++语言源程序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,GCC将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。15.3.3GCC编译器下面来介绍GCC所遵循的局部约定规那么。.c为后缀的文件,C语言源代码文件;.a为后缀的文件,是由目标文件构成的档案库文件;.C,.cc或.cxx为后缀的文件,是C++源代码文件;.h为后缀的文件,是程序所包含的头文件;.i为后缀的文件,是已经预处理过的C源代码文件;.ii为后缀的文件,是已经预处理过的C++源代码文件;.m为后缀的文件,是Objective-C源代码文件;.o为后缀的文件,是编译后的目标文件;.s为后缀的文件,是汇编语言源代码文件;.S为后缀的文件,是经过预编译的汇编语言源代码文件。命令GCC首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。接着进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。当所有的目标文件都生成之后,GCC就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到适宜的地方。当使用GNU中的编译语言编程开发应用时,很多时候要使用Make管理工程。利用Make工具,可以将大型的开发工程分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序而言,使用Make工具和Makefile文件就可以清晰地理顺各个源文件之间的关系。Make工具可以自动完成编译工作,并且只对程序员在上次编译后修改正的局部进行编译。因此,有效地利用Make工具可以大大提高工程开发的效率。15.3.4Make工程管理器Make工具最根本的功能是调用Makefile文件,通过Makefile文件来描述源程序之间的相互依赖关系并自动维护编译工作。当然,Makefile文件需要按照某种语法进行编写,需要说明如何编译各个源文件并连接生成可执行文件,以及定义源文件之间的依赖关系。Makefile文件是许多编译器〔包括Windows下的编译器〕维护编译信息的常用方法,在集成开发环境中,用户可以通过友好的界面修改Makefile文件。Makefile这个文件告诉Make以何种方式编译源代码和链接程序。典型地,可执行文件可由一些.o文件按照一定的顺序生成或者更新。如果在你的工程中已经存在一个或者多个正确的Makefile。当对工程中的假设干源文件修改以后,需要根据修改来更新可执行文件或者库文件,正如前面提到的只需要在Shell下执行“Make”,Make会自动根据修改情况完成源文件的对应.o文件的更新、库文件的更新、最终的可执行程序的更新。Make通过比较对应文件〔规那么的目标和依赖〕的最后修改时间,来决定哪些文件需要更新、那些文件不需要更新。对需要更新的文件Make就执行数据库中所记录的相应命令〔在Make读取Makefile以后会建立一个编译过程的描述数据库。此数据库中记录了所有各个文件之间的相互关系,以及它们的关系描述〕来重建它,对于不需要重建的文件Make什么也不做。而且可以通过Make的命令行选项来指定需要重新编译的文件。

Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。15.3.5Socket编程接口Socket接口设计者最先是将接口放在Unix操作系统里面的。假设了解Unix系统的输入和输出的话,就很轻易了解Socket了。网络的Socket数据传输是一种非凡的I/O,Socket也是一种文件描述符。Socket也具有一个类似于翻开文件的函数调用Socket,该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket〔SOCK_STREAM〕和数据报式Socket〔SOCK_DGRAM〕。流式是一种面向连接的Socket,针对于面向连接的TCP效劳应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP效劳应用。15.4基于嵌入式平台的网络效劳器本节主要分析并实现了基于嵌入式平台的WEB效劳器、视频效劳器以及SSH效劳器的构建。其中使用嵌入式WEB效劳器可以方便的通过基于JAVA的浏览器进行实时的视频监控。嵌入式视频效劳器可以对视频进行采集和传输。而嵌入式SSH效劳器保障了平安有效地登陆到开发板上进行实时的控制和维护。由于嵌入式设备资源一般都比较有限,并且也不需要能同时处理很多用户的请求,因此不会使用Linux下最常用的如Apache等效劳器,而需要使用一些专门为嵌入式设备设计的Web效劳器,这些Web效劳器在存储空间和运行时所占有的内存空间上都会非常适合于嵌入式应用场合。常见的嵌入式Web效劳器主要有:Ligd、Td、Sd和Boa等。15.4.1嵌入式WEB效劳器本文使用的是开源的Web效劳器Boa。Boa是一个非常小巧的Web效劳器,可执行代码只有约60KB。它是一个单任务Web效劳器,只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和平安,在其站点公布的性能测试中,Boa的性能要好于Apache效劳器。1.首先获得boa的源代码://2.进入boa源码目录,执行configure进行配置,并指定交叉编译./configure--host=arm-linux3.然后执行make生成boa可执行程序4.最后通过arm-linux-strip去掉boa调试信息,以减少程序体积5.修改examples目录下的boa.confPort80UserrootGrouprootErrorLog/dev/consoleAccessLog/dev/nullServerNamehrbeu06wsDocumentRoot/wwwDirectoryIndexindex.htmlScriptAlias/cgi-bin//www/cgi-bin/KeepAliveMax1000KeepAliveTimeout10MimeTypes/etc/mime.typesDefaultTypetext/plain6.编写Boa的启动脚本。#!/bin/sh####BEGININITINFO#Provides:boa#Required-Start:$local_fs$remote_fs$network#Required-Stop:$local_fs$remote_fs$network#Default-Start:2345#Default-Stop:016#Short-Description:Boa:lightweightandhighperformancewebserver###ENDINITINFOPATH=/sbin:/bin:/usr/sbin:/usr/binDAEMON=/usr/sbin/boaNAME=boaDESC="HTTPserver"test-x$DAEMON||exit0set-ecase"$1"instart) echo-n"Starting$DESC:$NAME" start-stop-daemon--start--quiet--exec$DAEMON echo"." ;;stop) echo-n"Stopping$DESC:$NAME" start-stop-daemon--stop--quiet--oknodo--exec$DAEMON echo"." ;;restart) echo-n"Restarting$DESC:$NAME..." start-stop-daemon--stop--signalHUP--quiet--oknodo--exec$DAEMON echo"done.";;reload) # # Ifthedaemoncanreloaditsconfigfilesonthefly # forexamplebysendingitSIGHUP,doithere. # # Ifthedaemonrespondstochangesinitsconfigfile # directlyanyway,makethisado-nothingentry. # echo-n"Reloading$DESCconfiguration..." start-stop-daemon--stop--signal1--quiet--oknodo--exec$DAEMON echo"done.";;*) N=/etc/rc.d/init.d/$NAME #echo"Usage:$N{start|stop|restart|reload|force-reload}">&2 echo"Usage:$N{start|stop|restart|reload}">&2 exit1 ;;esacexit0 图15-3视频效劳器流程图15.4.2嵌入式视频效劳器视频采集局部主要采用的是Linux中的视频子系统Video4Linux。Video4Linux是Linux内核里支持视频设备的一组API,视频应用程序通过标准的系统调用就可操纵各种不同的视频捕获设备。Video4Linux向虚拟文件系统注册视频设备文件,应用程序通过操纵视频设备文件来实现对视频设备的访问。主要有两种方法:内存映射和直接从设备读取。本文中使用的是Gspca/Spca5xx摄像头驱动程序。通过驱动程序本身就可以实现对Z-Star301摄像头采集到的图像进行硬件压缩,直接输出JPEG的二进制位流,从而减轻了视频效劳器的压力。无线网络视频传输局部采用LinuxSocket和多线程技术。通过无线网卡将采集到的一帧帧的JPEG二进制位流发送到远程客户端。本文中使用的是开源的针对嵌入式设计的网络视频效劳器Servfox,可以从这里获取。1.首先解压缩2.指定Makefile文件cpMakefile.armMakefile3.执行make进行编译,然后通过arm-linux-strip去掉servfox调试信息以减少程序体积makearm-linux-stripservfox4.编写servfox的启动脚本。#!/bin/sh####BEGININITINFO#Provides:servfox#Required-Start:#Required-Stop:#Default-Start:2345#Default-Stop:016#Short-Description:Servfox:embeddedwebcamserver###ENDINITINFOPATH=/sbin:/bin:/usr/sbin:/usr/binDAEMON=/usr/sbin/servfoxNAME=servfoxDESC="Webcamserver"test-x$DAEMON||exit0set-ecase"$1"instart) echo-n"Starting$DESC:$NAME" start-stop-daemon--start--quiet--exec$DAEMON---d/dev/video0-g-s320x240-w7070>>/var/log/messages2>&1& echo"." ;;stop) echo-n"Stopping$DESC:$NAME" start-stop-daemon--stop--quiet--oknodo--exec$DAEMON echo"." ;;

restart) echo-n"Restarting$DESC:$NAME..." start-stop-daemon--stop--signalHUP--quiet--oknodo--exec$DAEMON echo"done.";;reload) # # Ifthedaemoncanreloaditsconfigfilesonthefly # forexamplebysendingitSIGHUP,doithere. # # Ifthedaemonrespondstochangesinitsconfigfile # directlyanyway,makethisado-nothingentry. # echo-n"Reloading$DESCconfiguration..." start-stop-daemon--stop--signal1--quiet--oknodo--exec$DAEMON echo"done.";;*) N=/etc/rc.d/init.d/$NAME #echo"Usage:$N{start|stop|restart|reload|force-reload}">&2 echo"Usage:$N{start|stop|restart|reload}">&2 exit1 ;;esacexit0 SSH为SecureShell的缩写,由IETF的网络工作小组所制定。SSH为建立在应用层和传输层根底上的平安协议。传统的网络效劳程序,如Ftp和Telnet其本质上都是不平安的。因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人〔man-in-the-middle〕攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的效劳器接收用户传给效劳器的数据,然后再冒充用户把数据传给真正的效劳器。而SSH是目前较可靠,专为远程登录会话和其他网络效劳提供平安性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。SSH之另一项优点为其传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为Ftp、POP、甚至为PPP提供一个平安的通道。15.4.3嵌入式SSH效劳器本文使用的是基于MIT-style协议的开源软件Dropbear。Dropbear是一个轻量级的、相对较小的SSH2效劳器和客户端。它运行在一个不同的基于POSIX的平台,尤其适合用于嵌入式系统。1.首先移植zlib由于Dropbear依赖于zlib的库,所以这里先要移植zlib。首先,执行configure进行配置,并指定安装路径./configure\修改Makefile,指定交叉编译CC=arm-linux-gccLDSHARED=$(CC)-shared-Wl,-soname,,--version-script,zlib.mapCPP=arm-linux-gcc-EAR=arm-linux-arrcRANLIB=arm-linux-ranlib最后执行make&&makeinstall,将zlib库安装到指定的路径下面。2.接下来获取Dropbear的源代码://。通过configure进行配置,指定交叉编译./configure--host=arm-linux3.执行make,通过arm-linux-strip去掉dropbear调试信息,以减少程序体积arm-linux-strip{dropbear,dropbearconvert,dropbearkey}4.将dropbear和dropbearkey复制到usr/sbin目录,然后建立配置目录etc/dropbear。最后利用dropbearkey来生成密钥dropbearkey-trsa-fetc/dropbear/dropbear_rsa_host_keydropbearkey-tdss-fetc/dropbear/dropbear_dss_host_key5.使用ssh-keygen生成基于RSA加密算法的公钥和私钥,增强平安性6.编写dropbear的启动脚本。#!/bin/sh###BEGININITINFO#Provides:dropbear#Required-Start:$remote_fs$syslog#Required-Stop:$remote_fs$syslog#Default-Start:2345#Default-Stop:016###ENDINITINFO###PATH=/sbin:/bin:/usr/sbin:/usr/binDAEMON=/usr/sbin/dropbearNAME=dropbearDESC="DropbearSSHserver"DROPBEAR_PORT=22DROPBEAR_EXTRA_ARGS=NO_START=0set-ecancel(){echo"$1">&2;exit0;};test!-r/etc/default/dropbear||./etc/default/dropbeartest-x"$DAEMON"||cancel"$DAEMONdoesnotexistorisnotexecutable."test!-x/usr/sbin/update-service||!update-service--checkdropbear||cancel'Thedropbearserviceiscontrolledthroughrunit,usethesv(8)program'test-z"$DROPBEAR_BANNER"||\DROPBEAR_EXTRA_ARGS="$DROPBEAR_EXTRA_ARGS-b$DROPBEAR_BANNER"test-n"$DROPBEAR_RSAKEY"||\DROPBEAR_RSAKEY="/etc/dropbear/dropbear_rsa_host_key"test-n"$DROPBEAR_DSSKEY"||\DROPBEAR_DSSKEY="/etc/dropbear/dropbear_dss_host_key"test-n"$DROPBEAR_RECEIVE_WINDOW"||\DROPBEAR_RECEIVE_WINDOW="65536"case"$1"instart) test"$NO_START"="0"||cancel'NO_STARTisnotsettozero.' echo-n"Starting$DESC:" start-stop-daemon--start--quiet--pidfile/var/run/"$NAME".pid\ --exec"$DAEMON"---d"$DROPBEAR_DSSKEY"-r"$DROPBEAR_RSAKEY"\ -p"$DROPBEAR_PORT"-W"$DROPBEAR_RECEIVE_WINDOW"$DROPBEAR_EXTRA_ARGS echo"$NAME." ;;stop) echo-n"Stopping$DESC:" start-stop-daemon--stop--quiet--oknodo--pidfile/var/run/"$NAME".pid echo"$NAME." ;;restart|force-reload) test"$NO_START"="0"||cancel'NO_STARTisnotsettozero.' echo-n"Restarting$DESC:" start-stop-daemon--stop--quiet--oknodo--pidfile/var/run/"$NAME".pid sleep1 start-stop-daemon--start--quiet--pidfile/var/run/"$NAME".pid\ --exec"$DAEMON"---d"$DROPBEAR_DSSKEY"-r"$DROPBEAR_RSAKEY"\ -p"$DROPBEAR_PORT"-W"$DROPBEAR_RECEIVE_WINDOW"$DROPBEAR_EXTRA_ARGS echo"$NAME." ;;*) N=/etc/init.d/$NAME echo"Usage:$N{start|stop|restart|force-reload}">&2 exit1 ;;esacexit015.5视频监控系统的实现

嵌入式远程视频监控系统客户端主要分为两种方式来实现。一种是采用基于WEB效劳器的B/S〔Browser/Server〕效劳机制。另一种是采用基于Windows平台客户端C/S〔Client/Server〕的效劳机制。B/S效劳机制是伴随着Internet技术的兴起而产生的。现如今Java技术广泛的应用于互联网,本文使用的是基于Java控件来实时的显示视频信息。其主要特点如下:视频监控系统部署在WEB效劳器上,远程客户端不需要人工安装软件,用户只要通过浏览器就可以直接访问,简单方便。维护和升级方式简单。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对效劳器进行,节省人力和物力。B/S效劳机制通过一种集中处理的模式,大大降低了对远程客户端的软硬件的需求。只要远程客户端PC机配置有浏览器并且能够上网进行监控。15.5.1基于Java的浏览器实现B/S效劳机制通过一种集中处理的模式,大大降低了对远程客户端的软硬件的需求。只要远程客户端PC机配置有浏览器并且能够上网进行监控。将PC平台的spcaview中的-java-applet目录复制到嵌入式系统根目录下,并且重命名为www,其中包含了Java的控件。将其中的index-sample.html稍作修改并且重命名为index.html。启动嵌入式WEB效劳器和嵌入式视频效劳器就可以了。基于Java的显示流程图如图15-4所示。图15-4基于Java的显示流程图这里,嵌入式WEB效劳器就是我们的效劳端。可以使用无线网络通过浏览器登录到远程WEB效劳器上,就可以启用Java控件来进行实时的流媒体显示了。实验现象如图15-5和图15-6所示。图15-5无线网络连接状态图15-6基于Java的浏览器实现下面要介绍的是在Windows平台下,基于无线网络的远程视频监控的客户端的实现。这里,主要是参考了spcaview的实现机制,对网络视频流进行传输,并且调用Windows本地平台的SDL库来进行显示。SDL是SimpleDirectMediaLayer〔简易直控媒体层〕的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音频、键盘和鼠标〔事件〕、游戏摇杆等。当然,最为重要的是提供了2D图形帧缓冲〔framebuffer〕的接口,以及为OpenGL与各种操作系统之间提供了统一的标准接口以实现3D图形。15.5.2Windows平台下客户端的分析和实现SDL支持主流的操作系统,包括Windows和Linux。它所支持的其他平台〔BeOS,MacOS,MacOSX,FreeBSD,NetBSD,OpenBSD,BSD/OS,Solaris,IRIX,QNX〕。虽然SDL时常被比较为跨平台的DirectX,然而事实上SDL是定位成以精简的方式来完成根底的功能,它大幅度简化了控制图像、声音、输出入等工作所需撰写的代码。这里分析一下程序的工作流程,如图15-7所示。图15-7程序的工作流程图1.首先,初始化WinsockWORDwVersion=MAKEWORD(2,0);WSADATAwsData;if(WSAStartup(wVersion,&wsData)!=0){printf("Initializews2_32.dllError!\n");exit(0);}2.接下来,初始化SDLif((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER)==-1)){printf("CouldnotinitializeSDL:%s.\n",SDL_GetError());exit(-1);}videoOk=1;atexit(SDL_Quit);3.建立套接字if((server_handle=socket(AF_INET,SOCK_STREAM,0))==-1)exit_fatal("ErroropeningsocketAbort!");绑定端口if(bind(server_handle,(structsockaddr*)&servadr,sizeof(structsockaddr))==-1)exit_fatal("

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论