arm920t的实时视频监控.docx
《arm920t的实时视频监控.docx》由会员分享,可在线阅读,更多相关《arm920t的实时视频监控.docx(29页珍藏版)》请在冰点文库上搜索。
![arm920t的实时视频监控.docx](https://file1.bingdoc.com/fileroot1/2023-5/25/b02f96b3-5b0f-40bd-8adf-ffa16b2ccb1d/b02f96b3-5b0f-40bd-8adf-ffa16b2ccb1d1.gif)
arm920t的实时视频监控
基于ARM9和Qt的嵌入式视频监控系统的设计
摘要
实时视频监控是指将特定区域中的声音或图像信息全部或部分地呈现在人们的视野中,以便使人们能够实时的了解该区域中的信息,给日后某些事件的处理提供可靠的证据。
随着科学技术的日益腾飞和社会安全性的考虑,实时监控系统成为了人们生活和工作中必不可少的一部分。
而近年来嵌入式技术的强势发展使得两者的结合成为了必然的趋势,嵌入式实时监控系统因此得到了迅猛的发展。
本文首先介绍了视频监控系统的发展历史,介绍了嵌入式系统开发的一般流程,接着介绍了ARM最小系统的构成以及如何搭建交叉编译环境。
然后分析了bootloader的原理和移植以及如何搭建交叉编译环境,接着分析了如何将嵌入式Linux内核移植到S3C2440上。
重点讨论了摄像头图像数据的采集和RTP传输的原理,其中图像的压缩技术采用MPEG-4压缩标准,MPEG-4压缩标准是目前视频编码中应用最广泛的一个标准。
最后介绍了一款非常流行的跨平台的C++图形用户界面库Qt,并用它实现了一个交互性友好的监控客户端。
本文基本实现了视频图像的采集、传输、显示和存储回放功能,绝大部分模块的实现都是采用Linux下的C编程。
经过测试,该系统具有良好的稳定性和维护性,具有较大的工程实用价值。
【关键词】嵌入式系统图像采集MPEGRTP传输
ABSTRACT
Real-timevideomonitoringreferstopartiallyorwhollypresentthesoundandvideoinformationinaspecificareainpeople’svisualsight,sothatpeoplecanknowabouttheinformationinthisareaonreal-timebasis,offeringpowerfulproofforhandlingtheaffairsinthefuture.Withtherapiddevelopmentofscienceandtechnologyaswellastheconsiderationofsocialsecurity,toimplementreal-timevideomonitoringbecomesindispensableinhumanbeings’lifeandwork,whereasthepromisingdevelopmentofembeddedtechnologywhichprevailsinrecentyearsmakesthecombinationofthesetwotechnologiesbecomeinevitable.Henceembeddedreal-timevideomonitoringdevelopsbyleapsandbounds.Thisdissertationfirstintroducesthedevelopmenthistoryofvideomonitoringsystem,andthegeneralflowofdevelopingembeddedsystem.ThenitgivesdescriptiontothestructureofARMminimalsystemaswellashowtocreatethecross-compilerenvironment.Nexttheprincipleandtransplantationofbootloaderareanalyzed,whileitalsoexplainshowtotransplanttheLinuxinnercoretotheS3C2440.ThenitfocusesonthecollectionofimagedatathoughthecameraaswellastheprincipleofRTPtransmission,inwhichMPEG-4compressionstandardisemployedasthecompressiontechnologyoftheimagessinceitisthemostwidely-appliedstandardinvideocompiling.Finallyitintroducesaverypopularcross-platformC++graphicuserinterfacelibraryQt,byusingwhichaninteractivefriendlymonitoringuserendisrealized.Thisdissertationactualizesthefunctionsofcollection,transmission,display,storageandplaybackofvideos.MostofmodulesarerealizedbyusingCprogramming.Aftertesting,thissystemhasgoodstabilityandmaintainabilityandthusshowsgreatengineeringpracticalvalue.
KEYWORDSEmbeddedSystemImageAcquisitionMPEGRTPtransmission
目录
摘要1
第一章绪论5
1.1课题相关背景及现状5
1.1.1课题研究相关背景5
1.1.2视频监控系统的现状和发展6
1.2嵌入式系统概述6
1.3系统的总体设计方案及安排7
第二章系统整体结构设计8
2.1视频监控系统的结构设计8
2.2ARM处理器简介9
2.3S3C2440开发板简介9
2.3.1主要结构11
2.3.2体系结构12
第三章基于V4L的视频采集程序以及图像压缩理论14
3.1V4L214
3.2应用程序通过V4L2进行视频采集的原理15
3.2.1视频采集的参数初始化15
3.2.2申请并设置视频采集的帧缓冲区17
3.3用V4L2采集视频的程序流程和相关API18
第四章视屏传输的实现21
4.1TCP/IP协议简介21
4.2socket网络编程22
第五章嵌入式系统软件设计24
5.1UbuntuSDL的安装24
5.1.1SDL库简介24
5.1.2UbuntuSDL的安装25
5.2运行、解读源程序25
5.3两台PC机之间的视频监控25
5.4安装交叉编译编译工具链26
5.5Bootlader的配置27
5.5.1bootloader的主要功能27
5.6对内核重新配置和编译27
5.7将客户端代码编译生成ARM板下可执行的镜像文件28
5.8程序移植(PC机和开发板实现视频监控)28
结论29
致谢30
参考文献31
前言
随着计算机技术及网络技术的迅猛发展,公安、工防行业的发展趋势必然是全面数字化、网络化。
传统的模拟闭路电视监控有很多局限性:
传输距离有限、无法联网,而且模拟视频信号数据的存储会消耗大量的存储介质(如录像带)。
视频监控经历了模拟视频监控、数字视频监控、无线网络视频监控3个阶段。
数字化的的视频通信在图像质量、传送距离、抗干扰能力等方面都要优越于传统的模拟通信系统,并且图像处理更加方便。
因此,数字化网络视频监控系统将取代传统的模拟监控系统。
但随着基于PC的视频监控系统的发展,在实际工程应用中也暴露出一些不足之处,主要是系统工作的实时性不高、稳定性差,而且成本较高;PC需要专门人管理,操作较为繁琐;兼容性差,采用的视频压缩对数据进行处理,因此系统一般只支持一种编码格式,无法提供其他编码方式的支持。
基于ARM9和Qt的嵌入式实时视频监控系统实现USB摄像头视频数据的采集。
经过JPEG压缩后,在高性能的ARM9芯片的控制下,使用IEEE802.11g无线局域网技术,通过无线网卡发送,最后到达客户端,可在任何时候,任何地点实现对视频的无线监控。
第一章绪论
1.1课题相关背景及现状
随着电子信息技术,多媒体技术及网络技术的快速发展,视频监控系统正在向集成化、数字化和网络化方向发展。
嵌入式视频监控系统充分利用大规模集成电路和先进高效编码标准,以其体积小、性能稳定、通讯便利等优点正逐渐变广泛应用。
1.1.1课题研究相关背景
随着全球跨入数字化、网络化、全球一体化的信息时代,人们之间的信息交流越来越频繁,方式越来越多样。
从原始的纸笔书信,到传统的语音通信,再到新兴的数字通信,无不体现着人们对通信方式多样化的追求。
而“百闻不如一见”,视觉是人类获取信息的最重要方式。
在现代信息社会中多媒体信息已成为人类获取信息的最主要载体,同时也成为电子信息领域技术开发和研究的热点。
通常多媒体系统传递的信息可以归结为数据、语音和图像三类。
其中图像信息具有直观性强、信息量大等特点,因而图像的传送具有特别重要的地位。
如今电子信息技术、计算机技术和通信技术正飞速发展,这为视频监控走入人们的日常生活提供了技术保证。
视频监控在工业、军事和民用领域正发挥着不可忽视的作用。
相对单一的图像来说,连续的图像序列——视频具有表达客观事物更加直观、生动、形象,信息内容更加丰富等优点。
1.1.2视频监控系统的现状和发展
随着计算机应用的普及,网络通信技术及图像压缩技术的快速发展,在视屏监控领域中,数字化和网络化成为一种趋势。
进入21实际,嵌入式技术、多媒体图像处理技术的进一步发展,为嵌入式网络视频监控系统的繁重提供了技术条件。
嵌入式系统是以应用为中心,软硬件可以裁减的,具有高可靠性,低成本、严要求、综合性强的专用计算机系统,它主要有嵌入式微处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,集软硬件于一体,能够独立工作。
嵌入式系统具有实时性好、稳定性高等特点,在网络视频监控中的刀快速发展。
因此加强对嵌入式网络视频监控系统的研究,对我国监控行业今后的发展有着重要的意义。
1.2嵌入式系统概述
嵌入式系统(Embeddedsystem),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电器工程师协会(U.K.InstitutionofElectricalEngineer)的定义,嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。
与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。
由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。
由于嵌入式系统通常进行大量生产。
所以单个的成本节约,能够随着产量进行成百上千的放大。
国内普遍认同的嵌入式系统定义为:
以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。
因此可以这样理解上述三个面向的含义,即嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。
一般而言,嵌入式系统的构架可以分成四个部分:
处理器、存储器、输入输出(I/O)和软件(由于多数嵌入式设备的应用软件和操作系统都是紧密结合的,在这里我们对其不加区分,这也是嵌入式系统和一般的PC操作系统的最大区别)
1.3系统的总体设计方案及安排
本设计要实现的是通过摄像头采集到视频数据通过网络传输将采集到的图像数据传到客户端显示,因此整个系统可分为硬件和软件两个部分,而硬件部分则由主控制板模块、摄像头采集模块,传输模块和视频监控PC等组成;软件模块则由linux2.6.32男未婚无、摄像头驱动、网卡驱动和视频图像的采集程序、图像的发送和接收程序。
针对监控系统中的关键技术进行分析,本文将重要研究一下内容
全文结构安排如下:
第1章:
综合论述了视频监控系统的现状和发展情况。
第2章:
介绍了视频监控系统整体结构和硬件结构S3C2410的体系结构。
第3章:
简单介绍了基于V4L的视频采集程序以及图像压缩理论。
第4章:
视频传输的实现介绍了视频监控的软件结构。
第5章:
介绍了视频监控的软件结构
第6章对本论文的够工作进行总结,提出展望。
致谢。
第二章系统整体结构设计
2.1视频监控系统的结构设计
嵌入式Linux视频网络监控系统是电工电子装置、计算机软硬件以及网络、通信等多方面的有机组合体,它以智能化、网络化、交互性为特征,结构比较复杂。
如果利用OSI七层模型的内容和形式,把相应的数据采集控制模块硬件和应用软件以及应用环境等有机组合,可以形成一个统一的系统总体框架。
软linux
无线局域网
2.2ARM处理器简介
ARM(AdvanceRISCMachines),既可以认为是一个公司的名字,也可以认为是对位处理器的统称,还可以认为是一种技术的名字。
ARM处理器是一个32位元精简指令集RISC(ReducedInstructionSetComputing)处理器架构,其广泛应用在许多嵌入式系统设计。
ARM处理器具有以下特点:
1、体积小、低功耗、低成本、高性能;
2、支持Thumb(16位)/ARM(32位)双指令集,兼容性好。
3、大量使用寄存器,指令执行速度更快;
4、大多数数据操作都在寄存器中完成;
5、寻址方式灵活简单,执行效率高;
6、指令长度固定
2.3S3C2440开发板简介
硬件设计方案如图示
系统硬件结构系统采用Samsung公司的ARM9内核芯片S3C2440作为硬件平台的中央处理器,该处理器主频可达400MHz,硬件接口和资源丰富,存储单元包括Flash和SDRAM,Flash具有掉电保持数据的特性,用于存储Bootloader启动程序、Linux内核映像、文件系统以及用户应用程序等。
SDRAM数据存取速度大大高于Flash存储器,用于为操作系统和应用程序提供运行空间。
平台利用RS232接口输出调试信息,通过以太网控制器芯片DM9000扩展了一个网口,用于与外部网络进行通信,通过USBHOST接口连接USB摄像头采集图像数据,经处理器压缩并打包成视频流后经以太网进行传输,终端用户接收到视频流,解码后即可把视频图像显示出来。
S3C24xx系列的应用处理器芯片是三星主推的,三星目前推出了S3C2410和S3C2440,都是基于ARM9架构的,而且硬件管脚兼容,应该说大致的功能基本相同。
2.3.1主要结构
S3C2440的频率是400MHZ,其中ARM920t核由ARM920TDMI、内存存储单元(MMU)(MemoryManagementUnit)和高速缓存三部分组成。
其中,MMU可以管理虚拟内存,高速缓存由独立的16KB地址和16KB的数据高速Cache组成,ARM920t有两个内部协处理器:
CP14和CP15。
CP14用于调试控制,CP15由于存储系统控制以及测试控制。
该芯片架构如图下:
2.3.2体系结构
S3c2440处理器为手持设备和通用嵌入式应用提供了丰富的片上集成系统解决方案,包括:
1、16/32位RISC体系结构和ARM920t内核强大的指令集
2、加强的ARM体系结构MMU,用于支持WINCE和Linux
3、采用ARM920TCPU内核支持ARM调试体系结构
4、内部高级微控制总线体系结构
5、支持高速总线模式和异步总线模式,支持外部等待信号延长总线周期
2.3.3S3C2440开发板模块介绍
处理器通用模块1:
(1)60个中断源:
有1个快速中断,24个外部中断,其余为普通中断;
(2)1个看门狗定时器;
(3)5个定时器;
(4)24个外部中断;
(5)2个SPI通道;
(6)2个USBHOST接口;
(7)1个LCD;
(8)1个NAND;
(9)1个AC97。
处理器通用模块2:
(1)3个通道的UART,带有16字节的TX/RXFIFO,支持IrDA1.0功能;
(2)8通道的10位A/D转换器,最高速率可达500kSPS、提供有触摸屏接口;
(3)具有130个通用I/O口;
(4)有4个具有PWM功能的16位定时器和1个16位内部定时器;
(5)看门狗定时器。
存储器接口:
(1)sram、sdram、norflash、NANDflash;
(2)外部存储器控制器,可扩展8组,每组128MB,总容量达1GB;
(3)支持NandFlash作为启动存储器及数据存储器;
(4)支持最高达256M的SDRAM存储器接口;
(5)支持NORFLASH、SRAM存储器接口;
(6)4通道的DMA,并且有外部请求引脚。
总线接口:
(1)27位地址总线,8/16/32位可编程数据总线,控制总线;
(2)具有2通道的SPI、1个通道的IIC串行总线接口和1个通道的IIS音频总线接口;
(3)有2个USB主机总线端口,1个USB设备总线端口;
(4)兼容MMC的SD卡接口。
人机接口:
(1)带有四线电阻式触摸屏接口;
(2)有LCD控制器,支持4K色的STN和256K色的TFT,配置有DMA通道;
(3)支持多种屏幕尺寸,典型的屏幕尺寸有640*480,320*320,160*160;
(4)集成Camer摄像头控制器;
(5)具有日历功能的RTC。
第三章基于V4L的视频采集程序以及图像压缩理论
3.1V4L2
VideoforLinuxtwo(Video4Linux2)简称V4L2,是V4L的改进版。
V4L2是linux操作系统下用于采集图片、视频和音频数据的API接口,配合适当的视频采集设备和相应的驱动程序,可以实现图片、视频、音频等的采集。
在远程会议、可视电话、视频监控系统和嵌入式多媒体终端中都有广泛的应用。
在Linux下,所有外设都被看成一种特殊的文件,成为“设备文件”,可以象访问普通文件一样对其进行读写。
一般来说,采用V4L2驱动的摄像头设备文件是/dev/v4l/video0。
为了通用,可以建立一个到/dev/video0的链接。
V4L2支持两种方式来采集图像:
内存映射方式(mmap)和直接读取方式(read)。
V4L2在include/linux/videodev.h文件中定义了一些重要的数据结构,在采集图像的过程中,就是通过对这些数据的操作来获得最终的图像数据。
Linux系统V4L2的能力可在Linux内核编译阶段配置,默认情况下都有此开发接口。
V4L2从Linux2.5.x版本的内核中开始出现[15].
V4L2规范中不仅定义了通用API元素(CommonAPIElements),图像的格式(ImageFormats),输入/输出方法(Input/Output),还定义了Linux内核驱动处理视频信息的一系列接口(Interfaces),这些接口主要有:
视频采集接口——VideoCaptureInterface;
视频输出接口——VideoOutputInterface;
视频覆盖/预览接口——VideoOverlayInterface;
视频输出覆盖接口——VideoOutputOverlayInterface;
编解码接口——CodecInterface。
3.2应用程序通过V4L2进行视频采集的原理
V4L2支持内存映射方式(mmap)和直接读取方式(read)来采集数据,前者一般用于连续视频数据的采集,后者常用于静态图片数据的采集,本文重点讨论内存映射方式的视频采集。
应用程序通过V4L2接口采集视频数据分为五个步骤:
首先,打开视频设备文件,进行视频采集的参数初始化,通过V4L2接口设置视频图像的采集窗口、采集的点阵大小和格式;
其次,申请若干视频采集的帧缓冲区,并将这些帧缓冲区从内核空间映射到用户空间,便于应用程序读取/处理视频数据;
第三,将申请到的帧缓冲区在视频采集输入队列排队,并启动视频采集;
第四,驱动开始视频数据的采集,应用程序从视频采集输出队列取出帧缓冲区,处理完后,将帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据;
第五,停止视频采集。
3.2.1视频采集的参数初始化
在Linux下,摄像头硬件已经被映射为设备文件“/dev/video0”,用open函数打开这个设备文件,获得其文件描述符fd_v4l2,然后对这个文件描述符进行参数初始化。
(1)设置视频的采集窗口参数
设置采集窗口就是在摄像头设备的取景范围之内设定一个视频采集区域。
主要是对结构体v4l2_crop赋值,v4l2_crop由一个v4l2_buffer_type枚举类型的type和v4l2_rect类型的结构体c构成,来描述视频采集窗口的类型和大小。
type设置为视频采集类型V4L2_BUF_TYPE_VIDEO_CAPTURE。
c是表示采集窗口的大小的结构体,它的成员Left和Top分别表示视频采集区域的起始横坐标和纵坐标,width和height分别表示采集图像的宽度和高度。
赋值后,用ioctl函数通过这个结构体对fd_v4l2进行设置。
structv4l2_crop{enumv4l2_buf_typetype;
structv4l2_rectc;
};
(2)设置视频点阵格式和点阵大小
主要是对结构体v4l2_format进行赋值,它由type和联合体fmt构成,来描述视频设备当前行为和数据的格式。
把type赋值为视频采集类型V4L2_BUF_TYPE_VIDEO_CAPTURE,表示定义了一个视频采集流类型的buffer。
fmt中,pix为表示图形格式的v4l2_pix_format型结构体。
需要设定pix里的几个变量,pixelformat表示采集格式,设置为V4L2_PIX_FMT_YUV420;width、height表示图像的宽度、高度,以字节为单位;sizeimage表示图像所占的存储空间大小,以字节为单位;bytesperline表示每一行的字节数。
赋值后,用ioctl函数通过这个结构体对fd_v4l2进行设置。
structv4l2_format
{enumv4l2_buf_typetype;
union
{structv4l2_pix_formatpix;//V4L2_BUF_TYPE_VIDEO_CAPTURE
structv4l2_windowwin;//V4L2