嵌入式Linux编程入门与开发实例-第15章.ppt
-
资源ID:70009656
资源大小:1.22MB
全文页数:77页
- 资源格式: PPT
下载积分:15金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
嵌入式Linux编程入门与开发实例-第15章.ppt
第第1515章章基于基于基于基于ARM LinuxARM LinuxARM LinuxARM Linux的家庭安全监控系统设的家庭安全监控系统设的家庭安全监控系统设的家庭安全监控系统设计计计计 随随着着经经济济的的快快速速发发展展,生生活活节节奏奏的的提提高高,人人们们照照顾顾家家庭庭的的时时间间越越来来越越少少,感感觉觉时时间间也也越越来来越越紧紧张张:不不但但要要周周旋旋在在繁繁杂杂的的工工作作之之中中,同同时时也也要要兼兼顾顾自自己己的的“家家”。怎怎样样才才能能够够解解决决这这个个矛矛盾盾,做做到到“鱼鱼与与熊熊掌掌兼兼得得”成成了了人人们们关关注注的的重重点点。而而传传统统的的网网络络视视频频监监控控系系统统如如模模拟拟视视频频监监控控,都都是是应应用用到到专专用用的的视视频频监监控控领领域域,采采用用专专有有线线路路、模模拟拟电电视视信信号号等等实实现现,需需要要较较多多的的硬硬件件,整整个个系系统统昂昂贵贵、通通用用性性差差、不不易易扩扩展展、建建设设安安装装复复杂杂,需需要要专专业业人人士士完完成成。这这些些要要求求都导致了该类系统难以普及进入普通家庭。都导致了该类系统难以普及进入普通家庭。第第1515章章基于基于基于基于ARM LinuxARM LinuxARM LinuxARM Linux的家庭安全监控系统设的家庭安全监控系统设的家庭安全监控系统设的家庭安全监控系统设计计计计系统功能和组成系统功能和组成 15.1系统模块功能描述系统模块功能描述 15.2软件平台与开发工具软件平台与开发工具 15.3基于嵌入式平台的网络服务器嵌入式平台的网络服务器 15.4第第1515章章基于基于基于基于ARM LinuxARM LinuxARM LinuxARM Linux的家庭安全监控系统设的家庭安全监控系统设的家庭安全监控系统设的家庭安全监控系统设计计计计视频监控系统的实现视频监控系统的实现 15.5红外监控模块设计红外监控模块设计 15.615.1 15.1 系统功能和组成系统功能和组成 家庭安全监控系统的目标是使用户可以随时通过移动通信设备、通过网络查看被监控地点的摄像设备捕捉到的视频信息。家里的摄像设备进行监视,将视频信息传送到服务器进行处理和保存。当用户向服务器发出请求时,服务器将数据通过无线网络传送至用户的移动通信终端。整个家庭安全服务系统包括服务器、传感器和客户端三部分组成。传感器通过无线网络实现对用户家庭安全情况的实时监测。本系统使用无线技术在家庭内组建无线局域网络,并通过网络中的传感器设备,如无线摄像头、无线红外探头等对用户室内情况监测,将监测信息通过无线局域网传送数据至服务器,供服务器进行相应处理。摄像头负责采集家庭室内视频及图像信号,并传输至服务器。红外探头负责监控家庭内是否有陌生人入侵,并将信号传输至服务器。Linux 客户端系统,通过有限网络实现对用户家庭安全情况实时监测。其中屏幕负责显示图片或者视频。图15-1为家庭安全服务系统工作网络图,其中防火墙与监控设备之间由无线节点和服务器相连,移动通信设备与客户端之间存在TCP/IP通信交互协议。图15-1 家庭安全监控系统结构图S3C2410是是韩韩国国三三星星公公司司生生产产的的一一款款基基于于ARM920T体体系系结结构构的的32位位高高性性能能CPU,丰丰富富的的外外设设接接口口,203MHz的的主主频频使使它它特特别别适适合合进进行行操操作作系系统统的的移移植植和和进进行行应应用用开开发发。S3C2410采采用用0.18m制制造造工工艺艺的的32位位微微控控制制器器。该该处处理理器器拥拥有有独独 立立 的的 16kB指指 令令 Cache和和 16kB数数 据据 Cache、MMU,支支持持TFT的的LCD控控制制器器,NAND闪闪存存控控制制 器器,3路路 UART,4路路 DMA,4路路 带带 PWM的的Timer,I/O口口,RTC,8路路10位位ADC,Touch Screen接接口口,IIC-BUS 接接口口,IIS-BUS 接接口口,2个个USB主主机机,1个个USB设设备备,SD主主机机和和MMC接接口口,2路路SPI。15.1.1 S3C241015.1.1 S3C2410介绍介绍S3C2410的内部结构如图15-2所示。图15-2 S3C2410内部结构图 1.片上功能介绍l1.8V的ARM920T内核,1.8V/2.5V/3.3V存储系统,带有3.3V16KB指令和16KB数据缓存及MMU单元的外部I/O接口的微处理器;l外部存储器控制(SDRAM控制和芯片选择逻辑);lLCD控制器(支持4K颜色的STN或256K色TFT的LCD),带有1个通道的LCD专用DMA控制器;l4通道DMA,具有外部请求引脚;l3通道UART(支持IrDA1.0,16字节发送FIFO及16字节接收FIFO)和2通道SPI接口;l1个通道多主I2C总线控制器/1通道IIS总线控制器;l0版本SD主机接口及2.11版本兼容的MMC卡协议;l2个主机接口的USB口和1个设备USB口(1.1版本);l4通道PWM定时器/1通道内部计时器;l看门狗定时器;l117位通用目的I/O口、24通道外部中断源;l电源控制:正常、慢速、空闲及电源关闭模式;l带触摸屏接口的8通道10位ADC;l带日历功能的实时时钟控制器;l具有PLL的片上时钟发生器。2.体系结构l集成了手持设备和通用嵌入式系统的解决方案;l32/16位结构体系和ARM920T CPU核的强大指令体系;l增强的ARM MMU体系结构支持WinCE、POC32和Linux操作系统;l指令缓存、数据缓存、写缓冲器和RAM物理地址标签减少了主存储器带宽和潜在性能的影响;lARM920T CPU核支持ARM调试体系结构;l内置的高级微控制总线体系结构(AMBA)(AMBA2.0,AHB/APB)。3.系统管理器l支持小/大端模式;l寻址空间:每个bank 128M字节(总共1G字节);l支持每个bank可编程的8/16/32位数据总线宽度;lbank0到bank6具有固定的bank起始地址;lbank7具有可编程的bank起始地址和bank大小;l共有8个存储器bank:6个存储器bank用于ROM,SRAM及其它;2个存储器bank用于ROM/SRAM/同步DRAM;l所有的存储器bank具有可编程的操作周期;l支持外部等待信号延长总线周期;l支持掉电时的SDRAM自刷新模式;l支持多种类型的引导ROM(NOR/Nand Flash,EEPROM及其它)。各各种种物物体体因因为为表表面面热热度度的的不不同同,都都会会辐辐射射出出强强弱弱不不同同的的红红外外线线,物物体体不不同同辐辐射射的的红红外外线线波波长长也也有有不不同同。红红外外探探测测主主要要用用来来探探测测人人体体和和其其他他一一些些入入侵侵的的移移动动物物体体,当当人人体体进进入入探探测测区区域域,稳稳定定不不变变的的热热辐辐射射被被破破坏坏,产产生生一一个个变变化化的的热热辐辐射射,红外传感器接收后放大、处理,发出报警信号。红外传感器接收后放大、处理,发出报警信号。15.1.2 15.1.2 无线红外探头无线红外探头RD-HW14GRD-HW14G 无线红外探头RD-HW14G采用先进的数字信号处理技术,由高精度被动红外探测头和逻辑数码电路设计组成,具有更强的抗干扰能力、精细的全范围温度补偿;含微处理,CPU控制,防小宠物;超微功耗设计,智能节电模式,当探测不到信号时,自动进入30秒节电模式。探测器通过探测人体辐射的红外热能而发射无线数码信号来启动主机相应报警。具有外形美观、安全可靠、受环境影响小,安装使用方便等优点,适合目前现代家居阳台落地窗、超大窗户等使用。1.特点及结构原理:(1)防拆开关:外壳被打开探测器发射报警信号。(2)与主机对码:将主机要对码防区拨“ON”,按探测器防拆开关一次后发出信号,主机鸣响一声表示对码成功。(3)电池低压报警:当电池电压降低时,人体移动时LED灯闪次,静态环境不告警。(4)编码地址:出厂已设好。(5)设防时间选择:约3秒或30秒,由跳线块选择。(6)可以与多种主机兼容。2.技术参数:(1)工作电压:9V锂锰电池500mAh(2)工作电流:静态:30A报警:16mA(3)探测角度:110(4)工作环境:-1050(5)外型尺寸:1435568mmLinux 客户端的主要功能有:客户端的主要功能有:监控功能:用户通过服务器终端向服务器发送监控请监控功能:用户通过服务器终端向服务器发送监控请求,明确需要进行的监控类型。服务器收到请求后,向求,明确需要进行的监控类型。服务器收到请求后,向终端发送相关的多媒体信息,包括图片或视频。在视频终端发送相关的多媒体信息,包括图片或视频。在视频监控功能中用户向服务器发起视频监控请求。服务器通监控功能中用户向服务器发起视频监控请求。服务器通过摄像头捕捉室内的视频信息后,将这些信息通过无线过摄像头捕捉室内的视频信息后,将这些信息通过无线网络发送到移动终端,经过合法的身份验证时,用户可网络发送到移动终端,经过合法的身份验证时,用户可以查看这些视频。而在图片监控的时候服务器通过摄像以查看这些视频。而在图片监控的时候服务器通过摄像头对室内进行拍照。将照片通过无线网络发送到移动通头对室内进行拍照。将照片通过无线网络发送到移动通信终端,同样也应该经过合法的身份验证,用户看到是信终端,同样也应该经过合法的身份验证,用户看到是则是这些图像。则是这些图像。15.2 15.2 系统模块功能描述系统模块功能描述 图15-3 监控功能活动图 历史查询功能:用户可以通过发送一个历史视频浏览的请求,将想浏览的历史视频的时间发送到服务器端。服务器找到这个时间端的视频后,通过网络将视频数据发送到客户端,用户可以看该视频数据。如果在被请求的时间段中,用户没有将视频捕捉模式设置为实时捕捉,或者不是定时拍照时间,则向客户端发送一个错误信息。数据捕捉功能:包括实时捕捉功能、触发捕捉功能、定时捕捉功能。用户可以在终端上访问服务器端的功能设置页面,设置视频捕捉模式,并将这些视频数据存入服务器中。自动提醒功能:通过在用户室内的大门、窗台、厨房和卫生间里安装传感器,实现对非法入室、煤气泄漏和火灾监控。传感器捕捉到报警信号后将该信号传到服务器。然后服务器将该信息转换为文本信息发送到终端用户。管理功能:用户可以通过浏览登录服务器的网页,设置需要获得功能模式和管理个人信息,如密码、绑定的手机号等。15.3 15.3 软件平台与开发工具软件平台与开发工具 15.3.1 Linux系统系统 15.3.2 Shell脚本脚本 15.3.3 GCC编译器编译器 15.3.4 Make项目管理器项目管理器 156.3.5 Socket编程接口编程接口 从从二二十十世世纪纪八八十十年年代代末末开开始始,陆陆续续出出现现了了一一些些嵌嵌入入式式操操作作系系统统,比比较较著著名名的的有有Vxwork、Neculeus、pSOS和和Windows CE。但但这这些些专专用用操操作作系系统统都都是是商商业业化化产产品品,其其高高昂昂的的价价格格使使许许多多做做低低端端产产品品的的小小公公司司望望而而却却步步,而而且且,源源代代码码封封闭闭性性也也大大大大限限制制了了开开发发者者的的积积极极性性。Linux是是一一种种遵遵循循POSIX标标准准(POSIX是是一一套套由由IEEE即即电电气气和和电电子子工工程程学学会会所所制制定定的的操操作作系系统统界界面面标标准准)的的开开放放源源代代码码的的操操作作系系统统,与与UNIX的的风风格格非非常常相相像像,同同时时具具有有SystemV和和BSD的的扩扩展展特特性性,但但是是Linux系系统统的的核核心心代代码码已已经经全全部部重重新新编编写写。作作为为一一个个操操作作系系统统,Linux几几乎乎满满足足当当今今Unix操操作作系系统统的的所所有有要要求求,因因此此,它它具具有有Unix操操作作系系统统的的基基本特征。本特征。15.3.1 Linux15.3.1 Linux系统系统符符合合POSIX 1003.1标标准准:POSIX 1003.1标准定义了一个最小的Unix操作系统接口,任何操作系统只有符合这一标准,才有可能运行Unix程序。Unix具有丰富的应用程序,当今绝 大多数操作系统都把满足POSIX 1003.1标准作为实现目标,Linux也不例外,它完全支持POSIX 1003.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.2 Shell15.3.2 Shell脚本脚本 Linux系系统统下下的的GCC(GNU C Compiler)是是GNU推推出出的的功功能能强强大大、性性能能优优越越的的多多平平台台编编译译器器,是是GNU的的代代表表作作品品之之一一。GCC是是可可以以在在多多种种硬硬体体平平台台上上编编译译出出可可执执行行程程序序的的超超级级编编译译器器,其其执执行行效效率率与与一一般般的的编编译译器器相相比比平均效率要高平均效率要高20%30%。GCC编编译译器器能能将将C、C+语语言言源源程程序序和和目目标标程程序序编编译译、连连接接成成可可执执行行文文件件,如如果果没没有有给给出出可可执执行行文文件件的的名名字字,GCC将将生生成成一一个个名名为为a.out的的文文件件。在在Linux系系统统中中,可可执执行行文文件件没没有有统统一一的的后后缀缀,系系统统从从文文件件的的属属性性来来区区分分可可执行文件和不可执行文件。执行文件和不可执行文件。15.3.3 GCC15.3.3 GCC编译器编译器下面来介绍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.4 Make15.3.4 Make项目管理器项目管理器 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.5 Socket15.3.5 Socket编程接口编程接口 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 15.4 基于嵌入式平台的网络服务基于嵌入式平台的网络服务器器 本节主要分析并实现了基于嵌入式平台的WEB服务器、视频服务器以及SSH服务器的构建。其中使用嵌入式WEB服务器可以方便的通过基于JAVA的浏览器进行实时的视频监控。嵌入式视频服务器可以对视频进行采集和传输。而嵌入式SSH服务器保障了安全有效地登陆到开发板上进行实时的控制和维护。由由于于嵌嵌入入式式设设备备资资源源一一般般都都比比较较有有限限,并并且且也也不不需需要要能能同同时时处处理理很很多多用用户户的的请请求求,因因此此不不会会使使用用Linux下下最最常常用用的的如如Apache等等服服务务器器,而而需需要要使使用用一一些些专专门门为为嵌嵌入入式式设设备备设设计计的的Web服服务务器器,这这些些Web服服务务器器在在存存储储空空间间和和运运行行时时所所占占有有的的内内存存空空间间上上都都会会非非常常适适合合于于嵌嵌入入式式应应用用场场合合。常常见见的的嵌嵌入入式式Web服服务务器器主主要要有有:Lighttpd、Thttpd、Shttpd和和Boa等等。15.4.1 15.4.1 嵌入式嵌入式WEBWEB服务器服务器 本文使用的是开源的Web服务器Boa。Boa是一个非常小巧的Web服务器,可执行代码只有约60KB。它是一个单任务Web服务器,只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全,在其站点公布的性能测试中,Boa的性能要好于Apache服务器。1.首先获得boa的源代码http:/www.boa.org2.进入boa源码目录,执行configure进行配置,并指定交叉编译./configure-host=arm-linux3.然后执行make生成boa可执行程序4.最后通过arm-linux-strip去掉boa调试信息,以减少程序体积5.修改examples目录下的boa.confPort 80User rootGroup rootErrorLog/dev/consoleAccessLog/dev/nullServerName hrbeu06wsDocumentRoot/wwwDirectoryIndex index.htmlScriptAlias/cgi-bin/www/cgi-bin/KeepAliveMax 1000KeepAliveTimeout 10MimeTypes/etc/mime.typesDefaultType text/plain6.编写Boa的启动脚本。#!/bin/sh#BEGIN INIT INFO#Provides:boa#Required-Start:$local_fs$remote_fs$network#Required-Stop:$local_fs$remote_fs$network#Default-Start:2 3 4 5#Default-Stop:0 1 6#Short-Description:Boa:lightweight and high performance web server#END INIT INFOPATH=/sbin:/bin:/usr/sbin:/usr/binDAEMON=/usr/sbin/boaNAME=boaDESC=HTTP servertest-x$DAEMON|exit 0set-ecase$1 in start)echo-n Starting$DESC:$NAMEstart-stop-daemon-start-quiet-exec$DAEMONecho.;stop)echo-n Stopping$DESC:$NAMEstart-stop-daemon-stop-quiet-oknodo-exec$DAEMONecho.;restart)echo-n Restarting$DESC:$NAME.start-stop-daemon-stop-signal HUP-quiet-oknodo-exec$DAEMONecho done.;reload)#If the daemon can reload its config files on the fly#for example by sending it SIGHUP,do it here.#If the daemon responds to changes in its config file#directly anyway,make this a do-nothing entry.#echo-n Reloading$DESC configuration.start-stop-daemon-stop-signal 1-quiet-oknodo-exec$DAEMONecho done.;*)N=/etc/rc.d/init.d/$NAME#echo Usage:$N start|stop|restart|reload|force-reload&2echo Usage:$N start|stop|restart|reload&2exit 1;esacexit 0图图15-3视频服务器流程图视频服务器流程图15.4.2 15.4.2 嵌入式视频服务器嵌入式视频服务器 视频采集部分主要采用的是Linux中的视频子系统Video4Linux。Video4Linux是Linux内核里支持视频设备的一组API,视频应用程序通过标准的系统调用就可操纵各种不同的视频捕获设备。Video4Linux向虚拟文件系统注册视频设备文件,应用程序通过操纵视频设备文件来实现对视频设备的访问。主要有两种方法:内存映射和直接从设备读取。本文中使用的是Gspca/Spca5xx摄像头驱动程序。通过驱动程序本身就可以实现对Z-Star 301摄像头采集到的图像进行硬件压缩,直接输出JPEG的二进制位流,从而减轻了视频服务器的压力。无线网络视频传输部分采用Linux Socket和多线程技术。通过无线网卡将采集到的一帧帧的JPEG二进制位流发送到远程客户端。本文中使用的是开源的针对嵌入式设计的网络视频服务器Servfox,可以从这里http:/mxhaard.free.fr/spca50 x/embedded/Servfox获取。1.首先解压缩servfox-R1_1_3.tar.gz2.指定Makefile文件cp Makefile.arm Makefile3.执行make进行编译,然后通过arm-linux-strip去掉servfox调试信息以减少程序体积makearm-linux-strip servfox4.编写servfox的启动脚本。#!/bin/sh#BEGIN INIT INFO#Provides:servfox#Required-Start:#Required-Stop:#Default-Start:2 3 4 5#Default-Stop:0 1 6#Short-Description:Servfox:embedded webcam server#END INIT INFOPATH=/sbin:/bin:/usr/sbin:/usr/binDAEMON=/usr/sbin/servfoxNAME=servfoxDESC=Webcam servertest-x$DAEMON|exit 0set-ecase$1 in start)echo-n Starting$DESC:$NAMEstart-stop-daemon-start-quiet-exec$DAEMON-d/dev/video0-g-s 320 x240-w 7070 /var/log/messages 2&1&echo.;stop)echo-n Stopping$DESC:$NAMEstart-stop-daemon-stop-quiet-oknodo-exec$DAEMONecho.;restart)echo-n Restarting$DESC:$NAME.start-stop-daemon-stop-signal HUP-quiet-oknodo-exec$DAEMONecho done.;reload)#If the daemon can reload its config files on the fly#for example by sending it SIGHUP,do it here.#If the daemon responds to changes in its config file#directly anyway,make this a do-nothing entry.#echo-n Reloading$DESC configuration.start-stop-daemon-stop-signal 1-quiet-oknodo-exec$DAEMONecho done.;*)N=/etc/rc.d/init.d/$NAME#echo Usage:$N start|stop|restart|reload|force-reload&2echo Usage:$N start|stop|restart|reload&2exit 1;esacexit 0SSH为为Secure Shell的的缩缩写写,由由IETF的的网网络络工工作作小小组组所所制制定定。SSH为为建建立立在在应应用用层层和和传传输输层层基基础础上上的的安安全全协协议议。传传统统的的网网络络服服务务程程序序,如如Ftp和和Telnet其其本本质质上上都都是是不不安安全全的的。因因为为它它们们在在网网络络上上用用明明文文传传送送数数据据、用用户户帐帐号号和和用用户户口口令令,很很容容易易受受到到中中间间人人(man-in-the-middle)攻攻击击方方式式的的攻攻击击。就就是是存存在在另另一一个个人人或或者者一一台台机机器器冒冒充充真真正正的的服服务务器器接接收收用用户户传传给给服服务务器器的的数数据据,然然后后再再冒冒充充用用户户把把数数据据传传给给真真正正的的服服务务器器。而而SSH是是目目前前较较可可靠靠,专专为为远远程程登登录录会会话话和和其其他他网网络络服服务务提提供供安安全全性性的的协协议议。利利用用SSH协协议议可可以以有有效效防防止止远远程程管管理理过过程程中中的的信信息息泄泄露露问问题题。通通过过SSH可可以以对对所所有有传传输输的的数数据据进进行行加加密密,也也能能够够防防止止DNS欺欺骗骗和和IP欺欺骗骗。SSH之之另另一一项项优优点点为为其其传传输输的的数数据据是是经经过过压压缩缩的的,所所以以可可以以加加快快传传输输的的速速度度。SSH有有很很多多功功能能,它它既既可可以以代替代替Telnet,又可以为,又可以为Ftp、POP、甚至为、甚至为PPP提供一个安全的通道。提供一个安全的通道。15.4.3 15.4.3 嵌入式嵌入式SSHSSH服务器服务器本文使用的是基于MIT-style协议的开源软件Dropbear。Dropbear是一个轻量级的、相对较小的SSH2服务器和客户端。它运行在一个不同的基于POSIX的平台,尤其适合用于嵌入式系统。1.首先移植zlib由于Dropbear依赖于zlib的库,所以这里先要移植zlib。首先,执行configure进行配置,并指定安装路径./configure -shared -prefix=/usr/local/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux修改Makefile,指定交叉编译CC=arm-linux-gccLDSHARED=$(CC)-shared-Wl,-soname,libz.so.1,-version-script,zlib.mapCPP=arm-linux-gcc-EAR=arm-linux-ar rcRANLIB=arm-linux-ranlib最后执行make&make install,将zlib库安装到指定的路径下面。2.接下来获取Dropbear的源代码http:/matt.ucc.asn.au/dropbear/dropbear.html。通过configure进行配置,指定交叉编译./configure-host=arm-linux3.执行make,通过arm-linux-strip去掉dropbear调试信息,以减少程序体积arm-linux-strip dropbear,dropbearconvert,dropbearkey4.将dropbear和dropbearkey复制到usr/sbin目录,然后建立配置目录etc/dropbear。最后利用dropbearkey来生成密钥dropbearkey-t rsa-f etc/dropbear/dropbear_rsa_host_keydropbearkey-t dss-f etc/dropbear/dropbear_dss_host_key5.使用ssh-keygen生成基于RSA加密算法的公钥和私钥,增强安全性6.编写dropbear的启动脚本。#!/bin/sh#BEGIN INIT INFO#Provides:dropbear#Required-Start:$remote_fs$syslog#Required-Stop:$remote_fs$syslog#Default-Start:2 3 4 5#Default-Stop:0 1 6#END INIT INFO#PATH=/sbin:/bin:/usr/sbin:/usr/binDAEMON=/usr/sbin/dropbearNAME=dropbearDESC=Dropbear SSH serverDROPBEAR_PORT=22DROPBEAR_EXTRA_ARGS=NO_START=0set-ecancel()echo$1&2;exit 0;test!-r/etc/default/dropbear|./etc/default/dropbeartest-x$DAEMON|cancel$DAEMON does not exist or is not executable.test!-x/usr/sbin/update-service|!u