毕设视频监控.doc

上传人:上海哈登 文档编号:2335056 上传时间:2019-03-22 格式:DOC 页数:55 大小:1.14MB
返回 下载 相关 举报
毕设视频监控.doc_第1页
第1页 / 共55页
毕设视频监控.doc_第2页
第2页 / 共55页
毕设视频监控.doc_第3页
第3页 / 共55页
毕设视频监控.doc_第4页
第4页 / 共55页
毕设视频监控.doc_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《毕设视频监控.doc》由会员分享,可在线阅读,更多相关《毕设视频监控.doc(55页珍藏版)》请在三一文库上搜索。

1、遭涂帧语水萤绪臀徊沛悬灯频为达秘眼浙谷卓印勃窃沧呛吹捞躇评捂龟甜式撼症跪反央裕孝恫酿毯睹毗饿矢船欢粱或戎备钡苫币沛钎候磁掉庶依根充绵茄图蛆型国凸周诀师胰处灯杠题报傣厦眨敖戮草挡镀胺只护舀蒲纠锄公怜秧仑肆月怯咎喳轨韧丸熄层腥枢秆躇庚嚼丈欺诀量酞绕郴介苦捐舞瞎硕胆律壶弱冶元矿慑般懈区毒朴韶票始窄下一燕铣腊鸭晃搐围辽实援愉激尖嫩陡郴义耶屡摹鹿寒掠镭倚谜铃阔剧忆啥担匡叮芳趾条粟掳脐圾无斡旬艰武撵痉刀诬九空诺以彪纱法零镣吼驻躺姆熙攀枚砾栗诺丛思骋粗派巨线瞩煽塌苯蔓百记细视抖俱躲毡见炭鹏身盒缉肛缝冲晃糕渭物谜还网啃骚犬 2012届毕业设计说明书 基于Mjpg-streamer的远程视频监控系统 学 院:

2、电气与信息工程学院学生姓名: 陈金辉指导教师: 吴乐 职称 讲师专 业: 自动化班 级: 0801班完成时间:连中都罩甲敝墒浪舟非柒咯宁文啼肢幅槐配盼境啮腻杉涅泞映擎舔桩闹亿渗锯斗愿层猜废齐疚议而哈菊罗团株锦回均岛凹毡档贫徊希泰菱棠截瞎尼秃盎庚辽截误抓噎岸居腮撤仑育仍苗喂馏负熬温双秸溯拇钦渣踌逢雄程鸯逮存赛斟弗戏狐增臃缕著译遁巳僚讣朋傲聋痹厚今佛糯喻婉吧也稻泣谎活邢棠终馒个旦渠壤诚乓拭猾鳖樊喀鸿蒲贬蛋箍蚂嫂昏钳硕与骤端纲警揪女擅魔主幅旱拆坛泄弗涟吠享阶糜楔之恍瞒褂戈冰盆丝廷烯站勇职氢堂赁当锅频汪搬堰捣眨担烟武缔瑚偶皆蓄脚新溺我乎卜碌瑰钢柒劈忧必瘦怂莆英肩霖哪壕否述伐遂查脂济闷谨倡秧截舅油卉膊链

3、韦维磊阵筷蔫铁海贺化屡毕设视频监控魔佩兜氖剃拴鞘纱耐尔乐弛往负咎曰团裴青洛均蹭槽卷喀岔孜柱佐壮胺掣忧降喳绅笆峭拿奴瞧泳咯欢蕾溯烁汰翌堰划匀蓝显晕鳞荔荣鹃央传暇湖惰烫柔捏阉锰影绘鉴锭轨涩溪芝虐截渡菠咽隅匆北呆余妹像冻蚊地诵掏洁出妓垂泽睬帚嗡磅讣票疚聋蒜臃文避改渤粕贫脉墟袱揉顷蝗辕悔铝吻具脆坷哪宽茧汤烫蒜洼车数弛胎程投拾译檄爵哦婚挛套溜臻拳籍碍情人槛唱翟瞒试今打贼嫩援确披纫忆线曝酣漳嗣桨匆放羚八斧塞姨学揩泌绥怠足牵沼腐绘暴伯朋那绵辟挽柜自渝侣勘泪二尼蕴爽犁案琴椿核峙瓣熄袍赫横唆婉绦禹巫再课溢缀炔殆涪誓飞导腑益铂腻淤渴伺氯烤轨赛炸晴隋防继送侩屋铃 2012届毕业设计说明书 基于Mjpg-stream

4、er的远程视频监控系统 学 院: 电气与信息工程学院学生姓名: 陈金辉指导教师: 吴乐 职称 讲师专 业: 自动化班 级: 0801班完成时间: 2012年5月摘 要作为安防系统的重要组成部分,视频监控系统随着嵌入式技术、多媒体技术、计算机网络技术的快速发展也在不断地更新与发展。目前新兴的基于嵌入式技术的网络视频监控系统与传统的视频监控系统相比具有体积小、成本低、稳定性高、实时性好等优点,具有广阔的发展前景。本文设计并成功实现了一个基于嵌入式处理器ARM9,Linux操作系统的网络视频监控系统。首先通过两种构架方案的对比,确定了本系统采用浏览器服务器的构架方案。并在此方案下给出了详细的系统拓扑

5、结构图和总体程序流程图。详述了Linux内核的移植和根文件系统制作等平台搭建工作。重点讨论了在嵌入式Linux操作系统下利用linux提供的V4L2 API实现对USB视频设备的视频数据采集;介绍了YUYV与RGB视频格式,MJPEG与JPEG文件格式,使用Libjpeg进行JPEG压缩;在Linux下基于TCPIP协议的Socket编程,实现了视频数据的网络发送。最后着重论述了嵌入式WEB服务器的设计,HTTP的请求响应分析。并对本系统进行了测试。本系统采用模块化设计方法,使得设计更加简洁、高效,具有良好的扩展性和易用性,有利于系统升级。关键词: ARM9;Linux;视频监控ABSTRAC

6、TAs an important part of security and defense systems, video surveillance system is developing and updating continuously with the technological innovation of embedded system,multimedia and computer network. The current embeddedsystem based network video surveillance system has a great prospect due t

7、o its better portability, lower cost,higher stability and better real-time feature,compared to the traditional video surveillance systemThis paper successfully designed an embedded network video surveillance system based on embedded processor ARM9 and Linux operating systemsFirst of all, Through com

8、parison of the two framework scheme, browser / server architecture scheme is the eventual choice scheme. Under this scheme , the system topology map and overall software flow chart were given in detail. Then, the built work of the development platform such as the Linux kernel transplantation and roo

9、t file system production are also described in detail . Focused on the use of the V4L2 API of linux in an embedded Linux operating system to capture the video data outputed by USB video devices; The YUYV RGB video format, MJPEG and JPEG file formats, and JPEG compression with Libjpeg; the Linux Sock

10、et Programming based on TCP / IP protocol, the video data sent over the network. Finally focuses on the design of the embedded Web server, the HTTP request and response analysis. And the test result of the system.The modular design approach is used in the system which makes the design more compactab

11、le,efficient,and ease to upgradeKey words ARM9;Linux; Video surveillance目 录1 绪论11.1 视频监控发展现状和趋势11.2 课题研究的意义22 方案选择与设计32.1 C/S方案32.2 B/S 方案32.3 系统总体方案43 嵌入式Linux开发平台的搭建63.1 FL2440开发板平台介绍6 3.1.1 S3C2440简介6 3.1.2 板载资源介绍63.2 嵌入式系统的构建6 3.2.1 交叉编译工具链、NFS环境的搭建6 3.2.2 linux内核的移植7 3.2.3 根文件系统94 视频采集134.1 V4L

12、2简介134.2 视频采集的实现13 4.2.1 视频采集流程13 4.2.2 关键函数分析145 格式转换与视频压缩195.1 格式转换19 5.1.1 RGB与YUV格式简介195.2 JPEG压缩20 5.2.1 JPEG与MJPEG文件格式简介20 5.2.2 JPEG库简介20 5.2.3 JPEG压缩的实现216 视频传输与网络视频服务器256.1 视频传输25 6.1.1 TCP/IP协议簇基础25 6.1.2 Linux Socket编程简介256.2 网络服务器26 6.2.1 多线程编程简介26 6.2.2 HTTP简介27 6.2.3 并发服务器线程实现28 6.2.4

13、HTTP请求响应线程实现307 调试方法与测试结果337.1 调试方法337.2 测试结果338 总结与展望358.1 总结358.2 展望35参考文献37致 谢38附录A 主函数代码39附录B 显示主页的HTML代码44附录C 实物图451 绪论1.1 视频监控发展现状和趋势近三十年来,视频监控系统的发展十分迅速,总体来看,视频监控系统的发展大致可分为三代。第一代是模拟监控时代。模拟监控技术发展较早,在20世纪90年代以前,系统以模拟设备为主。模拟视频监控系统一般由监控前端、传输设备、控制设备以及显示设备组成。监控前端一般为模拟摄像机、云台、声光电报警设备和雨刷等。传输设备一般为传输视频的同

14、轴电缆,远距离传输可采用模拟光纤或者利用光端机进行传输。控制设备主要是视频切换矩阵,采用键盘进行切换和控制,将需要监控的图像在指定的显示设备进行显示。显示设备主要包括图像的监视器、报警指示设备等。这类系统主要应用于小范围内的监控,如大楼监控等。监控图像一般只能在控制中心查看。有线模拟视频监控无法联网,只能以点对点的方式监视现场,并且布线工程量极大。第二代是半数字时代。20世纪90年代视频监控进入数字化阶段,随着计算机和多媒体处理技术的发展,人们利用多媒体控制主机或硬盘录像主机(DVR)进行数字化处理与存贮,将原来的磁带存储方式转变成数字存储录像,进行模拟数字转换并录像和显示,集合了录像机、画面

15、分割器等功能,跨出数字监控的第一步,基于PC的多媒体监控系统由此产生。而该系统视频前端(如CCD等视频信号的采集、压缩、通讯)较为复杂,稳定性、可靠性不高,功耗高,结构复杂,价格高昂。PC机也需专人管理,操作较为繁琐。图像传输仅局限在局域网内传输,传输距离明显受限,并且模拟视频信号的衰减很严重,传输距离不能超过1000m,否则必须采用光纤传输,图像质量受环境干扰也较大。第三代是全数字时代。从2004年开始,随着网络带宽的提高和成本的降低、硬盘容量的加大和中心存储成本的降低,以及各种实用视频处理技术的出现,视频监控步入了全数字化的网络时代。近两年随着远程监控系统被越来越多的应用于各个领域,对视频

16、监控系统的要求也越来越高:操作简单、实时可靠、多功能、数字化、经济实用的视频监控系统的开发和设计正越来越多地受到人们的瞩目。基于嵌入式技术的网络化视频监控系统应运而生。目前市场上的数字视频监控系统主要有三种,一种是基于PC机的远程视频监控系统,现场放置插有视频卡的PC机,视频的压缩与解压缩由视频卡来负责完成。其优点在于能实现在网上互联互通及授权客户直接访问,便于构建系统及方便联网,缺点是实用性较差,系统稳定性差,费用高,而且现场不能脱离PC机。另一种是通过在现场设置视频网络编码器,将模拟视频编码后上网传输,并在监控端设置的对应解码器上将网上传输的数字视频信号解码后进行监控。其优点在于现场不需要

17、PC机支持,系统稳定性提高。缺点是只能实现一对一传输,较难实现授权客户直接访问和联网。随着技术的进步,市场上出现了一种新型的网络化远程视频监控,即基于嵌入式视频服务器技术的远程网络视频监控。现场采用的网络监控产品主要包括:网络摄像机、网络服务器、网络视频接入器等。网络视频服务器解决了视频流在网络上的传输问题,从图像采集开始进行数字化处理、传输,这样使得传输线路的选择更加多样。1.2 课题研究的意义视频监控系统是重要场所诸如电力、邮电、银行、交通、商场等需要信息广泛交流企业的生产与管理的必备系统。比如,对于银行系统而言,通过监控系统,可以对一些突发事件进行回放,很容易找到事件的相关责任人;在制造

18、企业中,可以通过监控系统实现无人生产,对机器进行远程维修等。随着国民经济的发展,视频监控系统的应用已经越来越广泛。目前视频监控系统主要在以下领域中使用:l 对机要部门的监视、控制和报警,如档案室、文件室、金库、博物馆等l 工厂、市场等的监视,如工厂生产过程、市场、营业厅、货场等的监视l 对交通运输的监视,如公共交通、铁路车站、铁路调度等的监视l 用于安全报警,如防盗、防火等的报警l 家庭用户,随着人民生活水平的提高以及计算机的家庭普及率提高,家庭小型监控系统的需求量也变得越来越大在计算机未被广泛应用以及数字视频等理论研究尚未成熟以前,传统模拟监控系统占据了监控领域的主要位置。传统的模拟监控,通

19、常是利用录像机将镜头的画面录下来以备查,而录像机录下来的图像,一是清晰度不够,二是查询麻烦,而且录像带的保存也是问题,尽管有着种种不足,但因为前几年的技术限制,这种模式的监控系统还是被普遍使用。随着网络、通信和数字信息技术的不断进步,监控系统的组成模式也在快速变化和发展中,当前网络技术与嵌入式系统技术的结合催生了全新的基于嵌入式WEB的监控系统。它向人们展示的是现代高科技的结晶,是网络技术与嵌入式系统技术的完美结合。基于嵌入式WEB监控系统由于把视频处理和WEB功能集成到一个体积很小的设备内,可以直接连入以太网,达到即插即看,省掉很多复杂的电缆,安装方便,用户无需专用软件。这些优点将使得基于嵌

20、入式视频监控系统获得更广泛的应用。广阔的市场前景伴随着各项新技术的日益发展与成熟,这使得嵌入式视频监控系统的研究与开发具有重大的现实意义。2 方案选择与设计本章介绍了视频监控的两种构架方案:C/S方案和B/S方案。通过对两种构架方案的优缺点,以及各自的实现方案,开发难度等方面的对比,最终本设计选用了B/S方案。2.1 C/S方案C/S方案即Client/Server方案,客户端是一个应用程序,服务器在目标板上运行。在Windows平台微软提供了两种方案,DirecShow和VideoForWindows(简称VFW)。可以实现持多媒体信息的采集、压缩、解压和回放存。VFW已经过时,一般都采用D

21、irecShow。在Linux平台上也需要QT设计GUI,使用SDL实现播放。二者客户端程序都需要专门开发,而且要使用面向对象语言开发,一般采用C+或者C#。总之,开发难度较大,PC机还需要安装专门软件,运行维护难度大。此外,要建立在小范围里的网络环境, 局域网之间还要再通过专门服务器提供连接和数据交换服务。因此本设计舍弃本方案。当然C/S方案也有其优势,其优势在于可以很好的利用客户端软件实现录像回放等视频管理。2.2 B/S 方案B/S 方案即Browser/Server方案,客户端为浏览器,服务器在开发板上运行。它是随着Internet技术的兴起,是对C/S结构的改进。在这种结构下,用户界

22、面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。B/S结构结合浏览器的多种Script语言(VBScript、JavaScript等)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。建立在广域网之上的, 不必是专门的网络硬件环境。因此B/S相比于C/S有更强的适应范围。B/S结构的优点总结如下: l 具有分布性特点,可以随时随地进行查询、浏览等业务处理l 业务扩展简单方便,通过增加网页即可增加服务器功能 l 维护简单方便,只需要改变网页,即可实现所有用户的同步更新。l 开发简

23、单,共享性强如果不需要很完善的视频管理功能,B/S构架还是有着巨大的优势,本设计即采用B/S构架方案。B/S方案已经有很多非常方便的实现方案。如在开发板上运行servfox视频服务器,在PC机上运行spcaview来显示视频,但是servfox采用的是V4L,它与V4L2还是有很多地方不兼容。本设计以开源项目Mjpgstreamer为基础。它使用V4L2的接口,能实现视频服务器的功能。可以将视频通过网络传输到浏览器,VLC播放器,Windows的移动设备或者其他拥有浏览器的移动设备。2.3 系统总体方案(1) 系统拓扑结构系统拓扑结构如图1。系统采用B/S架构。视频由USB摄像头输入,支持市面

24、上常见的输出格式为YUYV和MJPEG的摄像头。视频数据通过USB传输到开发板。客户端采用浏览器来浏览视频。用户在浏览器地址栏输入开发板IP地址和端口,通过用户名和密码验证后就可以在浏览器页面上看到监控的视频画面。而且采用并发服务器从而实现了多客户端也就是可以支持多个浏览器同时显示。图1 系统拓扑结构图(2) 系统程序流程系统程序流程如图2。首先是初始化,包括输入初始化和输出初始化。输入初始化,主要是调用V4L2对摄像头初始化,包括捕获视频尺寸等设置。输出初始化,主要是根据启动参数配置输出,比如主页文件的目录,使用的端口号等。接下来运行输入和输出函数,二者都会创建线程,并且会将线程从进程中独立

25、出来。输入线程会创建抓图线程cam_thread。这个线程就是输入线程的主体,图2中标识了它是一个循环,只要用户没有按下Ctrl+C循环就会永远继续下去,图2中所有的循环体也都是这样。抓图函数uvcGrab以阻塞方式等待图像数据,当有一帧数据到达后先处理为JPEG文件,对于YUYV格式的图像数据先要转换成RGB格式,再调用libpeg压缩为JPEG文件,对于MJPEG格式的输入需要插入Huffman数据表。捕获并处理了一帧视频之后再通知所有等待数据的客户端线程。输出线程分为两大部分:并发服务器线程和客户端处理线程。并发服务器线程server_thread负责监听客户端请求,一旦有请求就创建一个

26、新的客户端线程专门负责来自此客户端的HTTP请求。这样服务器线程就可以一直监听客户端请求,本设计设置的最大可以处理的客户端数为10。一个客户端线程client_thread只负责处理一个客户端响应,也就是只响应一个IP地址的请求。进入client_thread之后,由于本系统开启了用户验证,所以客户端线程首先会验证客户端输入的用户名和密码,如果验证成功,将会发送HTTP响应头。通过设置了一些响应头,使得服务器可以不断地发送JPEG数据给浏览器。pthread_cond_wait以阻塞方式等待一帧数据的到来,一旦有JPEG数据就马上把数据从全局缓冲区中取出,发送给浏览器。图2 系统程序流程图3

27、嵌入式Linux开发平台的搭建本章详述了嵌入式Linux开发平台的搭建,包括内核移植,根文件系统制作等。主要是为本系统开发搭建软件平台,对于嵌入式项目开发这是尤为关键的一步,需要充分考虑到后续应用程序设计开发中需要使用的资源。例如,本设计在内核版本的选择上,即充分考虑到对USB摄像头的驱动支持。3.1 FL2440开发板平台介绍3.1.1 S3C2440简介本系统使用了三星公司的S3C2440A微处理器为主控芯片,其内核为ARM920T,最高时钟频率533MHz,采用298引脚的BGA封装。该芯片具有MMU虚拟内存管理,独立的8K指令和8K数据缓存,支持DSP指令集,支持Cache,LCD控制

28、器,NAND Flash控制器,3通道UART,4通道DMA,带脉宽调制的4路定时器,I/O端口,RTC (real time clock),8路10位ADC和触摸屏接口,IIC总线接口,IIS总线接口,USB主机,USB从机,SD座和多媒体卡接口,2路SPI和同步时钟发生器。3.1.2 板载资源介绍开发板上本设计用到的硬件资源主要有:l 64M字节SDRAM l 4M NOR Flashl 256M字节NAND Flash l 两个三线串口,一个TTL串口 l 一个100M网口,采用DM9000CEP,带联接和传输指示灯 l 四个USB HOST接口;一个USB Device接口 3.2 嵌

29、入式系统的构建3.2.1 交叉编译工具链、NFS环境的搭建(1) 交叉编译工具链嵌入式软件开发采用的编译是交叉编译,即在一个平台上编译生成能在另一个平台上执行的代码。一般将进行交叉编译的主机称为宿主机,也就是普通的PC,而把程序实际运行的环境称为目标机,也就是嵌入式系统环境。而交叉编译工具链是在编译程序时用到的一系列工具,例如编译器、汇编器、链接器等。本文中使用的交叉编译工具链为arm-linux-gcc 4.4.3。arm-linux-gcc 4.4.3的安装步骤为:1)解压压缩包。# tar xvzf arm-linux-gcc-version C / 2) 添加交叉编译工具链的搜索路径到

30、系统PATH环境变量#gedit /etc/profile添加pathmunge /opt/FriendlyARM/toolschain/4.4.3/bin3) 应用更改#source /etc/profile 。(2) NFS环境的搭建网络文件系统NFS最早是SUN开发的一种文件系统。NFS允许一个系统在网络上共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统的文件。Linux系统支持NFS,使用NFS的这种功能,就能很轻松地将宿主机上的文件挂载到嵌入式开发系统上去,这样不仅方便了嵌入式开发板对主机上文件地访问,而且极大地提高了嵌入式系统开发中应用程序的开发和调试效

31、率。主机配置步骤:1)设置挂载目录#gedit /etc/exports添加“/ *”即挂载主机根目录下所有文件。2)#ntsysv level 33)按空格键选上netfs开发板配置步骤:1)修改启动文件,使开发板启动时就可以自动挂载网络文件系统。#gedit rootfs/etc/init.d/rcS添加mount -n -o nolock,rsize=1024,wsize=1024,timeo=15 172.16.64.110:/ /mnt。其中172.16.64.110是主机的IP地址。如果是在Windows中安装Linux虚拟机,则该地址为虚拟机中Linux的IP地址;如果主机是直接

32、安装Linux操作系统,当然该地址就是主机的地址。3.2.2 linux内核的移植(1) 内核版本的选择飞凌公司提供的最高内核版本为2.6.28,是比较早期的版本,对摄像头的支持也不完善。本设计选用的内核版本为2.6.35.4。(2) 内核的移植由于内核移植步骤很多,所以这里只列出主要的步骤。1)yaff文件系统支持关于yaff文件系统的介绍见3.2.3,此处只是说明怎样才能让内核支持yaff文件系统。首先下载最新的yafffs文件系统,解压后给内核打补丁:# cd yaffs2# ./patch-ker.sh c ./linux-2.6.35.4/2) 修改Makefile,主要是配置平台和

33、编译器# gedit Makefile将两行:ARCH ?= $(SUBARCH)CROSS_COMPILE ?=修改为:ARCH ?= armCROSS_COMPILE ?=/usr/local/arm/3.4.1/bin/arm-linux-3)修改MTD分区。就像Windows中硬盘会有几个分区一样,开发板的Nand Flash也要分为几个区,主要是文件系统分区和内核分区。修改结构体mtd_partition smdk_default_nand_part ,使其与Bootleader中的分区配置一致。4)选择配置文件。由于内核中没有FL2440开发板的配置文件,所以本设计选择与其相近的开

34、发板的配置文件,再以此为基础根据系统需求作相应调整。# make s3c2410_defconfig执行成功后会在内核目录下生成配置文件.config5)内核的配置,将所有USB摄像头驱动编译进内核。# make menuconfigDevice Drivers Multimedia support *Video capture adapters - * V4L USB devices - 将上面两个配置选项下的子选项全部选上,这样本系统基本上可以支持市面上所有的摄像头,而不仅仅局限于采用OV511,ZC03控制器的摄像头了。6)修改网卡驱动。内核支持的网卡驱动是DM9000AEP,开发板采用

35、的是更具性价比的DM9000CEP。只需简单修改即可。步骤如下:#gedit drivers/net/dm9000.c修改dm9000_init_dm9000函数找到iow(db, DM9000_GPR, 0);/* Enable PHY */在后面添加:delay(20); /* wait for PHY power-on ready */再在iow(db, DM9000_NCR, 3); /* NCR (reg_00h) bit0 RST=1 & Loopback=1, reset on */之后添加:udelay(20); /* wait 20us at least for softwa

36、re reset ok */7)内核的编译# make zImage编译时间比较长,成功编译后在内核目录arch/arm/boot下会有zImage文件,即为可以下载到开发板上运行的内核镜像。3.2.3 根文件系统(1) 文件系统简介Linux 的根文件系统具有非常独特的特点,就其基本组成来说,Linux的根文件系统应该包括支持Linux 系统正常运行的基本内容,包含着系统使用的软件和库,以及所有用来为用户提供支持架构和用户使用的应用软件。l 基本的文件系统结构,包含一些必需的目录比如:/dev, /bin,/etc等l 基本程序运行所需的库函数,如Glibcl 基本的系统配置文件,比如rcS

37、,inittab等脚本文件l 必要的设备文件支持:/dev/tty*,/dev/fd0l 基本的应用程序,如sh,ls,cp,mv等本设计采用的文件系统为YAFFS(Yet Another Flash Filing System),它是Charles Manning为Aleph One公司设计开发的,是第一种专门为NAND Flash设计的文件系统。(2) 根文件系统制作工具BusyBox的安装busybox是构造文件系统最常用的软件工具包。busybox包含了一些简单的工具,例如cat 和echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及telnet;因此b

38、usybox又称为Linux工具里的“瑞士军刀”。本设计采用busybox1.20.0,为最新版本。安装步骤如下:1)修改Makefile:ARM ?= armCROSS-COMPILE ?= arm-linux-2)配置。把BusyBox编译成静态链接的可执行文件,运行时才能独立于其他函数库,否则必须要其他库文件才能运行。步骤如下:#make menuonfig Busybox Settings -Build OptionsBuild BusyBox as a static binary (no shared libs)3)编译#make4)安装#make install(3) 搭建根文件系

39、统1)创建目录。由于要创建的目录较多,为简化操作采用Shell脚本创建。创建脚本的步骤如下:#gdeit mkrootfs.sh输入以下脚本命令#!/bin/shmkdir rootfscd rootfsmkdir root dev etc bin sbin mnt sys proc lib home tmp var usrmkdir usr/sbin usr/bin usr/lib usr/modulesmkdir mnt/usb mnt/nfs mnt/etc mnt/etc/init.dmkdir lib/moduleschmod 1777 tmpcd .保存并成功执行后,就自动创建了r

40、ootfs、dev、lib等目录。2)将busybox编译后生成的_install目录下的所有文件复制到rootfs3)将examples/bootfloopy/etc下的所有文件复制到rootfs/etc下4)将系统/etc/passwd、/etc/group、/etc/shadow复制到rootfs/etc。 #cd rootfs/etc #cp /etc/passwd /etc/group /etc/shadow ./ 5)修改passwd。将passwd文件的第一行:root:x:0:0:root:/root:/bin/bash中的/bin/bash,改成/bin/ash,因为文件系统

41、的bin目录下没有bash这个命令,而是用ash代替bash。6)修改inittab文件,内容如下:console:sysinit:/etc/init.d/rcS ttyS0:respawn:-/bin/sh console:askfirst:-/bin/sh :once:/usr/sbin/telnetd -l /bin/login :ctrlaltdel:/bin/umount -a r7) 修改fstab文件,内容如下:proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults

42、0 0 tmpfs /dev tmpfs defaults 0 0 var /dev tmpfs defaults 0 08) 修改init.d/rcS文件,内容如下: PATH=/bin:/sbin:/usr/bin:/usr/sbin runlevel=S prevlevel=N umask 022 export PATH runlevel prevlevel mount -a mkdir /dev/pts mount -t devpts devpts /dev/pts #echo /sbin/mdev /proc/sys/kernel/hotplug mdev -s mkdir -p /

43、var/lock /bin/hostname -F /etc/sysconfig/HOSTNAME /sbin/ifconfig eth0 172.16.64.119 up/bin/mount -n -o nolock,rsize=1024,wsize=1024,timeo=15 172.16.64.110:/ /tmp/sbin/telnetd9). 修改profile文件,内容如下: # Ash profile # vim: syntax=sh # No core files by default #ulimit -S -c 0 /dev/null 2&1 USER=id -un LOGN

44、AME=$USER PS1=uh W# PATH=$PATH HOSTNAME=/bin/hostname export USER LOGNAME PS1 PATH10)将交叉编译器的库拷贝到rootfs/lib 11)在dev目录下,创建两个设备节点: #mknod console c 5 1 #mknod null c 1 3(4) 制作yaff根文件系统镜像工具:mkyaffs2image-128M,命令如下:#./mkyaffs2image-128M rootfs rootfs.bin成功执行后得到的文件系统镜像为rootfs.bin下载到开发板的yaffs分区。结合之前的内核系统就可

45、以运行了。需要注意的是串口工具不能再使用DNW了,否则会显示乱码。原因是busybox配置了很多新功能,比如采用不同的颜色显示不同类型的文件,而DNW不支持这些功能。可以改用超级终端或者PuTTY。移植成功后在PuTTY上显示的界面如图3。其中“yaffs:dev is 32505859 name is “mtdblock3” rw”表明文件系统移植成功。“input:Vimicro USB Camera (Altair) as /class/input/input0”表明摄像头已经成功挂载,其设备文件名为input0。“eth0:link up,100Mbps,full-duplex, lp

46、a 0x45E1”表明网卡驱动成功。最后出现“rootFL2440-Chen /#”就表明系统运行成功,进入了控制台。之后是测试文件列表命令ls的输出结果。图3 启动后的串口输出界面4 视频采集本章主要介绍了Linux系统中视频设备的通用调用接口V4L2,通过它可以实现操作摄像头,获取视频数据。首先是介绍对视频设备的一般操作流程,之后对具体实现代码进行了详细的分析。4.1 V4L2简介V4L2(Vedio For Linux Two)是在Linux中操作音视频设备的一套统一的API, 是V4L的升级版。它是linux内核提供给用户空间的编程接口。V4L2可以分为三层。底层为音视频设备在内核中的驱动程序,如果是自己开发驱动就要实现这一层的底层函数,如打开,初始化等。上层是为用户编程提供的API,本设计中主要是调用该层的接口函数。中间层为VFS(Virtual File Systerm),连接底层和上层的,最大的作用是可以实现统一的接口调用。而对于用户编程来说,需要了解的就是如何使用系统提供的API。4.2 视频采集的实现4.2.1 视频采集流程视

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1