基于ARM的网络视频监控系统的设计与实现Word格式文档下载.docx
《基于ARM的网络视频监控系统的设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于ARM的网络视频监控系统的设计与实现Word格式文档下载.docx(41页珍藏版)》请在冰豆网上搜索。
![基于ARM的网络视频监控系统的设计与实现Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-11/25/65f73f9c-9d1d-40de-8293-98439954b0b8/65f73f9c-9d1d-40de-8293-98439954b0b81.gif)
本系统以IntelXscale芯片和嵌入式Linux系统为平台,在平台中搭建网络视频服务器,并以它为中介,负责将USB摄像头采集到得视频数据传输到网络服务器中,最后发送到申请监控的远程PC机中,远程PC只需在网页中便能实时的看到监控端的视频图像。
论文首先阐述了嵌入式网络视频监控技术的发展、现状和前景,然后介绍了嵌入式硬件系统结构和嵌入式Linux操作系统的特点,阐述了嵌入式硬件整体结构,使大家大体的完整的对系统硬件有详细的了解,实际记录了嵌入式操作系统内核的编译和移植,介绍了Bootloader的基本原理和启动过程,实现了视频采集程序的编译和移植,研究了嵌入式一般驱动程序的使用。
随后,本文详细描述了视频采集程序的整体结构框图和具体功能代码块、网络通信编程技术、图像编解码、嵌入式视频服务器和搭建网站等内容的设计和具体实现,最后进行系统测试,描述系统功能,调整用户友好界面,提出未来进一步开发建议。
本文的研究成果有很大的应用价值,是现代嵌入式发展的新方向,也是IP通信的新应用,对嵌入式视频未来发展有一定参考价值。
关键词:
ARM;
嵌入式;
Linux;
视频监控
第1章引言
1.1课题的背景和来源
设想一下这样的场景:
您正在外地或是公司,有些不放心家里年幼的孩子,怎么办?
打个电话?
不,太麻烦。
您可以用你的便携PDA或者是智能手机访问一个网页,您就会像回家了一样马上看到您家里的所有情况,每个角落都不会放过。
无论黑天白天、离家多远,你都能方便的看到家中的情况,无比安全。
这不是什么高深的技术,只需在家中安装一台摄像头,实现视频监控的功能。
二十一世纪的网络化、数字化让人们的生活每天都发生着翻天覆地的变化,获取信息的方便和快捷可以使人们在信息化的今天领先一步创造出巨大的利益,而获取信息的重要途径就是眼睛。
据统计,人类采集信息的80%来自视觉。
图像和视频是对客观事物生动、形象的描述,是一种最直观的表现方式。
而视频监控技术因为它方便快捷、生动形象、信息丰富等特点日益受到人们的青睐,并在各行各业得到广泛的应用。
与此同时,现代网络和数字技术的快速发展也为视频监控技术的发展奠定了坚实的基础。
在摄像机、电视出现后,视频监控就因为其优异的特点随之出现了,并伴随着实际技术水平不断发展。
发展之初,模拟技术正当流行,视频监控中的图像和视频主要是模拟信号,传输和处理的方式也以模拟为主。
接着,数字技术出现,它以领先模拟技术的诸多特点引领着视频监控技术的快速发展。
在这个时期,视频监控把采集到的图像、声音和视频转换成数字信号进行处理、传输,接受端再把数字信号通过模数转换技术转换成模拟信号供用户使用。
近些年来,计算机、通信、电子技术像脱缰的马一样把以前所有的技术以前所未有的方式极具凝聚力的结合在一起,视频监控技术达到了它发展的顶点。
上世纪末,基于PC的数字化网络视频监控系统迅速崛起,部分取代了以视频矩阵图像分割器、录像机为核心,辅以其他设备的模拟视频监控系统。
数字化的视频监控技术在图像质量、传输距离、看干扰性、传输速度、方便快捷等方面远远的超过了模拟视频技术。
也许,数字视频监控系统唯一的缺点就是它的复杂和昂贵。
二十一世纪,嵌入式技术、多媒体处理技术进一步发展,为视频监控系统的发展提供了新的出路——嵌入式视频监控系统。
嵌入式系统是以应用为中心,软硬件可以剪裁,具有高稳定、低成本、功耗低、速度快、实时好的专用计算机系统,它由嵌入式微处理器,配以周边硬件设备,接口电路组成。
嵌入式系统内部使用嵌入式操作系统,安装专用的功能软件。
嵌入式技术把硬件和软件集于一体,独立工作。
嵌入式视频监控系统比其他视频监控系统在布局区域范围上要广泛;
由于使用IP技术,嵌入式视频监控技术比其他视频监控系统更具紧密的结合度,能够充分利用现代网络技术的成果,并能构成复杂的视频监控网络;
性能上,嵌入式视频监控系统继承了嵌入式技术的优点,非常适合自动化的环境。
因此,嵌入式视频监控技术正在我国快速的发展,积极的研究会加强我们在这方面技术的学习,也会为视频监控技术的发展贡献力量。
1.2课题研究的实际意义
网络视频监控系统是在高带宽网络、大规模集成电路、高速通信等高科技手段发展的基础上产生的。
虽然它利用了当今最前沿的技术,却解决了一直以来都没有完美解决的老问题——安全问题。
以往的监控系统体积过于庞大、技术落后、成本高昂,这直接影响了视频监控系统的普及程度。
不能在所有需要安装视频监控系统的地方安装,导致了一些监控的盲点,有些还造成了严重的损失。
嵌入式早期应用于军事及航天领域,以后逐步广泛的应用于工业控制、仪器仪表、汽车电子、通信和家用消费领域。
随着互联网的发展,嵌入式处理器类型多样化,处理能力空前提升,新兴的嵌入式系统正朝着信息家电IA(InformationApplication)和3C(Computer,Communication&
Consumer)产品方向发展,应用嵌入式技术,只需要一个手掌大的小盒子,就能实现所有监控的功能,这样的优势促使人们在视频监控系统上的需求持续增加。
2006年,AT&
T公司就在美国推出了面向家用的视频监控设备,用户可使用手机或者PC接收来自家中的警报或实时视频回馈。
用户需要一次性支付199美元,用以购买摄像头、无线门磁探测器以及相关软硬件,之后需每月支付9.95美元作为服务费用,美国的宽带互联网用户和CingularWireless公司的无线上网手机用户都可以享用该服务。
网络视频监控系统在美国一夜之间极受欢迎。
与国外市场相同,国内个人用户也是视频监控领域不可缺少的重要客户,一直以来,我国的视频监控业务主要集中在行业用户上,由于家用视频监控一直没有形成规模,产业链也没有完全形成,加上造价、设备复杂性方面的影响,家用视频监控市场一直没有显著的发展。
近年来,随着人们生活条件的改善,国内市场对适合民用的安全监控系统的需求变得十分强烈。
为了应对市场需求,原先以行业应用为主的网络视频监控设备从外观、功能、应用和价格上不断贴近家庭市场的消费需求,大量以网络视频监控设备为代表的家用视频监控产品开始涌入民用市场,凭借强大的技术、时尚的外观设计和高性价比,潜移默化地改变着国内安防民用市场的发展现状。
不仅如此,在电力系统、电信机房、工厂、城市交通、水利系统、小区治安等领域,视频监控系统得到越来越广泛的应用。
同时,现在3G技术迅猛发展,手机视频监控等新兴技术也日新月异。
过去,我国的视频监控应用主要集中在政府部门和金融、公安、交通、电力等特殊部门及行业。
其中,政府部门和金融行业分别占据了20.9%和20.6%的市场份额。
然而,随着社会信息化的进步,越来越多的行业和领域视频监控的需求大量增加,即便是公安这样的传统用户也在"
平安城市"
方面对城市监控提出了全新的格局和功能要求。
今年,视频监控开始从银行、交通等个别领域向多领域延伸,由传统的安防监控向管理监控和生产经营监控发展。
此外,视频监控仅用于企业行业的情况也逐渐被打破,公众家庭也成为2008年视频监控应用的新市场。
在公众家庭市场,视频监控主要是应用于住宅的安全防范和财产的监控。
用户可以通过在家中安装摄像头,利用家庭网关作为视频服务器,用户在远程通过Internet实时监控家庭安全。
虽然离数字家庭的全面实现还比较远,但随着IPv6技术和信息家电技术的发展、移动监控设备的进一步优化,视频监控技术很可能最先在数字家庭中得到推广。
一份国内市场研究报告指出,随着个人用户对家庭安全的重视度日益增长,采用视频监控系统来保障住宅安全的意识明显加强,将在2008年成为新兴市场。
所以,从市场需求、技术创新、行业需要等方面,网络视频监控系统都需要我们仔细研究和学习,有极大的现实意义。
1.3本文的内容及主要工作
根据毕业设计的初衷,我们需要设计基于ARM的网络视频监控系统。
在监控系统中,视频采集、传输、播放的功能不是由专门视频处理芯片完成,而是由软件实现。
论文首先介绍了嵌入式ARM系统的硬件结构和软件结构,方便大家熟悉ARM和Linux系统,包括嵌入式设备的硬件结构,逻辑框图和Linux的基本操作、安装方法;
第二,研究了嵌入式的一些驱动程序,主要是摄像头驱动程序V4L,系统中选用的摄像头芯片——中星微301;
第三,研究了视频监控的具体流程和实现方式,让大家在总体上对整个系统有一个大概的认知;
最后,搭建了视频服务器和具体网站,增加了整个系统的友好程度,让系统全面的跟高的展示在使用者面前。
本次设计的目的只有一个,就是实现视频的实时监控。
围绕它,不管是硬件结构还是软件流程,都需要学习和研究,不断调试,决不放弃。
总之,论文的内容都是围绕如何建立一个视频监控系统。
无论是从哪个方面,我们都是为这个目标而努力。
第2章嵌入式ARM系统硬件结构简介
2.1视频监控系统结构简介
网络视频监控系统是基于嵌入式技术设计的。
嵌入式并没有统一的定义,但目前有一个广泛而又被认可的规范:
将软件产品固化到硬件平台上,完成应有的功能既是嵌入式。
基于嵌入式ARM技术的视频监控系统服务器端采用摄像头不断的采集图像,压缩成视频流,然后通过网络发送到申请监控的客户端。
监控系统的使用者可以在远程实现网页上的实时监控和一些简单的功能操作。
系统整体结构如图2.1所示[1]。
图2.1系统整体结构图
该系统中CPU采用基于ARM的PXA270微处理器,通过在其上运行Linux操作系统,执行Boa视频服务器,接受并处理来自摄像头的图像信号,通过以太网控制器发送至远端,实现视频数据的远程传输和接受,达到视频监控的目的[2]。
2.2ARM处理器简介
ARM,既是一个公司的名字,也是对一类微处理器的通称。
ARM嵌入式微处理器是全球领先的16/32位RISK处理器芯片知识产权设计供应商ARM(AdvancedRISKMachines)公司的产品。
ARM公司本身不直接从事芯片生产,而是依靠转让设计许可,由合作公司生产各具特色的芯片。
ARM处理器以其完整的体系结构,极小的体积、极低的功耗、极低的成本、极高的性能,及时根据嵌入对象的不同进行功能上的扩展的优势,在众多种类的嵌入式微处理器中脱颖而出。
基于ARM技术的微处理器应用占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。
采用RISC架构的ARM微处理器一般具有如下特点:
(1)采用固定长度的指令格式,指令规整、简单、基本寻址方式有2~3种;
(2)使用单周期指令,便于流水线操作执行;
(3)大量使用寄存器,数据处理指令只对寄存器进行操作,以提高指令的执行效率;
(4)所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率;
(5)可用加载/存储指令批量传输数据,以提高数据的传输效率;
(6)可在一条数据处理指令中同时完成逻辑处理和移位处理;
(7)在循环处理中使用地址的自动增减来提高运行效率。
目前,ARM处理器有ARM7、ARM9、ARM9E、ARM10、ARM10E、SecurCore、StrongARM和XScale等系列。
每个系列除了具有ARM体系结构的共同特点以外,都有各自的特点和应用领域。
2.3XScale体系结构
Xscale核是采用ARMV5TE架构的处理器,是Intel公司的StrongARM的升级换代产品,它具有高性能、低功耗等特点,并在流水线设计、DSP处理和指令设计中有很大改进[3]。
ARM的体系结构是基于RISK的,XScale是ARM处理器的一种,所以XScale具有RISK的基本特性。
而且针对嵌入式系统,XScale构架还引入了Pentium处理器工艺和系统结构技术,实现了Pentium微处理器体系结构的一系列高性能技术,达到了高性能、低功耗和小体积等嵌入式系统要求的特性。
它的特点有:
超流水线、高主频、存储体系、分支预测和指令集体系结构。
本设计采用的就是基于英特尔Xscale构架的一种32位嵌入式处理器,它除了应用于掌上电脑之中外,还可以应用于智能手机、网络存储设备、骨干网路由器等电子设备。
PXA27x系列处理器是英特尔当前最新推出的嵌入式处理器。
它的时钟频率从312到624MHz不等,并内建64MB的堆栈型IntelStrataFlash内存。
内置了英特尔的无线MMX技术,能够显著提升多媒体性能。
OURS-PXA270-EP是一款基于INTEL XSCALEPXA270处理器,针对高效嵌入式系统教学和实验科研的平台。
这款设备主要包括核心板与底版两个部分,核心板主要集成了高速的PXA270CPU,配套的存储器,网卡等设备;
底版主要是各种类型的接口与扩展口。
核心板(8层PCB电路)系统包括:
CPU:
INTELPXA270(520M),支持GDB调试;
SDRAM:
64M工作在104M外频上;
FLASH:
32MINTELNorFLASH;
Net:
10/100MEthernetcontroller(LAN91C111);
SUPERIO:
WINBOND83977;
CPLD:
XILINX95144(117USERIO);
总线驱动器:
若干;
核心板正面如图2.2所示,核心板背面如图2.3所示。
图2.2核心板正面图
图2.3核心板背面图
底版(4层PCB电路)如图2.4所示。
包括:
Ethernet:
10/100接口1个
UART:
6个(包括RS232,RS485,IRDA,全功能串口)
USB1.1:
2个(1个host一个device)
PS2:
2个(KEYBOARD&
MOUSE)
标准并口:
1个
PCMCIA:
1个
IDE:
SD/MMC:
SMC:
CAMERA:
96PIN功能扩展口:
2个
4X5小键盘
CPU_JTAGCPLD_JTAG
LED SHARPLQ080V3DG018寸真彩LCD 640X480
VGA640X480
LED8X8点阵
一组7段LED数码管4个
图2.4底版图
2.4主要硬件电路说明
嵌入式设备除了以ARM芯片为主要控制单元,也有很多周边电路和外围设备,它们有的帮助ARM处理信号、有的负责存储数据、有的进行网络连接、有的用来数据通信,这些周边设备缺一不可,不能替代。
首先介绍CPU核心总线[4],总线是CPU和其他设备的桥梁。
CPU是通过总线信号来控制SDRAM,FLASH,网卡,SUPERIO等外部设备的,无论是低速还是高速,只要是与总线相关的芯片,都要和CPU总线信号有关。
其次,研究嵌入式系统内存——SDRAM。
SDRAM是嵌入式系统的内存,具有单位空间存储容量大和价格便宜的优点,已广泛应用在各种嵌入式系统中。
当系统启动时,CPU首先从复位地址0x0处读取启动代码,在完成系统的初始化后,程序代码一般应调入SDRAM中运行,以提高系统的运行速度。
同时,系统及用户堆栈、运行数据也都放在SDRAM中。
SDRAM的存储单元可以理解为一个电容,总是倾向于放电,为避免数据丢失,必须定时刷新(充电)。
因此,要在系统中使用SDRAM,就要求微处理器具有刷新控制逻辑,或在系统中另外加入刷新控制逻辑电路。
PXA270芯片在片内具有独立的SDRAM刷新控制逻辑,可方便地与SDRAM接口。
除了SDRAM,FLASH也是一种存储媒介。
FLASH一般具有NOR型和NAND型。
NAND型FLASH单元密度高,写入和擦除速度非常快,而且一般NAND型FLASH的存储容量很大。
NOR型FLASH的优点是芯片内执行命令,这样应用程序可以直接在FLASH内运行,不用进入内存,使得它的传输效率很高。
嵌入式设备最大的优点就是网络功能强大,它能像PC一样方便地连接到互联网上,这些功能都是网络控制器的作用。
也就是EthernetController,本系统采用SMSC公司的单芯片的网络控制器,LAN91C111。
它可以工作在两种速度下,10M以太网或者100M以太网。
LAN91C111的工作流程是,驱动程序将要发送的数据包按指定格式写入芯片并启动发送命令,LAN91C111会自动把数据包转换成物理帧格式在物理信道上传输;
反之芯片收到物理信号后自动将其还原成数据,并按指定格式存放在芯片RAM中以便主机程序取用。
就是LAN91C111完成数据包和电信号之间的相互转换。
最后,说明一下串口电路,在嵌入式视频监控系统中,串口起到了很重要地作用,嵌入式系统启动的信息都可以通过串口传到PC上,极大地方便了系统的移植和软件的调试。
大多数情况下,嵌入式CPU的串口0会作为CPU的一个终端,为用户与CPU交互提供基本的输出输入信息。
当CPU运行BOOT代码时,通常只有这个终端;
运行LINUX内核时,如果有LCD显示,串口0与LCD终端会同时有效。
串口0终端的交互方式是命令行的模式,在BOOT阶段,支持简单的BOOT命令。
第3章嵌入式ARM系统软件结构
3.1Linux操作系统简介
Linux是一个类似Unix的操作系统,它起源于芬兰一个名为LinusTorvaldS的业余爱好者,现已成为最流行的一款开放源代码的操作系统。
Linux从问世至今,短短时间内已发展成为一个功能强大、设计完善的操作系统。
Linux系统不仅能够运行于PC平台,还在嵌入式系统方面大放光芒。
由于Linux的源码开放,内核精简且性能强悍,不依赖于具体厂商,能广泛适用于各种硬件设备,系统二次开发成本极低,因此在IT业界已经达成共识,即采用嵌入式Linux作为嵌入式操作系统是大势所趋[5]。
嵌入式Linux是目前嵌入式系统领域中发展势头非常迅猛的系统。
嵌入式Linux是指对Linux经过小型化裁剪后,能够固化在容量只有几百K字节或几M字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用操作系统。
目前正在开发的嵌入式系统中,49%的项目选择嵌入式Linux作为操作系统。
嵌入式Linux现已成为嵌入式操作系统的理想选择[6]。
目前基于嵌入式Linux的应用已经遍布很多领域,比如移动多媒体设备、手持设备、车载导航系统、机械控制等。
嵌入式Linux分为两种类型:
在没有使用MMU的平台上(无内存虚实地址转换和映射)的一般为uCLinux;
而在有MMU平台上,则使用原本地嵌入式Linux版本。
由于在目前的主流嵌入式ARM中大多不具有MMU,因此只用IM左右的内核就能实现网络功能和任务调度的Linux系统就可以适用于从高端服务器到嵌入式应用的各级平台。
ARM技术和Linux成功地结合,应用于数以千计的商业产品中。
从便携式消费品、网络和无线设备,到自动化设备、医疗设备和存储产品,这一应用列表与日俱增。
ARM和Linux的结合充分满足了各类应用对嵌入式平台高性能、低功耗和低价格的要求,通过开发环境、开源社区和ARM的商业伙伴的优势为嵌入式开发提供了更灵活的选择。
本次设计的开发环境为redhat9.0系统,在WindowsXP下安装虚拟机,在虚拟机中安装Linux系统,这样可以屏蔽底层差别,避免硬件驱动带来的麻烦,而且还能方便的使用串口、并口、USB接口,快速的进入实验环境。
图3.1为虚拟机下Linux系统启动后的情况。
图3.1虚拟机下Linux操作系统
3.2交叉编译环境的建立
通常嵌入式系统的软件编译和执行是在两个不同平台上进行的。
编译是在宿主机,一般为装有Linux的pc;
执行是在目标机,即嵌入式系统的硬件平台。
一般是在宿主机上通过跨平台交叉编译器把源文件编译成目标平台上可执行的文件,再通过串口、并口或者网络下载至目标平台上的FLASH或者其它存储介质,然后由目标机来运行这些软件。
这里所说的跨平台编译器和一般的编译器功能类似,都是把源代码通过编译器编译成目标文件,然后通过链接器、可重定位器程序和定位器把目标文件重新定位成可执行文件。
和通用的编译器之间最大的差别就在于跨平台编译器编译出来的可执行程序通常只能在特定CPU所属平台上运行。
所以一般来说每种CPU都对应有不同的跨平台编译器。
本系统采用基于XScale的PXA270,可以使用常用的ARM-LINUX-GCC交叉编译器。
要成功构建完整的交叉编译环境需要在宿主机上创建一系列的工具包括C/C++编译器、汇编器、链接器、嵌入式系统的标准C库和GDB代码级调试器。
成功建立好开发环境后便可以运用这些工具进行嵌入式系统开发[7]。
3.3嵌入式Linux操作系统移植
3.3.1BootLorder移植
BootLoader是系统加电后运行的第一段代码。
一般只是在启动时运行很短的时间,然而对一个嵌入式系统来说,这一部分却是整个系统的一个无比重要的组成部分,不可缺少。
在一般嵌入式系统中,系统复位或者加电后通常从地址0x00000000处开始执行,而这个地址一般正是存放的BootLoader启动代码。
通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终加载操作系统内核准备好正确的环境。
BootLoader一般情况下需要包含以下几个必备的功能:
(l)初始化处理器。
这个动作都是用汇编语言完成的,称为重置码(resetcode)或者称为bootcode,而且对于每个CPU都不一样的,当电源接通后就会执行这个动作,通常只有两三个汇编指令,目的是将CPU的控制权转给硬件初始化的程序。
(2)初始化一些必要的硬件。
这个动作也大都由汇编语言来完成,主要是初始化CPU、SDRAM等,其他的硬件,例如串口,可以由c语言等比较高级的程序语言来完成后续动作。
(3)设置处理器的寄存器以及内存,关掉所有的输入管脚(包括中断管脚),以防止突然有信号进入妨碍接下来的硬件初始化动作。
然后初始化串口,以便后续运行的程序能够同HOST端进行通信,便于调试。
(4)从特定的位置把操作系统和文件系统调入内存,并设置一些操作系统所必需的参数,然后把CPU控制权交给操作系统。
有的BootLoader会先从串口或者网络等其他途径得到内核的映像文件,然后把这些文件写入目标系统的FLASH或者其它存储介质,最后再把内核载入RAM执行,交出控制权。
一般BootLoader都包含两种不同的操作模式:
“启动加载”模式和“下载”模式,这种区别仅对于开发人员才有意义。
从最终用户的角度看,BootLoader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载模式的区别。
(l)启动加载(Bootloading)模式:
这种模式也称为“自主”(Autonomous)模式,即Boot