基于ARM的视频监控系统_第1页
基于ARM的视频监控系统_第2页
基于ARM的视频监控系统_第3页
基于ARM的视频监控系统_第4页
基于ARM的视频监控系统_第5页
已阅读5页,还剩63页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

南京工程学院毕业设计说明书论文作者刘武春学号202090631院系计算机工程学院专业电子信息科学与技术题目基于ARM的视频监控系统指导者陈敏聪讲师评阅者韩磊讲师2013年5月南京毕业设计说明书(论文)中文摘要基于ARM的嵌入式视频监控系统是一种以嵌入式技术、视频编码技术和网络传输术为核心的新型视频监控系统,它在实时性、稳定性、处理速度、性能、价格等方面相比传统的视频监控系统有着突出的优势,也代表着当前视频监控系统研究和发展的方向。因此本论文研究基于ARM的嵌入式视频监控系统。系统以S3C2440处理器为核心平台,由嵌入式LINUX平台建立TCP/IP的服务器,将USB摄像头采集来的图像数据经过网络传输,完成对现场的视频监控任务。论文首先介绍了基于ARM的视频监控技术的现状和发展趋势,然后介绍了MINI2440开发板,讨论了基于LINUX操作系统的平台构建,以及在ARM硬件平台上进行嵌入式LINUX的一些开源库的移植。接着讨论了视频图像的采集、编码和网络传输程序的设计原理与实现,最后测试了系统的整体性能并提出了一些设想以及本课题的不足之处与需要改进的地方。关键词LINUXARM视频监控套接字SDL库毕业设计说明书(论文)外文摘要TITLETHEVIDEOMONITORINGSYSTEMBASEDONARMABSTRACTBASEDONARMEMBEDDEDVIDEOMONITORINGSYSTEMISAKINDOFBASEDONEMBEDDEDTECHNOLOGY,VIDEOCODINGTECHNOLOGYANDNETWORKTRANSMISSIONTECHNIQUEASTHECOREOFNEWVIDEOSURVEILLANCESYSTEM,ITISSTABILITY,REALTIME,PROCESSINGSPEED,FUNCTIONALITY,PRICE,ETC,ANDHASAPROMINENTADVANTAGEINCOMPARISONTOTHETRADITIONALVIDEOMONITORINGSYSTEM,BUTALSOREPRESENTSTHECURRENTVIDEOSURVEILLANCESYSTEMRESEARCHANDDEVELOPMENTDIRECTIONTHEREFORETHISPAPERFORTHERESEARCHOFEMBEDDEDVIDEOMONITORINGSYSTEMBASEDONARMSYSTEMBASEDONS3C2440PROCESSORCOREPLATFORM,BUILTBYEMBEDDEDLINUXPLATFORM,TCP/IPSERVER,THEUSBCAMERAIMAGESCOLLECTEDDATATHROUGHTHENETWORK,FORMONITORINGTHESCENEVIDEOMONITORINGTASKPAPERFIRSTINTRODUCESTHEARMBASEDVIDEOMONITORINGTECHNOLOGYRESEARCHSTATUSANDDEVELOPMENTTREND,ANDTHENINTRODUCESTHEMINI2440DEVELOPMENTBOARD,DISCUSSESTHEDEVELOPMENTPLATFORMBASEDONEMBEDDEDLINUXOPERATINGSYSTEMTOBUILD,ANDHOWTOARMEMBEDDEDLINUXONTHEHARDWAREPLATFORMOFTHETRANSPLANTATIONOFSOMEOPENSOURCELIBRARIESTHENFOCUSONTHEIMAGEACQUISITION,CODINGANDNETWORKCOMMUNICATIONPROGRAMDESIGNPRINCIPLEANDIMPLEMENTATION,FINALLYHASCARRIEDONTHESYSTEMSOVERALLFUNCTIONTESTANDPUTSFORWARDSOMEDEVELOPMENTIDEASANDTHESHORTAGESOFTHISTOPICANDIMPROVEMENTKEYWORDSLINUX,ARM,VIDEOMONITORING,SOCKET,SDLLIBRARYI目录前言1第一章嵌入式系统硬件说明411视频监控系统结构说明412ARM简介713S3C2440简介8第二章嵌入式系统软件平台1021LINUX操作系统简介1022开发环境的搭建1323SDL库的移植15第三章USB设备驱动程序介绍1831USB驱动开发1832摄像头驱动开发21第四章图像采集的实现2241V4L编程2342图像保存为视频32第五章视频传输的实现3551TCP/IP介绍3652网络编程39第六章程序运行4661执行程序46第七章总结4871论文总结4872感想和收获49致谢50参考文献51附录英文技术资料翻译52南京工程学院毕业设计说明书(论文)1前言视频监控系统的发展和现状当今社会是信息与科技高速发展的时代,获得信息的方便可以使我们更好的创造出大的利益,而人们获取信息的最直接的就是通过眼睛。在人们感官接受的各种各样的信息中约有79是来自视觉。图像是对客观事物形象和生动的描述,是最直观表达方式,是人们最重要的信息载体。随着科学与技术的迅速发展和人民生活水平的提高,视频监控系统以其直观、方便和信息内容丰富等特点,越来越受到人们的青睐,并已广泛应用于各行各业。视频监控系统发展至今只有短短二十多年时间,从最早模拟监控到前几年的数字监控再到现在的无人远程视频监控,发生了翻天覆地变化。随着IP技术逐步统一的今天,我们开始重新认识视频监控系统的发展过程。从技术角度来看,视频监控系统分为模拟性的视频监控系统CCTV,数字性视频监控系统DVR,完全基于IP技术的网络视频监控系统IPVS。基于ARM的视频监控系统有如下的特点(1)可控区域范围广。监控设备可以直接接入到网络,不受线缆长度的限制,同时网络是全球性的,布满所有角落,打破了传统地域的限制,扩展了可控区域。(2)系统具有很强的扩展的能力。用IP地址来标识设备,增加设备只是把IP地址进行扩充。(3)可以组成布满全球的监控网络。采用基于ARM的视频监控系统,与传统的监控方式有很大的不同,由于基于ARM的视频监控设备的输出完成了模拟到数字的转换,而且压缩了转换结果。通过全球统一的网络协议在互联网上进行有效传输。(4)该系统性能稳定性高,不需要专业人士管理。基于ARM的视频监控设备实际上是以计算机技术为核心,采用LINUX多任务的操作系统,由于视频采集功能和数据处理功能都集成到一个体积很小的设备内,直接连入局域网或者广域网,即插即看,系统的稳定性和实时性,以及可靠性都得到大大的提高,也不需要专人管理,非常适合于不需要专人看守的环境。南京工程学院毕业设计说明书(论文)2所以,加强对基于ARM的视频监控系统的研究对我国视频监控行业的发展有着非凡的意义。选题背景与意义随着技术的不断创新和人们需求的不断发展,人们对视频监控系统的性能提出了更高的需求。总的来说,主要体现在以下几个方面视频监控的全方位、视频监控的智能化、音频和视频压缩的高效率和高质量、本地存储和网络传输。视频监控系统在时空布局上可以做到全时段、全方位、全天候在防范控制上能够做到直观动态、实时精准在信息管理上能够做到连网传输、信息共享和大量存储在实战应用上能够做到智能分析自动对比、自动报弊。这些优势是传统的手段所不具备的,建立以视频监控系统为核心的技术防控体系,完善其运行和管理机制,将技防人防和物防等手段有机结合起来,将在最大程度上弥补人防、物防体系的不足。为了满足这些要求,本系统设计的视频监控功能主要包括视频传输功能、图像采集功能这两部分,主要是通过视频采集的应用程序来实现的。本文的研究内容和章节结构针对视频监控系统中的关键性的技术进行分析,本文将重点研究以下的内容(1)嵌入式开发环境的搭建在LINUX操作系统下安装ARMLINUXGCC的交叉编译器,可以编译出可在ARM开发板上运行的可执行文件,这样就可以在ARM微处理器上运行嵌入式操作系统上的程序,方便系统功能的进一步扩展和升级。LINUX操作系统是开源性的操作系统,自身拥有的TCP/IP协议有强大的网络功能,可以方便用户进行网络编程。(2)SDL库的移植SDL是一套自由的跨平台的多媒体开发包,使用C语言写成。适用于游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。是为数不多的商业游戏开发公司使用的免费软件库之一。它提供跨平台的二维帧缓冲区图形和音频服务,它支持LINUX、WIN32和BEOS。也不同程度地支持其它平台。南京工程学院毕业设计说明书(论文)3SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台的应用软件。(3)图像的采集读取通过摄像头获取图片数据后,放入到缓冲区,可以通过直接读取(READ)和内存映射(MMAP)两种不同的方法来读取到图片帧的数据。这里的图像采集可以依靠函数IOCTL来实现,主要的两个控制命令是VIDIOCAMCAPTURE(获取视频图像),VIDIOSYNC(判断是图像是否截取成功)等。(4)视频数据的网络传输嵌入式LINUX操作系统具有非常完整的TCP/IP协议栈,因此,可以通过SOCKET编程建立一个基于TCP/IP的视频监控服务器,为视频数据的传输和网络数据信息的收发提供网络服务,远程的客户端可以通过接收视频数据来实施对现场的视频监控。南京工程学院毕业设计说明书(论文)4第一章嵌入式系统硬件说明11视频监控系统结构说明系统硬件结构框图如图11。S3C2440主控芯片USB接口电源和复位电路串口JTAG口网络控制NANDFLASHSDRAM摄像头图11基于ARM的视频监控系统结构框图系统主芯片采用ARM9处理器S3C2440,它是16/32位RISC嵌入式微处理器,主要面向高性能、低功耗、高集成度的手持设备的应用。它内部硬件资源丰富,比如LCD控制器、CACHE高速缓存、时钟和电源管理、5个定时器、4通道的DMA、9个UART、8通道10位AD转换电路、USB主/从接口及12S音频接口等。FLASH采用的是NORFLASH,它有专门的控制接口与CPU相连,数据总线为8BIT,但这并不意味着读写数据会很慢。本系统中启动代码、内核代码及根文件系统都存放于NANDFLASH。在FLASH管理方面。根文件系统采用最新的YAFFS文件系统是一种可读写的文件系统。因此,用户可以通过根文件系统来共享。RAM是2片外接32M共64M的SDARM。一般称之为内存,它们并接在一起形成32BIT的总线数据宽度,这样可以增加访问的速度。这样可以快速的运行LINUX系统以及其网络应用。南京工程学院毕业设计说明书(论文)5网络控制芯片则是用的CIRRUS公司研发的控制器,通信速率可以达到10M/S通过它就可以实现以太网的数据链路层和物理层。由于该控制器的接口是ISA,那么与微处理器相连是轻而易举的。该课题的摄像头则是采用ZC301型号的摄像头,ZC301是中星微电子设计的第一块PC摄像头微处理器,ZC301拥有无与伦比的功能。该摄像头利用USB11的端口来与PC主机进行沟通,同时摄像头内建的图象处理功能非常强大,包括图像的信号处理功能ISP,图像数据的压缩以及图像数据的传输等等功能。ZC301是通过小巧的28PINLQFP来封装的,甚至不需要外接DRAM来支持。拥有强大的内置图象处理功能和JPEG译码功能是这款摄像头最出色的地方,只有这样才可以为用户拍摄出清晰的图像。下面为几个主要部分的电路(1)USB部分的电路图如图12。图12USB部分的电路图(2)网络部分的电路图如图13。南京工程学院毕业设计说明书(论文)6图13网络部分的电路图(3)电源部分的电路图如图14。图14电源部分的电路图南京工程学院毕业设计说明书(论文)74复位电路的电路图如图15。图图15复位电路的电路图12ARM简介ARM(ADVANCEDRISCMACHINES),既是一个公司的名字,也是对一类微处理器的通称,还可以是一种嵌入式技术的名字。1991年ARM公司成立于英国剑桥,主要是出售芯片设计技术授权。目前,南京工程学院毕业设计说明书(论文)8采用ARM核的微处理器,即通常所说的ARM处理器,现在已遍及工业控制、消费类的电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75以上的市场份额,ARM技术正在逐步进入到日常生活的方方面面。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产品供应商,ARM公司本身不从事芯片生产,而是转让他的设计许可权由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,然后根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具竞争力。ARM公司设计了许多处理器,可以根据他们使用内核的不同划分为不同的系列。系列划分是根据ARM7、ARM9、ARM10、ARM11内核的来定的。后缀数字7、9、10、11表示不同的内核版本的设计。数字升序说明性能、复杂度的提高。ARM8开发出来以后很快就被取代了。可见其更新速度多快。在每个系列中,存储器管理、CACHE以及TCM处理器扩展有各种不同的变化。ARM继续在可用的产品系列做进一步研发。本课题使用的是ARM9处理器,ARM9系列微处理器具有以下特点1)5级流水线;2)体系结构为哈佛体系结构;3)支持32位ARM指令集和16位THUMB指令集;4)支持32位的AMBA总线接口;5)全性能的MMU,支持WINDOWSCE、LINUX、PALM、OS等多种主流嵌入式操作系统;6)MPU支持实时操作系统;7)支持数据CACHE和指令CACHE,具有更高的指令和数据处理能力。ARM9系列的微处理器大部分是被用在无线方面的设备、家居安防系统、仪器和仪表、高性能的打印机、智能电话、数字照相机和数字摄像机等领域。ARM9系列主要有ARM920T、ARM922T和ARM940T三种类型的微处理器,南京工程学院毕业设计说明书(论文)9以适用于不同的场合。13S3C2440简介S3C2440是SAMSUNG生产的,是精简指令集,该处理器是目前市场上销量最高的处理器之一。该处理器是一款用途非常广泛的芯片,其内部集成了微处理器和一些常用的外围设备,具有较高的性价比。S3C2440的频率是400MHZ,其ARM920T核组成部分是ARM9TDMI、存储管理单元(MMU)以及高速缓存。其中,MMU是内存管理单元,独立的16KB地址和16KB数据组成告诉缓存。ARM920T内部有两个协处理器CP14和CP15。CP14的功能是用来调试和控制的,CP15的有2个功能,其一是用于存储系统的控制,其二是用来测试控制的。S3C2440的片内资源非常丰富,主要包括1)内核的供电系数是12V,存储器的供电的电压是18V/25V/33V,外部I/O的供电电压为33V,拥有ICACHE和DCACHE/MMU微处理器;2)LCD控制器;3)外部存储控制器;4)四通道的DMA,并拥有外部的请求引脚;5)三通道的串口;6)一通道IISBUS;7)二通道SPI;8)兼容SD主接口的协议以及MMC卡的协议;9)四通道的定时器和一通道的内部定时器;10)二个端口的USB主机/一个端口USB的设备;11)八通道10比特ADC以及触摸屏的接口;12)130个通用I/O口和24个外部中断源;13)相机的接口;14)具有PLL片上时钟发生器。S3C2440的体系结构如下S3C2440处理器为移动终端设备以及嵌入式工业控制提供一些集成系统的南京工程学院毕业设计说明书(论文)10解决方案,包括1)精简指令集的体系结构;2)MMU用于支持各种不同的系统;3)指令高速存储缓存器(ICACHE)和数据高速存储缓冲器(DCACHE);4)采用ARM920T的CPU内核;5)内部高级微控制总线(AMBA)的体系结构(AMBA20,AHB/APB);6)支持高速总线模式与异步总线模式。第二章嵌入式系统软件平台21LINUX操作系统简介LINUX是一种遵循POSIX标准(POSIX是一套由IEEE即电气和电子工程学会所制定的操作系统界面标准)的开放源代码的操作系统,与UNIX的风格非常相像,同时具有SYSTEMV和BSD的扩展特性,但是LINUX系统的核心代码已经全部重新编写。它的版权所有者是芬兰人LINUSTORVALDS和一些自由软件开发者,遵循GPL规范(GNUGENERALPUBLICLICENSE)。LINUX的出现,打破了长久以来传统商业操作系统的技术垄断,为计算机技术的发展做出了巨大贡献。211LINUX系统的起源说到LINUX的历史,不得不先说一下MINIX,它是一个由荷兰教授ANDYTANENBAUM编写的免费且开放源代码的微型UNIX操作系统,是LINUX出现前最受欢迎的免费操作系统。而LINUX开发者当时芬兰赫尔辛基大学的学生LINUSTORVALDS正是受了MINUX系统的启发,希望能够编写出一个比MINIX更好的操作系统。因此,他在MINIX的基础上开发出了001版本的LINUX系统。经过改良后于1991年10月5日完成了002版本的LINUX。1南京工程学院毕业设计说明书(论文)11LINUX的出现,引起了来自世界各地用户的关注,越来越多的开发人员通过INTERNET加入了LINUX的内核开发行列,而LINUX也随着在INTERNET上的传播而得到了快速的发展。1994年3月,在LINUX社区的自由开发人员协同努力下,LINUS完成并发布了具有里程碑意义的LINUX100版本。该版本的LINUX已经是一个功能完备的操作系统,稳定高效而且只需要占用很少的硬件资源,即使在只有很低配置的80386机器上都能很好地运行。212LINUX内核版本在LINUX中,它的核心部分被称为“内核”,负责控制硬件设备、文件系统、进程调度及其他工作。LINUX内核一直都是由LINUS领导下的开发小组负责开发和规范的,其第一个公开版本就是1991年10月5日由LINUS发布的002版本。两个月后,也就是在1991年12月,LINUS发布了第一个可以不用依赖MINIX就能使用的独立内核011版本。其后内核继续不断地发展和完善,陆续发行了012和095版本,并在1994年3月完成了具有里程碑意义的100版本内核。从此,LINUX内核的发展进入了新的篇章。1从100版本开始,LINUX内核开始使用两种方式来标准其版本号,即测试版本和稳定版本。其版本格式由主版本号次版本号修正版本号3部分组成。其中,主版本号表示有重大的改动,次版本号表示有功能性的改动,修正版本号表示有BUG的改动,从次版本号可以区分内核是测试版本还是稳定版本。如果次版本号是偶数,则表示是稳定版本,用户可以放心使用;如果次版本号是奇数,则表示是测试版本,这些版本的内核通常被加入了一些新的功能,而这些功能可能是不稳定的。例如,2624是一个稳定版本,2564则是一个测试版本。213LINUX的优势1)免费传播LINUX操作系统的产生初衷就是要开发一款免费的操作系统来自由的传播,南京工程学院毕业设计说明书(论文)12因而其自出现以来一直鼓励免费使用,任何人都可以免费从网上下载并修改源代码。不同的版本的LINUX互相兼容,而且相关的软件也可以免费获得。2)高度的稳定性LINUX系统具有极高的稳定性,因而采用LINUX的电脑越来越多,根据2008年的TOP500超级电脑列表,现时世界上最快速的超级电脑使用LINUX作为其操作系统。而在列表的500套系统里面,采用LINUX为操作系统的,占了439组(即878)。许多独立的机构根据针对LINUX的WINDOWS做了大量的测评,基本上所有的测试都显示LINUX的性能要优于WINDOWS。LINUX继承了UNIX的优良特性,可以连续运行数年而无需重启,而且LINUX基本不会被病毒感染。系统的稳定性主要取决于系统设计的结构,LINUX这种超强的免疫力归功于LINUX具有科学稳定的架构。LINUX基本上不会崩溃,系统内没有像WINDOWS那样众多的漏洞。着也归功于LINUX的开源特性,一旦发现漏洞就会有人及时给与修复。此外,LINUX采取了许多安全技术措施,设置了不同的权限,为网络用户提供必要的安全保障。3)LINUX具有很高的性能LINUX能够在实现系统资源的低占有率和高性能运算。LINUX系统由内核和上层应用程序共同组成的,当LINUX启动时,内核会调入内存的,然后会一直存放在里面直到断电重启。内核是用来为操作系统的运行来合理分配资源的。通常情况下,内核会被尽量设计的很小,在安装时,用户可以根据需要仅安装需要的一些应用程序,甚至我们可以仅仅安装内核。4)LINUX具有现代操作系统的多种特征现在操作系统最重要的特点就是程序的并发执行和资源共享。LINUX作为一个多用户、多任务的操作系统,以进程为资源分配的基本单元进行资源的配置。程序的并发执行是以资源共享为前提的,LINUX提供多种方式来进行进程间通讯。214LINUX的发展前景南京工程学院毕业设计说明书(论文)13现在的工业已经在现实上形成了以微软和INTEL组成的工业联盟的垄断,即WINTEL。WINDOWS操作系统在全球已经得到了普遍的使用,其垄断地位无人能够撼动,但是这种局面严重影响了行业的发展,因此无数的软件开发者力图打破这种行业垄断。毫无疑问,LINUX是这些人梦寐以求的。因为LINUX是免费的、开源的,因此利用LINUX研发的所有产品具有明显的价格优势,而在目前发展火热的嵌入式领域里,LINUX的这种优势是无人能及的。由于嵌入式里对成本的限制,那么操作系统等一系列软件面临着更苛刻的要求,LINUX的稳定性是嵌入式领域开发最为重要的一项指标。由于微软的产品存在很大的安全隐患,其影响着人们和国家的信息安全。为此,对LINUX的研发也是对国家信息安全与利益的保护。随着信息化的不断发展,网络成为人们生活最重要的一部分,而越来越嚣张的病毒、木马等问题严重影响了人们的日常生活,LINUX强大的稳定性可以使我们免受这些问题的干扰。总的来说,LINUX会越来越受到开发者的热爱。22开发环境的搭建开发环境的搭建不仅要实现宿主机上的编译,还要能在宿主上实现交叉编译,能都生成一个可执行的二进制文件用于开发板上运行,所以开发环境能否合理搭建,直接影响到最后代码的编译结果。221交叉编译器的安装通常嵌入式系统的软件编译和执行是在不同的两个平台上进行的。编译时在宿主机,执行是在目标机,即嵌入式平台上。一般是在宿主机上通过跨平台交叉编译器把源文件编译成在开发平台上可以运行的目标文件,在通过串口,或者网络下载到目标平台上的存储介质里,然后通过目标平台来执行软件。下面来介绍宿主机上的交叉编译器的安装。1)下载ARMLINUXGCC432TAR到临时的目录下;2)打开终端运行TARZXVFARMLINUXGCC432TAR。解压后文件会生成一个/USR/LOCAL文件夹,进入此文件夹将名字为ARM的文件夹拷贝到南京工程学院毕业设计说明书(论文)14/USR/LOCAL/ARM下。那么交叉编译的程序都集中在/USR/LOCAL/ARM/432/BIN。3)修改PATH,运行命令VIM/ETC/BASHBASHRC在最后加上EXPORTPATHPATH/USR/LOCAL/ARM/432/BIN4)执行命令SOURCE/ROOT/BASHRC使环境变量生效。5)检查新的PATHECHOPATH显示的内容中有/USR/LOCAL/ARM/BIN,说明已将交叉编译器的路径加入PATH。至此,交叉编译所需要的环境安装完成了。可以通过命令ARMLINUXGCCV来查看交叉编译器能否正常工作。222NFS服务端的建立为了通过网络实现共享目录,便于开发板与宿主机之间的文件传输,就要构造NFS服务端,然后通过MOUNT命令进行共享目录的操作,实现宿主机与目标机直接的文件的传输。便于调试程序。NFS是网络文件系统(NETWORKFILESYSTEM)的简称,是组成分布式计算系统的重要部分,可以实现在不同的网络上共享远程文件系统。网络文件系统是有SUN公司研发的,是当前文件系统的标准(RFC1ARRAY04,RFC1813)。网络文件系统最大的功能就是让不同的操作系统通过网络来共享计算机的数据。NFS服务端通过读取/ETC/EXPORTS文件中的配置信息来共享具体哪个目录。/ETC/EXPORTS文件中NFS的配置信息的格式如下【共享目录】【主机名或者IP】【参数1,参数2】其中,主机名或者IP允许访问共享目录的客户机或者客户机IP。如果允许任意名称或IP的客户机共享目录,则该选项可以用符号来。常见的参数如下所示RW可读写。RO只读。NO_ROOT_SQUASH客户端使用NFS共享目录的权限。SYNC数据同步写入ARM和硬盘。ASYNC数据暂时写入ARM,不写入硬盘。在本课题中,/ETC/EXPORT文件内容如下所示南京工程学院毕业设计说明书(论文)15/HOME/NFSROOT/ROOTFS1921681140RW,SYNC,NO_ROOT_SQUASH因为NFS支持很多功能,每个功能都会使用一些端口来传输数据,因此NFS没有把功能和对应的端口固定起来,而是随机使用空闲的端口。但是,客户端需要知道服务端的具体端口才能够进行访问,因此在使用NFS服务前需要启动远程调用(RPC)服务。RPC的主要功能就是制定每个NFS功能所对应的端口号,并反馈给客户端。NFS服务端在启动时会随机选取数个端口,并向RPC注册,因此RPC会知道每个端口对应的NFS功能,然后RPC会固定使用端口111来监听客户端的请求,并把端口号反馈给客户端。所以在启动NFS服务前,必须先启动RPC服务,否则NFS无法向RPC注册。RPC服务和NFS服务分别通过命令“SERVICEPORTMAPSTART”和“SERVICENFSSTART”启动。ROOTLOCALHOSTSERVICEPORTMAPSTARTROOTLOCALHOSTSERVICENFSSTART使用“SERVICENFSSTATUS”可以查看NFS的运行情况。这样NFS的服务端就建立成功了。223烧写内核镜像ZIMAGE(1)内核版本为LINUX2629,通过MAKE编译该内核,会生成ZIMAGE(2)将开放板和主机连好,打开超级终端(3)通过SUPERVIVI来烧写ZIMAGE23SDL库的移植SDL是一个自由的跨平台的多媒体开发包,适用于游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。是为数不多的商业游戏开发公司使用的免费软件库之一。它提供跨平台的二维帧缓冲区图形和音频服务,它支持LINUX等多种操作系统。除了丰富的服务,还包括线程以及不同于字节存储次序的宏定义和一些CD音频,除此以外还提供了简单的接口,南京工程学院毕业设计说明书(论文)16该接口允许用户尽可能接近本机的硬件设备。使用SDL有很多优点,最突出的还是稳定灵活。稳定如果SDL本身并不向接口提供一定的支持,那么研发人员就不能很好的使用它了。使用了SDL,研发人员就可以修正错误并增强了SDL的功能,也就是增强了接口的健壮性。大家都知道内核的开发是分步进行的,SDL的开发和内核开发一样也是分步来做的。灵活只要移植到SDL,并确定一些数据假设,那么根本不必改动代码,演示就可以在WIN32、BEOS和LINUX控制台上运行了。尽管代码完完全全是跨平台的,但不会把研发人员和底层真正的分开。SDL本身提供了SDL_GETWMINFO函数,该函数方便开发者访问底层驱动的程序。231在PC机上安装SDL开发环境和LINUX下其他的软件库一样,SDL同样具有很强的移植性我们所要做的就是在PC机上编写应用程序,调试通了以后就可以交叉编译移植到ARM板子上。下载SDL1213STABLE,然后进行安装,由于后面的交叉编译的是TARXX源码包,所以建议在PC机上使用TARXX包进行安装。安装前请先查看是否安装有SDL,如果有请先卸载,如果你的系统使用的是RPM软件安装包管理器可以使用下面的命令进行查看RPMQA|GREPSDL如果使用DPKG软件包管理器,可以使用DPKGSSDL下一步开始安装CD/TMPTARZXFSDL1213TARGZCDSDL1213/CONFIGUREHELP使用上面这条命令用来查看CONFIGURE选项信息,然后在这些选项中筛选南京工程学院毕业设计说明书(论文)17必要的选项。如果没有错误,执行MAKEMAKEINSTALL那么PC机上SDL安装完成。232交叉编译SDL库移植到开发板由于ARM板的资源有限,不可能把所有的选项都开启,因此我们需要根据实际情况进行选择,下面的选项一般可以满足我们的要求/CONFIGUREPREFIX/HOME/NFSROOT/ROOTFS/SDLCCARMLINUXGCCHOSTARMLINUXTARGETLINUXDISABLEDEBUGDISABLECDROMDISABLEESDDISABLEARTSDISABLEARTSSHAREDDISABLEDISKAUDIODISABLENASDISABLEESDSHAREDDISABLEMINTAUDIODISABLENASMDISABLEVIDEOX11DISABLEVIDEODGADISABLEDGADISABLEVIDEOPS2GSDISABLEVIDEOXBIOSDISABLEVIDEOGEMDISABLEVIDEOOPENGLDISABLEDIRECTXDISABLESTDIOREDIRECTDISABLEOSMESASHARED2STRUCTVIDEO_CAPABILITYCAPABILITYSTRUCTVIDEO_BUFFERBUFFERSTRUCTVIDEO_WINDOWWINDOWSTRUCTVIDEO_CHANNELCHANNEL8STRUCTVIDEO_PICTUREPICTURESTRUCTVIDEO_MMAPMMAPSTRUCTVIDEO_MBUFMBUFUNSIGNEDCHARMAPTYPEDEFSTRUCT_V4L_STRUCTV4L_DEVICE(1)VIDEO_CAPABILITY包含设备的最基本的信息(设备名、分辨率、信号源等等)。NAME32设备名称。MAXWIDTHMAXHEIGHTMINWIDTHMINHEIGHTCHANNELS信号源的信息。TYPE是否可以CAPTURE,彩色或是黑白,能否裁剪等等。值如VID_TYPE_CAPTURE等。(2)VIDEO_PICTURE采集到的图像属性。BRIGHTNESS065535亮度。HUE色调。CONTRAST对比度。WHITENESS色度。南京工程学院毕业设计说明书(论文)25DEPTH8162432深度。PALETTEVIDEO_PALETTE_RGB24|VIDEO_PALETTE_RGB565|VIDEO_PALETTE_JPEG|VIDEO_PALETTE_RGB32(3)VIDEO_CHANNEL信号源的一些属性。CHANNEL信号源的编号。NAMETUNERSTYPEVIDEO_TYPE_TV|IDEO_TYPE_CAMERANORM制式PAL|NSTC|SECAM|AUTO(4)VIDEO_WINDOW摄像头的窗口的参数。XX坐标。YY坐标。WIDTH捕获图像的宽。HEIGHT捕获图像的高。CHROMAKEYFLAGS捕获的标识。CLIPS裁剪矩形的列表。CLIPCOUNT裁剪矩形的数目。(5)VIDEO_MBUFMMAP映射帧的信息SIZE每帧大小。FRAMES所支持帧数的最大数目。OFFSETS每帧的偏移量。(6)VIDEO_MMAP用于MMAP内存映射412V4L编程中摄像头的I/O控制(1)打开摄像头在LINUX中视频设备看作设备文件,通过OPEN函数来实现,该函数的功能是以用指定方式来打开设备的。OPEN函数为INTOPENDEV,O_RDWR南京工程学院毕业设计说明书(论文)26第一个为设备的文件名,对于本课题则使用的是/DEV/VIDEO0,第二个则表示打开的类型。首先需要检查参数DEV是否为空,然后使用OPEN函数以只读方式来打开摄像头的设备,并且得到文件描述符。判断得到的文件描述符是否为1,如果是则说明打开设备时出错。INTV4L_OPENCHARDEV,V4L_DEVICEVDIFDEVPRINTF“NODEVICEFILE,ERROROPENINGV4LINTERFACE”RETURN1IFVDFDOPENDEV,O_RDWRFD(2)获取摄像头的参数摄像头设备被打开之后,就需要获取对应的摄像头的属性参数,这个需要调用IOCTL函数来实现。IOCTL主要是控制I/O通道。参数表为IOCTLINTVDFD,INTCMD,,其中,VDFD代表对应设备的文件描述符,它在打开设备文件的时候系统返回的一个描述符,CMD代表用户程序的控制命令,第三个参数一般是一个其他的参数,可以默认设置。读取VIDEO_CAPABILITY中的摄像头的属性信息INTGETVIDEOCAPSTRUCTVDINVDIFIOCTLVDFD,VIDIOCGCAP,RETURN0成功设置图像的属性。设置VIDEO_WINDOW摄像头采集窗口的属性信息INTSETVIDEOWINSTRUCTVDINVD南京工程学院毕业设计说明书(论文)28IFIOCTLVDFD,VIDIOCSWIN,RETURN0(4)关闭摄像头设备关闭摄像头设备的时候最主要的工作是要将调用摄像头的时候分配的内存空间要释放完全,在我们开发过程中要注意回收内存,特别是对于嵌入式系统开发中,因为系统资源并不丰富,如果我们不回收系统资源往往会出现致命的错误,甚至有可能导致系统崩溃。本课题可以通过内存映射和直接读取设备两种不同的方式来获取视频数据,所以首先要考虑选用哪一种方式来获得视频数据,如果是内存映射的方式,则要在系统任务完成之后必须首先关闭映射的内存,然后调用CLOSE函数关闭设备文件,最后还需要做部分系统回收的工作。CLOSE_V4LSTRUCTVDINVDINTIIFVDGRABMETHODIFDEBUGPRINTF“UNMAPPINGFRAMEBUFFERN“MUNMAPVDPFRAMEBUFFER,VDMMAPSIZEELSEFREEVDPFRAMEBUFFERVDPFRAMEBUFFERNULLIFDEBUGPRINTF“CLOSEVIDEO_DEVICEN“CLOSEVDFD/释放所有的缓存/IFVDVIDEODEVICEFREEVDVIDEODEVICEVDVIDEODEVICENULLIFVDCAMERANAMEFREEVDCAMERANAMEVDCAMERANAMENULL南京工程学院毕业设计说明书(论文)29FORI0IPTFRAMEIFREEVDPTFRAMEIVDPTFRAMEINULLVDFRAMELOCKI0IFDEBUGPRINTF“FREEINGOUTPUTBUFFERDN“,IPTHREAD_MUTEX_DESTROY413V4L编程中如何从摄像头中读取图像数据从设备中获取采集到的数据是本课题核心所在,也是实现视频监控的首要前提,如果获取不到视频数据,后面的工作也就不存在任何的意义,视频数据算法不够优化,也会严重影响整个系统的性能,本课题系统支持直接读取和内存映射两种方式,可以通过输入指令来区别设定选用的是何种数据获取方法。1)用MMAP(内存映射)方式获取视频数据MMAP函数是通过映射同一个普通文件来达到两个不同的进程共享同一块内存的目的。映射普通文件到地址空间后,进程就像访问普通的内存那样来对文件进行操作,不在需要调用READ,WRITE函数。采用共享内存通信的优势是效率高,并且不需拷贝任何数据。A设置PICTURE的属性B初始化VIDEO_MBUFIOCTLVDFD,VIDIOCGMBUF,VDVMMAPWIDTHVDHDRWIDTHVDVMMAPFORMATVDFORMATINIFIOCTLVDFD,VIDIOCSYNC,PTHREAD_MUTEX_LOCKTEMPSMS_TIMEJPEGSIZECONVERTFRAMEVDPTFRAMEVDFRAME_COURSIZEOFSTRUCTFRAME_T,VDPFRAMEBUFFERVDVIDEOMBUFOFFSETSVDVMMAPFRAME,VDHDRWIDTH,VDHDRHEIGHT,VDFORMATIN,VDFRAMESIZEINHEADERFRAMESTRUCTFRAME_TVDPTFRAMEVDFRAME_COURSNPRINTFHEADERFRAMEHEADER,5,“S“,“SPCA“HEADERFRAMESEQTIMESMS_TIMEHEADERFRAMEDELTATIMESINTHEADERFRAMESEQTIMESTIMECOURANTHEADERFRAMEWVDHDRWIDTHHEADERFRAMEHVDHDRHEIGHTHEADERFRAMESIZEJPEGSIZEFORMATVDFORMATINHEADERFRAMENBFRAMEFRAMEPTHREAD_MUTEX_UNLOCKIFIOCTLVDFD,VIDIOCMCAPTURE,ERREUR1VDVMMAPFRAMEVDVMMAPFRAME1VDVIDEOMBUFFRAMESVDFRAME_COURVDFRAME_COUR1OUTFRMNUMB南京工程学院毕业设计说明书(论文)31MMAP是通过VIDIOCMCAPTURE来做视频截取的;IOCTLVDFD,VIDIOCMCAPTURE,LENREADVDFD,VDPFRAMEBUFFER,SIZEIFLENFRAMELOCKVDFRAME_COUR0PTHREAD_MUTEX_LOCKTEMPSMS_TIMEJPEGSIZECONVERTFRAMEVDPTFRAMEVDFRAME_COURSIZEOFSTRUCTFRAME_T,VDPFRAMEBUFFER,VDHDRWIDTH,VDHDRHEIGHT,VDFORMATIN,VDFRAMESIZEINHEADERFRAMESTRUCTFRAME_TVDPTFRAMEVDFRAME_COURSNPRINTFHEADERFRAMEHEADER,5,“S“,“SPCA“HEADERFRAMESEQTIMESMS_TIMEHEADERFRAMEDELTATIMESINTHEADERFRAMESEQTIMESTIMECOURANT南京工程学院毕业设计说明书(论文)32HEADERFRAMEWVDHDRWIDTHHEADERFRAMEHVDHDRHEIGHTHEADERFRAMESIZEJPEGSIZEFORMATVDFORMATINHEADERFRAMENBFRAMEFRAMEVDFRAME_COURVDFRAME_COUR1OUTFRMNUMBPTHREAD_MUTEX_UNLOCK42图像保存为视频本课题是将从摄像头获取到的数据转换为AVI的视频格式用于保存。由于使用的ZC301USB摄像头,摄像头里面已经有专门的芯片将获取到的每一帧的图像转换成JPEG格式,所以这里就不需要用软件的形式来进行对每一帧图像进行转码,压缩,减小了设计复杂度。421ZC301摄像头内部芯片实现JPEG编码方法ZC301是中星微公司生产的一种可以自主实现JPEG转码的一款用于摄像设备的芯片,摄像头捕获到每一帧的图像数据之后,芯片会实现对数据的编码和压缩,直接输出一个以JPEG为格式的图像。早在2008年,中星微公司就实现了这种编码方法,并申请了专利2。这是一种摄像头用应急JPEG编码方法,该方法包括了一下的几个步骤(1)将采集到的图像按标准分成像素块,使用正向离散余弦变换把空间域表示的图变换成频率域表示的图;(2)对经过正向离散余弦变换后的频率系数进行量化,并对量化后的系数进行重新编排;(3)使用差分脉冲编码调制对直流系数进行编码;(4)监测缓冲使用率,选取交流系数的数量,使用行程长度编码对所选取的交流系数进行编码;(5)使用熵编码对编码后的直流系数和交流系数作进一步的压缩;(6)将编码数据送入缓冲。南京工程学院毕业设计说明书(论文)33该方法可以有效避免传输缓冲区溢出而导致的坏帧,可以根据缓冲区的使用率灵活的调整压缩方案,提高视频效果。422视频压缩编码方法AVI简介AVI(AUDIOVIDEOINTERLEAVE)是一种音频与视频相互交叉记录的数字视频文件格式。1992年初微软公司推出了AVI技术和其对应的应用软件VFW(VIDEOFORWINDOWS)。AVI文件的主要参数为视像参数、伴音参数和压缩参数等。1视像参数(1)视窗尺寸(VIDEOSIZE)。AVI的分辨率可按任意的比例随意调整,大到可以是全屏640480,小到可以说160120甚至更低。如果窗口越大,那么视频文件的数据量就会越大。(2)帧率(FRAMESPERSECOND)。帧率与数据量是成正比的。可以调整的。不同帧率是可以产生不同的画面效果的。2伴音参数在AVI的格式文件中,WAV的文件格式的参数是伴音的最基本的参数。(1)交织参数(视频和伴音)。每X帧交织存储的那种音频信号是我们可以调控的参数,也就是音频和视频相互交叉的频率,X的最小值设定为一帧,就是音频和视频相互交叉组织。如果交织参数越小,也就是说AVI格式的文件读到的数据就会越少,回放将会很容易连续。(2)同步控制(SYNCHRONIZATION)。在AVI文件中,视频和音频是同步的。但MPC回放AVI文件时很容易出现视频和音频不同步的现象。(3)压缩参数。在采集视频时我们可以用不压缩而直接采集,这样获得的图片质量是很高的。但是编辑的时候,我们应根据不同的环境选择恰当的压缩参数来达到我们需要的效果。3AVI数字视频的特点(1)提供没有硬件的视频回放功能。我们根据AVI格式的一些参数,发现可根据处理速度调整视窗和帧率。在INTERNET上播放时,VFW的视窗可以是很小的值,在PENTIUM级的系统上,对于64K色、320240的压缩数据,我南京工程学院毕业设计说明书(论文)34们可以实现一秒25帧速率来回放。这样,VFW就可以被更多的硬件所接受了。(2)实现同步控制和实时播放。AVI是用同步控制这个功能来自调整以适应重放的环境,假如MPC的性能不高,而AVI文件的数据又相对较大,在WINDOWS环境下运行该文件时,那么播放器会选择丢去一些帧。(3)提供了AVI视频文件的结构。AVI视频文件具有通用性和开放性的特点,同时可以处理了音频视频不能同步的问题。它可以

温馨提示

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

评论

0/150

提交评论