基于嵌入式Linux的视频采集编码发送模块的设计与实现_第1页
基于嵌入式Linux的视频采集编码发送模块的设计与实现_第2页
基于嵌入式Linux的视频采集编码发送模块的设计与实现_第3页
基于嵌入式Linux的视频采集编码发送模块的设计与实现_第4页
基于嵌入式Linux的视频采集编码发送模块的设计与实现_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

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

文档简介

分类号密级重庆邮电大学硕士学位论文论文题目基于嵌入式Linux的视频采集编码发送模块的设计与实现英文题目TheDesignandRealizationofVideoCapturingandEncodingandTransitingModuleBasedonEmbeddedLinux硕士研究生指导教师学科专业电子与通信工程论文提交日期年月日论文答辩日期年月日论文评阅人答辩委员会主席年月日

独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其别人已经发表或撰写过的研究成果,也不包含为获得重庆邮电大学或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何奉献均已在论文中作了明确的说明并表达谢意。学位论文作者署名:签字日期:年月日学位论文版权使用授权书本学位论文作者完全了解重庆邮电大学有关保存、使用学位论文的规定,有权保存并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权重庆邮电大学可以将学位论文的所有或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。(保密的学位论文在解密后合用本授权书)学位论文作者署名:导师署名:签字日期:年月日签字日期:年月日摘要随着人们对安全规定的不断提高、嵌入式微解决器和多媒体压缩技术以及无线传输技术的快速发展,无线实时视频监控系统得到了快熟的发展与应用。本文基于DM6467平台,使用TVP5158芯片实现多路视频复合采集,通过解复用后,远程调用DSP端H.264编码器完毕视频流的实时编码,最后运用RTP协议封装视频数据并通过MF210无线模块实现视频的无线传输。论文最终设计实现了一种应用在无线实时视频监控系统中的多路视频采集编码发送方案。论文一方面研究了应用在无线视频监控系统中的关键的技术,涉及DaVinci技术、V4L2视频采集驱动规范、H.264编码算法以及RTP流媒体实时传输协议和WCDMA技术等。随后分析了模块的功能需求,并根据需求分析设计了视频采集编码发送模块的总体架构。接下来论文研究了DaVinci开发平台的硬件和软件开发环境,并根据开发需求完毕嵌入式开发环境搭建,重要工作涉及嵌入式Linux服务器搭建、开发工作站配置、嵌入式Linux内核移植等。在以上基础上,完毕视频采集、视频编码、视频发送三个子模块具体的设计与实现。分别在视频采集子模块中,设计与实现基于V4L2采集驱动规范的多路视频的复合采集;在视频编码子模块中,设计与实现基于CodecEngine机制的H.264编码,重要工作涉及H.264编码器的构建和编码应用程序的实现。在构建H.264编码器过程中重要完毕X.264编码算法的xDM封装、CodecServer生成、CodecEngine引擎配置等,在编码应用程序中,通过调用H.264编码器的VISAAPI接口,实现采集的视频数据的实时编码;在视频发送子模块中,先构建WCDMA网络的传输链路,重要工作是完毕MF210驱动移植、PPP移植与PPP拨号实现,然后在应用层运用RTP(实时传输协议)封装编码后的NAUL数据,最后创建socket,将打包而成RTP数据包发送到wcdma网络中。在测试阶段,通过对系统的整体测试,验证了课题成功完毕了模块设计的预期目的。关键字:视频采集编码发送模块;Davinci,V4L2,H264,xDM,WCDMAAbstractWiththeconstantimprovementofthepeopletosafetyrequirements,theembeddedmicrocontrollerprocessorandmultimediacompressiontechnologyandtherapiddevelopmentofwirelesstransmissiontechnology,wirelessreal-timevideomonitoringsystemforthedevelopmentandapplicationofcook.DM6467basedplatform,thispaperuseTVP5158chiptorealizethecollectionofmulti-channelvideocomposite,aftersolutionreuse,remotecallDSPendofh.264encodercompletevideostreamingreal-timeencoding,finallyusingRTPprotocolencapsulationvideodataandrealizethewirelesstransmissionofvideobyMF210wirelessmodule.Finaldesignthesisimplementsaapplicationinwirelessreal-timevideomonitoringsystemofmulti-channelvideoacquisitioncodingsendpackage.Paperfirststudiedtheapplicationofkeytechnologyinwirelessvideomonitoringsystem,includingtheDaVincitechnology,V4L2videoacquisitiondrivestandard,h.264encodingalgorithmandRTPstreamingmediareal-timetransmissionprotocolandWCDMAtechnology,etc.Thenanalyzedthemodulefunctiondemand,andaccordingtothedemandanalysisanddesigntheoverallarchitectureoftheencodingvideocollectionissendingmodule.ThepaperstudiedtheDaVincidevelopmentplatformofhardwareandsoftwaredevelopmentenvironment,andaccordingtothedevelopmentneedstocompleteembeddeddevelopmentenvironmentsetup,themainworkincludesembeddedLinuxserversetup,developtheworkstationconfiguration,embeddedLinuxkerneltransplantation,etc.Onthebasisofabove,completethevideoacquisition,videocoding,videosentthreechildmoduledetaileddesignandimplementation.Invideoacquisitionmodule,thedesignandimplementationbasedonV4L2acquisitiondrivespecificationcompositeofmulti-channelvideoacquisition;Invideocodingmodule,thedesignandimplementationbasedontheCodecEnginemechanismofh.264coding,themainworkincludingh.264encodertheimplementationoftheconstructionandcodingapplications.Inconstructionofh.264encodermainlycompletedintheprocessofx.264encodingalgorithmofxDMencapsulation,CodecServergenerate,CodecEngineEngineconfiguration,etc.,incodingtheapplicationbycallingtheh.264encoderVISAAPIinterface,realizetheacquisitionofvideodatarealtimecoding;Invideosendsubmodule,transmissionlinkoftheconstructionofWCDMAnetworkfirst,mainjobistocompleteMF210drive,thePPPtotransplantwiththePPPdial-up,andthenintheapplicationlayerusingRTP(real-timetransportprotocol)encapsulationencodedNAULdata,finallycreateasocket,willbepackagedintoRTPpacketssenttotheWCDMAnetwork.Duringthetestingperiod,throughthewholesystemtesting,itverifythatthispapersuccessfullycompletedtheanticipatedtargetofthemoduledesign.Keywords:moduleofvideoCapturingandEncodingandTransmiting,Davinci,H264,xDM,V4L2,WCDMA目录摘要 IAbstract II目录 IV第一章绪论 11.1视频监控系统行业背景 11.2课题研究背景及意义 31.3论文组织架构 41.4本章小结 5第二章视频采集编码发送模块的总体设计 62.1模块相关的关键技术研究 62.1.1Davinci技术 62.1.2V4L2视频采集驱动接口 72.1.3H.264视频编码技术 72.4.4视频传输协议与技术 82.2模块架构设计 92.2.1视频监控系统构架 92.2.2模块的需求分析 102.2.3模块硬件平台的选择 112.2.4模块总体架构的设计 122.3本章小结 13第三章搭建嵌入式开发环境平台 143.1DaVinci硬件开发环境 143.1.1DM6467解决器特点 143.1.2采集译码器TVP5158功能概述 153.2DaVinci软件开发环境 163.2.1xDM算法标准介绍 173.2.2CodecEngine概述 183.3嵌入式开发环境搭建 213.3.1Linux服务器搭建 213.3.2工作站配置 233.3.3Davinci平台初始化 233.4本章小结 27第四章视频采集编码发送模块的设计与实现 284.1视频采集模块设计实现 284.1.1视频采集模块的设计 284.1.2V4L2编程接口 294.1.3视频采集模块的实现 304.2视频编码模块的设计与实现 344.2.1视频编码模块的设计 344.2.2H.264编码器的实现 344.2.3视频编码模块的实现 464.3视频传输模块的设计与实现 484.3.1视频传输模块设计 484.3.2视频传输链路实现 484.3.2视频传输模块实现 514.4本章小结 53第五章系统测试 555.1测试内容和预期目的 555.2测试过程 565.2.1测试网络环境搭建 565.2.2测试环节 575.3测试结果及分析 585.4本章小结 60第六章总结与展望 616.1工作总结 616.2局限性和展望 61致谢 63参考文献 64附录攻读硕士学位期间的科研工作 67第一章绪论1.1视频监控系统行业背景随着人们对安全规定的不断提高和嵌入式微解决器、多媒体压缩技术以及无线传输技术的迅猛发展,无线实时视频监控系统得到了快熟的发展与应用。从技术角度上研究视频监控系统,可以将视频监控系统划分为三个阶段,分别是:第一阶段的模拟视频监控系统(CCTV),第二阶段的数模结合的视频监控系统(DVR)。而随着多媒体传输技术的发展,重要是信息编解码技术的发展以及Internet网络和无线网络的发展,数字视频监控系统又可被划分为以数字录像设备为核心的数字化本地视频监控系统和以嵌入式视频服务器为核心的数字化远程视频监控系统,即第三代的网络视频监控系统。近年来个人化、智能化和网络化将是未来视频监控市场重要的发展趋势[1],视频监控应用的发展过程如图1.1所示。图1.1监控应用的变迁一.模拟视频监控系统模拟视频监控系统使用专用的同轴线缆传输模拟的视频信号,它的系统硬件组成重要部分是摄像机、线缆、录像机和监视器等设备。随着多媒体技术编解码技术发展,微解决器性能的提高以及网络带宽的提高,视频监控系统在硬件结构方式、功能实现、性能以及扩展性方面都有了重大的变化,视频在系统构成上更加灵活个性化,功能上更加丰富、全面,人机交互更加和谐易于操作,系统的外围接口更加丰富且统一,便于系统的功能拓展。但是,由于视频信息流的在系统中仍然是以模拟信号传输,视频监控系统的的系统构架难以发生巨大的变革,同时模拟视频监控系统的网络结构是一种单向、单功能形式的信息采集传输网络,因此虽然系统的整体技术已发展到很成熟的技术水平,但是由于以上系统结构和网络结构的局限,模拟监控系统的发展已经到达一个瓶颈阶段,难以满足日益提高的视频监控需求。模拟监控系统的重要缺陷是:(1)系统监控区域有限。由于模拟信号在同轴电缆传输的范围有限,导致系统通常只适合应用在范围较小的监控区域;(2)系统的扩展能力差。对于已建立好的监控系统,由于其组网架构以及系统功能架构的局限,若要去增添设备,则需要大范围的修改系统,甚至重建系统。(3)不能形成有效的报警联动。由于系统各部分独立运营,互相之间的协议不能发生通信,导致联动只能在很小的范围内进行,不便对系统进行有效的掌控。所以,要满足对视频监控更高的规定,监控数字化是必由之路。并且数字通信的快速发展,也保障了数字化的也许性。二.数字视频监控系统90年代初,微解决器技术和彩色视频技术的发展推动了数字视频监控系统的出现与发展。数字视频监控系统系统运用微解决器的对数据的高速解决能力进行视频的采集和编码等解决,运用彩色视频技术在高分辨率的显示器上实现多画面的清楚显示,大大提高了视频监控系统的质量。这种基于微解决器的多媒体主控平台系统被称为数字视频监控系统。数字视频监控系统的重要技术产品是DVR,采用windows平台,在个人计算机上安装不同型号的视频显卡和相应的DVR软件,用户可以得到相应的1、2、4路的采集视频,并可以得到实时的语音和视频传输服务。但是由于视频编解码技术发展和网络技术发展的滞后,有限的带宽不能支持传输数据量巨大的视频数据,监控信息大多只局限于本地系统,难以进行远程的视频监控。但是市场对视频监控的更高的需求不断的推动着视频编解码技术、流媒体技术以及网络技术的发展,从而也把网络视频监控推向了发展的必然。三.网络视频监控系统90年代末期,随着计算机解决能力提高、多媒体编解码技术发展、网络带宽和存储容量的迅速提高、以及各种视频解决技术的发展,以嵌入式技术为重要平台,以网络、通信技术为依托,以智能图像分析为特色的网络视频监控系统正快速的登上视频监控的舞台,引发了视频监控行业的技术革命,赢得了学术界、用户的高度重视。网络视频监控的出现使得视频监控开始向道路交通、家庭、教育、公司信息化、医疗等新的运用领域渗透[2]。网络视频监控即IP监控,网络视频监控就是依靠有线或者无线IP网络以数字化的形式实现视频信息的远程传输。只要是网络可达的地方,无论是以有线还是无线的方式,只要有需要就可以轻松地实现视频监控和视频数据的存储。同时,网络视频监控还可以完美的和其它类型的监控系统进行结合,便于系统的兼容与扩展。尽管当前网络视频由于其成本限制,使其应用重要局限于智能交通、平安城市等大型项目中,但随着社会发展、人民经济水平提高以及对安防监控规定的提高,智能家居、家庭安防等行业应用正在崛起[3]。同时,由于智能监控所具有的及时、精确、便捷和节约资源等优势,随着技术的发展市场的扩张,新一代网络化、智能化和个人化的视频监控有极大的研究价值,必将得到广泛的推广和应用[4]。1.2课题研究背景及意义随着近年来社会的不断的快速发展,各国各行业对安防越来越重视,视频监控行业取得了长足的发展。在中国,随着着技术日渐成熟和成本减少,以及在“平安城市”工程、世博会、奥运会等重大项目和事件的推动下,视频监控市场得以快熟的发展和结构调整,使得基于网络的数字监控逐步成为市场主导,而传统的模拟监控市场逐步萎缩。目前基于嵌入式无线流媒体技术是网络视频监控市场中应用最为广泛的视频监控技术。基于嵌入式无线流媒体技术是嵌入式技术、无线网络技术、视频编码技术和流媒体传输技术的结合[5]。在嵌入式方面,DaVinci技术融合了ARM与DSP技术,这样使得达芬奇解决器既具有ARM良好的控制功能,又有DSP强大的计算能力,可以满足更多应用场合的需求。在传输方面,无线视频监控具有高移动性、架设灵活、管理方便和综合成本低的优点。目前WCDMA是国内应用最为广泛的3G网络制式,假如支持HSPA网络的话,那么理论最高上行是5.76Mbps,理论最高下行是7.2Mbps,假如是支持HSPA+网络的上网卡设备,理论最高下行则是21Mbps。这样的理论带宽足以满足无线实时流媒体的传输,但在实际运用中由于无线信道的高信噪比、高衰落等复杂性和网络自身的缺陷导致无线信道容量有限,要实现清楚、实时的无线视频传输仍然存在困难。在编码方面,H.264编码技术因其低码率(高压缩比)、高质量画面、容错能力强、网络适应性强,逐渐得到学术界和工业界的广泛认可,成为当前无线视频编码领域最为热门技术之一。在流媒体传输方面,RTP协议是应用非常广泛的流媒体实时传输协议,针对流媒体传输的连续性、实时性和占用带宽较大的特性,RTP协议经常配合使用UDP不可靠传输协议来传输数据。虽然视频压缩技术和无线传输带宽有了长足进步,但考虑到无线视频传输中视频数据量庞大、传输实时性规定高而无线信道的带宽有限,完毕视频数据在无线信道中上的实时传输仍然是一个巨大挑战。本课题设计源于本人研究生期间参与的科技型中小公司技术创新基金项目《基于TD-SCDMA的远程无线视频监控系统》。课题方案中ARM微解决器通过V4L2编码驱动接口控制TVP5158芯片实现视频的多路复合采集,通过解复用之后,把采集的视频数据进行H.264实时压缩编码,在应用层运用RTP实时传输协议封装视频数据,最后通过MF210无线发射模块把视频数据发送到WCDMA网络中。论文最终完毕了无线实时视频监控系统中的视频采集、编码、发送模块的设计与实现。1.3论文组织架构本论文一共分为6章,其中,第一章是绪论部分,第二至第五章是论文的主体,第六章是论文的工作总结和展望。第一章是绪论部分。从视频监控从模拟到数字、网络的发展历史讲起,介绍了视频监控的发展,本课选题背景、意义及重要研究内容。第二章是模块的总体设计。一方面研究了与模块相关的关键技术,然后分析了模块的功能需求,并根据功能分析设计了视频采集、编码、发送模块的总体架构。第三章是搭建系统的开发平台。一方面分析了DaVinci硬件以及软件开发环境,并根据开发需完毕嵌入式开发环境搭建,重要工作涉及嵌入式Linux服务器搭建、开发工作站配置、嵌入式Linux内核移植等。第四章是系统软件设计与实现部分。分别设计实现了视频图像采集、视频图像编码和视频图像发送三个子模块。(1).视频采集子模块:设计实现基于V4L2采集驱动规范的视频采集。(2).视频编码子模块:设计实现视频数据的H.264压缩编码。具体实现过程是:构建H264编码器,重要工作涉及完毕X.264编码算法的xDM封装,CodecServer生成、CodecEngine引擎配置等;最后在应用层远程调用编码器的VISAAPI接口实现视频编码;(3)视频发送子模块:实现视频数据的无线发送。先构建WCDMA网络的传输链路,重要工作是完毕MF210驱动与PPP移植,以及ppp拨号实现,然后采用基于UDP协议的RTP流媒体实时传输协议打包视频数据,最后创建socket发送数据到wcdma网络中。第五章是对模块软件的性能的测试与验证。结合整个视频监控系统进行测试,通过实测图像来评估系统设计实现的完毕情况。第六章对论文进行总结及下一步研究方向。1.4本章小结本章重要介绍了该课题的研究背景;分析了当前视频监控技术的研究现状;分析了系统背景以及应用价值;最后指明了该课题的研究内容以及编排了本论文的组织结构。第二章视频采集编码发送模块的总体设计本章一方面从硬件平台、视频采集子模块、视频编码子模块、视频发送子模块方面研究了合用于本课题的DaVinci技术、V4L2视频采集驱动规范、H264编码算法以及WCDMA技术和RTP流媒体实时传输协议等。然后分析了视频监控系统的总体架构,在此基础上分析了模块的功能需求,根据需求分析设计了模块的整体架构。2.1模块相关的关键技术研究2.1.1达芬奇技术由达芬奇解决器、达芬奇软件、达芬奇开发工具和达芬奇技术支持组件等优化构成,其结构如图2.1所示[6][7]。图2.1达芬奇技术结构图DaVinciTM解决器是TI公司为面向视频编解码应用而专门设计的一款数字流媒体解决器。在硬件方面,DaVinci技术集成了ARM与DSP双核解决器,它在DSP解决器运营DSP/BOIS操作系统,运用其强大的数据解决能力和高速的运转速度实现对音视频的编解码以及实现图像的相关解决;在ARM解决器运营MontaVistaLinux操作系统,运用其良好的控制功能,实现对外围设备的控制,如设备的初始化、远程调用DSP算法库等;在软件方面,TI为视频软件开发商提供了标准化编码器接口,增强了编码器的移植性,简化了二次开发的难度,同时TI还提供了集成解决器、软件、工具等支持,简化了设计与开发进程,加速了产品开发与创新速度。2.1.2V4L2视频采集V4L2是Linux平台下视频采集设备驱动程序开发的一套规范。它为Linux中视频设备访问提供了通用接口,在Linux系统中,V4L2驱动的Video设备节点途径通常/dev/video/中的videoX。V4L2是一个两层驱动结构:上层是videodev模块,当videodev初始化后,它把自己注册为一个主设备号为81的字符设备,同时注册自己的字符驱动成员函数;下层是V4L2驱动程序,它事实上是videodev的客户端,videodev通过V4L2驱动程序的成员函数来调用V4L2驱动程序[8]。它使用分层的方法给驱动程序的开发提供了清楚的模型和一致的接口,方便驱动程序的开发。在应用程序实现视频采集的过程中,通常用到的两个V4L2系统调用是ioctl()和mmap(),其中ioctl()系统调用负责控制设备的I/O通道,mmap()系统调用使得进程之间通过映射同一个普通文献实现共享内存。2.1.3H.264随着近年来嵌入式流媒体技术快速发展,这使得视频会议,视频监控,可视电话,以及视频直播等得到了长足的发展。但是网络带宽毕竟是有限的,特别是带宽较窄的无线传输环境中,在因而我们需要在尽也许保证图像质量的前提下,减少视频信息中的冗余量,从而缓解无线网络带宽,这也是视频压缩的目的。因此,视频编码技术也得到了更广泛的应用与发展。H.264标准[9]正是在这种大的背景下诞生。H.264标准是由ITU-T和ISO/IEC联合开发的,它定位于覆盖整个视频应用领域,涉及:传输DVD和数码相机的高清楚度的视频应用、传输电视广播标的准清楚度和高清楚度视频的应用、传输Internet上的视频流的应用以及传输低码率的无线视频应用等。H.264从功能上可以分为两层:VCL层(视频编码层)和NAL层(网络提取层)。VCL层重要目的是尽量的独立于各种网络的情况下进行数据高效的编解码。VCL重要完毕对块、宏块、片等语法级别的定义和核心压缩引擎,压缩单元重要完毕运动补偿、变换编码、熵编码等。NAL层重要目的是根据不同的网络情况,对VCL层的数据进行打包与发送。H.264作为一种新型的高质量低码率视频编码标准,具有合用性强、压缩率高、图像质量好等特点。在相同的重构图像质量下,H.264与H.263和MPEG4标准相比,能节约50%的码率。H.264标准还引进了面向IP包的编码机制,有助于网络中的分组传输,支持网络中视频的流媒体传输。具有很强的抗误码特性,可适应丢包率高、干扰严重的无线信道中的视频传输[10][11]。2.4.4视频传输协议与技术1.RTP协议RTP(RealtimeTransportProtocol)实时传输协议是针对Internet上多媒体数据流的传输的一个协议,它描述了程序管理多媒体数据实时传输的方式,作为RFC1889被IETF发布。RTP数据包由RTP首部(RTPHeader)和RTP负载(RTPPayload)两部分组成。RTP协议是用来传输具有实时特性的数据,它提供端到端的实时数据传输服务。RTP数据通常配合UDP协议使用,运用UDP的多路复用及校验和服务共同完毕实时数据传输功能,UDP建立在IP协议基础上,为用户提供了一种而向不可靠的、无连接的数据传输服务,适合传输对实时性规定较高的数据业务。2.PPP协议PPP(Point-to-PointProtocol点到点协议)是在同等单元之间传输数据包的链路层封装协议。这种链路提供全双工操作,并按照顺序传递数据包。协议的设计目的重要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简朴连接的一种共通的解决方案。在20世纪80年代末,串行线互联网协议(SerialLineInternetProtocol,SLIP)因传输性能问题阻碍了互联网的发展,于是人们开发了PPP协议来解决远程互联网连接的问题[12]。PPP不仅支持异步链路,也支持面向比特的同步链路,同时克服了SLIP只能静态分派IP的缺陷,PPP协议满足了动态分派IP地址的需要,并且PPP协议通过NCPs对多种网络层协议提供支持。因此,PPP协议在接入网中取得了广泛的应用。PPP协议重要由下面四个部分组成:•封装:一种封装多协议数据报(IP数据报)的方法,实现了在同一链路上传输不同网络协议的复用技术。数据包的最大长度由具体网络的MTU决定。•链路控制协议(LinkControlProtocol,LCP):用于建立、配置、测试和管理数据链路连接。•网络控制协议(NetworkControlProtocol,NCP):协商该链路上所传输的数据包格式与类型,建立、配置不同的网络层协议。•口令认证协议(PasswordAuthenticationProtocol,PAP)和质询握手认证协议(Challenge-HandshakeAuthenticationProtocol,CHAP):为PPP连接提供用户认证功能,可以保证PPP连接的安全性。PPP连接的建立重要通过三个阶段,第一阶段:LCP连接协商阶段,重要完毕对基本的通讯方式进行选择,第二阶段:CHAP密码认证阶段,重要完毕客户端的权限认证,第三阶段:NCP网络协商阶段,重要完毕对上层网络层协议的配置。通过以上三个阶段,一条PPP通信链路便建立起来了。3.WCDMA技术WCDMA是一种由3GPP具体制定的,基于GSM核心网,是第三代移动通信系统。WCDMA是一个ITU(国际电信联盟)标准,它是从CDMA(码分多址)演变来的,在官方上被认为是IMT-2023的直接扩展。目前WCDMA有Release99、Release4、Release5、Release6Release7等版本。其中R99/R4可以提供384kbps上行最高传输速度和下行2Mbps最高速度,在随后的R5(HSDPA)和R6(HSUPA)分别强化了R99/R4版本的下行与上行最大速度,分别达成5.76kbps和7.2bps,R5与R6合称为WCDMA的HSPA版本。在R7版本中下行最大速度又被提高到21Mbps/28Mbps/42Mbps,甚至56Mbps/84Mbps。后续尚有R8的HSOPA和FDD-LTE等后续演进技术,可以看出WCDMA在不断地快速发展。目前,国内运营重要有三种制式的3G标准,重要有联通的WCDMA、移动的TD-SCDMA以及电信的CDMA2023。与此外两种3G标准相比,WCDMA具有网络建设最为广泛、技术成熟度高、漫游地区最广、终端设备支持最多和拥有用户最多的优势,所以本文选择WCDMA制式作为视频监控系统中无线传输所用的制式标准。2.2模块架构设计2.2.1视频监控系统构架本课题—基于嵌入式Linux视频采集编码发送模块的设计与实现,根源于科技型中小型公司技术创新项目《基于TD-SCDMA的远程无线视频监控系统》。在项目中,为了方便系统设计、分工和开发实现,系统中采用模块化的思想指导设计无线实时视频监控系统。系统从功能角度上可划分为三个模块:监控前端(PU)、中心服务平台、监控客户端(CU)。PU端可划分为三个部分:视频服务器外设设备(摄像头、云台、各类传感器等)、DVS(数字视频服务器)和无线接入设备。PU端是系统的信息采集和解决端,实现告警信息、内容分析数据采集解决,以及音视信息的采集、编码、发送以及本地存储,具有视频数据和控制信令的双向传送功能。中心服务平台从功能上分为流媒体服务器和信令管理服务器,它是系统中心管理服务器。其中媒体服务器重要功能是采用流式协议将DVS发过来的视频信息转发给监控客户端,信令服务器实现信令流的控制,重要负责客户端控制信令的收发和解析;CU端是系统的客户应用端,重要完毕音视频信息以及警告信息对监控用户的呈现,根据用户权限的不同,高权限用户还可以通过CU实现对系统的设备管理、用户管理等。监控系统功能框架图如2.2所示:图2.2视频监控系统功能框图本课题完毕的功能是无线视频监控系统中PU端的DVS(数字视频服务器)功能实现的重要部分,重要实现多路实时视频采集、视频编码、视频发送。2.2.2模块的需求分析1、功能需求本模块基于无线实时视频监控系统,该模块完毕的内容是视频监控系统中DVS(数字视频服务器)功能重要的一部分。在本模块中,视频传输信道为联通经营的WCDMA的3G制式,信道实际带宽窄、误码率高。本课题的重要内容就是,针对无线实时视频监控系统中实时视频庞大的数据量大、对实时性的高规定和目前的无线网络传输负载能力之间的矛盾,设计实现了一种应用在无线传输环境下、基于DaVinci技术的远程视频监控系统的多路实时视频采集、编码、发送方案。需要实现的功能涉及:(1)在视频采集方面:实现视频的采集,且可以支持对视频多种属性的控制,如视频分辨率、制式、亮度色度等。(2)在视频编码方面:实现高速编码、高压缩比的编码算法,使得系统可以应用于带宽较小的无线网络。(3)在视频发送方面:实现视频的无线实时传输。2、性能指标各种功能的具体性能指标如下:(1)视频采集模块:基于TVP5158芯片,采用V4L2采集驱动接口完毕视频采集。(2)视频编码模块:DSP上实现X.264算法编码,通过CodecEngine机制远程调用编码器,实现视频数据实时编码;(3)视频发送模块:采用基于UDP协议的RTP实时传输协议封装视频数据,并运用MF210无线模块实现视频的WCDMA无线传输。2.2.3模块硬件平台的选择在项目开发过程中,硬件开发平台的选择很大限度上决定了项目开发难度的难易以及开发周期的长短。基于2.1.1节叙述DaVinci技术的优点,本模块中应用的DVS(数字视频服务器)采用合众达公司专为数字视频解决推出的基于DaVinci技术的SEED-DVS6467嵌入式开发平台,它是以TI公司的TMS320DM6467(简称DM6467)作为核心解决器,在其外围集成了2片译码器TVP5158。其硬件框图如图2.3所示。图2.3SEED-DVS6467系统硬件功能框图本课题中ARM端控制采集译码器TVP5158完毕视频采集,远程调用DSP端H.264编码器完毕实时视频编码,最后运用RTP协议封装视频数据,并通过MF210无线模块实现视频数据的WCDMA传输。在编码过程中,ARM和DSP之间的交互是通过CodecEngine机制完毕,这样DSP解决器端程序员只需关注如何开发DSP算法,ARM解决器端程序员只需负责编写控制程序,双方不需要关心算法和控制程序间如何实现通信的。这样算法程序员和控制程序员可以独立的完毕各自的分工工作,很大限度上减少用户的开发难度和开发周期。2.2.4模块总体架构的设计为了提高系统的实时性,整个系统软件重要设计为四个POSIX线程,分别是主线程(Main.c),采集线程(CaputreThrd.c),视频线程(VideoThrd.c),和发送线程(SendThrd.c)[13]。多线程可以提高程序运营效率和系统的相应速度,但同时也引起了多个线程对共享数据的并发访问问题,假如不解决好线程间的同步,则也许导致共享数据的不一致性。在本设计中,采用条件变量与共享全局变量的方式作为线程间的同步与资源共享机制。系统各线程间的交互示意图如图2.4所示。具体交互过程为:系统启动后,主线程一方面创建并初始化采集线程、视频线程和发送线程,然后将控制权交给SIP信令控制线程(MediaSipThrd.c),SIP信令控制线程负责循环监听客户端的指令。采集线程从采集设备中获取原始数据,并将数据写入线程共享的buffer中,然后触发视频线程,视频线程收到原始数据buffer后,先将多路行交叉模式输出的复合视频数据解复用,并对解复用后的单路视频标记通道ID,然后把空buffer返回给采集线程,再按照通道ID分别进行编码解决,将编码后的数据buffer送给发送线程,发送线程受SIP信令控制线程条件阻塞,当客户端有请求时,就触发发送线程进行数据流的发送。图2.4系统线程交互示意图2.3本章小结本章研究了与课题相关的关键技术与协议,分析了视频监控的系统的总体架构以及课题模块在系统中实现的功能,最后根据功能分析设计模块的总体架构,为课题研究拟定了方向。第三章搭建嵌入式开发环境平台嵌入式环境平台搭建是嵌入式软件开发过程中最基础、但也是非常重要的工作,嵌入式开发环境平台环境质量决定了项目的开发的时间以及项目开发质量。本章重要介绍了DaVinci硬件开发平台(DM6467)的软硬件开发环境,并完毕了嵌入式开发环境的搭建,重要是Linux服务器搭建、工作站配置、嵌入式Linux平台的初始化。3.1DaVinci硬件开发环境在嵌入式软件开发中,软件开发和嵌入式硬件结构有着紧密的联系,可以说硬件结构在一定限度上决定了软件构架。本课题中使用的嵌入式开发平台是合众达公司针对数字视频解决专门推出的SEED-DVS6467,他在以TI公司的DM6467为核心解决器的基础上集成了两片采集译码器TVP5158。这一节中将会具体介绍DM6467解决器和TVP5158采集译码器。3.1.1DM6467解决器DM6467解决器是一种基于DSP的片上系统(SoC),充足运用了德州仪器(TI)的DaVinciTM(达芬奇)技术,集成了两个高性能的ARM926EJ-STM内核与TMS320C64x+TMDSP内核,兼有DSP和RISC的技术优势,可同时完毕8路实时H.264编解码,以满足下一代嵌入式设备的网络媒体编解码数字媒体解决需求。其结构框图如图3.1所示。DM6467集成了ARM和DSP双核与一身,兼有高速解决数据能力和强大的控制管理能力。DM6467芯片重要组成部分是一个DSP子系统、一个ARM子系统、两个可编程的高清视频协解决器VICP0和VICP1、视频预解决模块:涉及一个视频转换引擎和两个视频输入/输出端口VPIF接口,以及其它外设接口。图3.1DM6467结构图ARM子系统:采用基于RISK技术、主频为500MHz的ARM926EJ-S™做为内核。它采用的32位ARM指令集实现解决器最高的性能和灵活性,为了提高代码密度,解决器也支持16位的Thumb指令集。该内核采用流水线运营,使得解决器和内存系统可以连续的运营。ARM解决器上运营Linux系统,实现DM6467的控制功能,重要负责控制以及初始化DSP子系统、视频端口VPIF0/VPIF1、高清视频协解决器VICP、内部存储器以及外设TVP5158等。DSP子系:采用TI公司MS320C6000系列中具有最高的数据解决速度的TMS320C64x+DSP,主频为1GHz。解决器基于VLIW超长指令架构,集成了64个32字长的通用寄存器和8个独立的功能单元(6个ALU算术逻辑单元,两个32位的乘法器),解决器上运营DSP/BOIS操作系统,重要完毕多媒体数据(音频、视频)的编解码以及图像分析等。同时DM7467集成的视频数据转换引擎(VDCE)和两个高清视频协解决器(HDVICP)减轻了DSP核心的数据解决的任务,使得DSP在解决高清视频的同时也可以解决普通视频编码以及图像分析算法等。同时丰富的外围接口可以实现视频的采集、发送等功能。3.1.为了与DM6467的高性能数字信号解决能力相配合,本设计采用TI公司的TVP5158芯片作为模数转换器(ADC)。TVP5158是4路高清NTSC/PAL视频译码器,它可将所有通用基带模拟视频解码成数字视频输出,其视频输出端口支持2种数字视频格式:8位的ITU-RBT.6564:2:2格式和16位的YCrCb4:2:2格式,可满足标清或高清视频输出。TVP5158的功能框图如图3.2所示。图3.2TVP5158功能框图每个译码通道包含1个10-bit27-MSPS的模数转换器,复合输入信号按照2×ITU-RBT.601的时钟频率进行抽样。为了减少亮度和色度信号(Y/C)之间交叉干扰,采用5线自适应梳状滤波器进行Y/C分离,这种分离方式使得Y/C完全互补,因此没有信号丢失。4个译码通道可独立运营,用户可以通过I2C主机接口来控制各通道的对比度、亮度、饱和度和色度视频特性,以得到最佳的图像质量。此外,TVP5158可级联,在级联模式下,能同时支持8通道视频或16通道音频的解决,并可以与TI的DAVINCI解决器形成无缝接口,减少了设备的成本。3.2DaVinci软件开发环境DaVinci平台在设计上具有两大技术优势:一是硬件上的优势,该平台基于ARM+DSP的双核解决器架构,它使得DaVinci平台既具有ARM的强大管理控制功能,又有DSP所具有的算法解决能力;此外一个优势就软件方面,DaVinci软件框架由应用层、信号解决层和I/O层三部分组成。在本文所采用的DM6467平台下,应用层位于ARM端的Linux系统上,应用层的开发者可以充足根据开发需要,通过编写相关的应用程序实现对远程算法的控制调用;信号解决层位于DSP端,重要负责各种音视频编解码算法的解决及DSP实时操作系统DSP/BIOS的运营等;I/O层是DaVinci各种输入输出外设的驱动程序。下面分别对DaVinci软件框架中的xDM算法标准及CodecEngine进行介绍。3.2.1xDM算法标准介绍xDM标准(eXpressDSPDigitalMediaStandard)是TI公司针对DaVinci技术而制定的一套DSP算法封装标准。xDM标准基于TI公司的算法协同标准xDAIS(eXpressDSPAlgorithmInteroperabilityStandard)[14],并在xDAIS标准之上扩展了视频、图像、语音以及音频四类编解码接口,同时为了实现ARM与DSP双核间的通信,也添加了一些通信协议。要在不修改TI公司为DaVinci平台提供的双核通信机制下实现自己的音视频算法,就需要使算法遵循xDM标准。采用xDM标准封装算法库有很多优越性[15]:(1)可移植性强由于各个算法的封装都采用统一的编程接口,如图像算法接口、音频算法接口以及语音算法接口和视频算法接口,所以开发人员只需通过简朴修改配置文献,就可以移植遵循xDM标准的第三方算法到自己的DaVinci平台使用,同时无需修改应用程序框架,避免了反复开发工作,加快了OEM的产品开发速度。(2)算法互操作性强由于不同商家开发的算法通过xDM封装后可以同时被上层应用软件使用,使得产品可以在不同的算法之间切换使用,增强了算法的互操作性。(3)算法开发周期短由于TI公司提供了统一的API和双核之间通信机制,在嵌入式编程中,开发人员避免了运用C或汇编语言和底层硬件打交道,减少了开发难度,缩短了算法开发周期。xDM标准扩展了8中接口类型,以面对不同应用场景(例如音视频编解码、图像解决等)。这些接口如图3.3所示,其中x为接口版本。图3.3xDM接口类型3.2.2CodecEngine概述传统的多媒体系统开发方式是应用层直接调用底层编解码算法接口,从而完毕数据的相关解决,如图3.4所示:图3.4两层拓扑结构图两层拓扑结构中由于开发人员直接调用下层算法库接口,所以开发过程中需要了解算法内存管理等细节,开发难度较大,对开发者规定较高,开发周期较长。与此同时,由于不同的算法之间内存管理细节等存在的差异较大,应用程序是都是根据特定的算法而设计实现,所以应用程序的通用性差。例如,在实现音频算法时,若需要将WMA算法替换为MP3算法,应用程序也需要做较大的改变[16]。而在基于Davinci技术嵌入式平台的应用程序开发中,TI提供的CodecEngine机制将多媒体系统开发架构由以前的两层拓扑结构变为三层,如图3.4所示:图3.4三层拓扑结构图DaVinci构架中在应用层和算法库之间添加了一个编解码器引擎层(CodecEngine),它使得开发人员不再与算法库发生直接联系,而是通过CodecEngine的API远程调用符合xDM封装的算法。应用程序开发人员无需再关心算法库的内存管理如何运作,只需简朴地调用CodecEngine提供的标准API(VISA接口)便可实现数据解决,极大地简化了应用程序开发人员的工作量,加快了开发进程。应用程序接口与CodecEngine及xDM算法的结构如图3.5所示:图3.5应用层与CodecEngine及xDM算法层次结构DM6467解决器采用异构架构GPP+DSP,GPP端运营ARMLinux程序,重要完毕DSP算法的远程调用和控制,DSP端运营具体的算法实例。ARM与DSP解决器间采用DSPLink协议完毕远程调用(RPC),实现解决器间的通信。解决器之间具体的通信实现过程是:GPP端的应用程序向运营在ARM端的CodecEngine发送命令,CodecEngine接受命令后将命令传送给运营在远端的DSP上的CodecServer,CodecServer接受命令,DSP做出相应的算法响应。基于以上分析,在Davinci嵌入式平台的软件开发可以分为四个层次:如图3.6所示:(1)DSP算法开发:基于DSP在CCS上开发系统需求的算法,或者通过移植优化开源算法实现自己需要的算法功能,最后将算法依照xDM标准进行封装。(2)CodecServer集成:运用DaVinci软件套件提供的xdc编译工具,创建DSP侧运营且可以被ARM远端调用的可执行程序,即CodecServer。(3)CodecEngine集成:引擎配置的工作,涉及引擎的名字、每个引擎中包含什么编解码器、编解码器是本地执行还是远程执行等,假如这些编解码器在远程执行的,则还需配置相应的CodecServer。(4)Davinci应用层开发:根据需求分析开发应用程序,应用程序通过CodecEngine提供的VISAAPI调用远程算法库,实现数据解决。为了完毕远程调用(RPC)一方面要加载DSPLINK和CMEM两个驱动程序模块,其中DSPLINK重要实现了ARM和DSP的底层通信,而CMEM则重要是完毕在物理段上分派连续内存的功能。图3.6DaVinci软件开发过程项目开发中其他工作人员已完毕X.264开源代码的DSP移植、优化工作,在本文的研究中,重要实现算法的xDM标准封装、CodecServer生成、CodecEngine配置和编码应用程序的开发。3.3嵌入式开发环境搭建本课题采用SEED-DVS作为模块的硬件开发平台。基于嵌入式目的系统SEED-DVS的嵌入式Linux开发环境一般由服务器(Linux平台),开发工作站(windows平台)、嵌入式开发平台(SEED-DVS)等组成,其具体结构如下图3.7所示。开发人员在工作站进行程序开发或者通过工作站远程连接Linux服务器进行程序开发,程序开发完毕后通过网络文献系统把程序上传到Linux服务器进行交叉编译,最后下载到嵌入式平台运营、测试。图3.7Linux开发环境架构3.3.1如上图3.7可知Linux服务器是嵌入式软件开发重要的组成部分,是编译嵌入式Linux内核、开发应用程序以及交叉编译环境的公共平台[17]。为了保证开发工作的开发速度、以及开发环境的稳定,Linux服务器必须运营快速、且稳定,本课题中采用IBM多核服务器,并安装了性能稳定的ubuntuLinux操作系统。合众达公司为了方便客户开发工作提供了SEED-DVS667平台的开发软件套件:SEED-DVS6467_SDK.tar.gz。它重要涉及ARM端的armv5t交叉编译器、linux内核以及目的文献系统开发包,相关软件开发包,Linux环境的NFS文献系统包等。Linux服务器搭建过程也就是SEED-DVS667开发套件的安装过程。1.在IBM服务器上安装ubuntu10.04Linux;2.DaVinciLinuxDevelopSoftware目录执行Host#cpSEED-DVS6467_SDK.tar.gz/opt(将开发套件SEED-DVS6467_SDK.tar.gz拷贝到Linux服务器的/opt目录下);Host#tar-zxvfSEED-DVS6467_SDK.tar.gz(在当前文献夹下解压SEED-_DVS6467_SDK.tar.gz);由于安装套件比较大,解压需要十几分钟。在SEED-SDK解压完毕后,在/opt使用命令Host#ls可以看到一下文献夹:该目录下为DVEVM与DVSDK套件,涉及各种cmen、dsplink、frameworkcomponents、codecengine、demo源码等该目录下为ARM端的armv5t交叉编译,linux内核以及目的文献系统;该目录为配置完毕的NFS文献系统;3.配置交叉编译器由于嵌入式开发板的资源有限,若直接在开发板上进行编译工作,花费时间周期长,且浪费嵌入式有限的资源。所以一般在嵌入式开发中,编译工作重要在资源丰富的服务器进行交加编译。重要通过修改该环境变量来配置ARMv5t交叉编译器的途径;具体环节是:修改root目录下环境变量配置文献.bash_profile,执行Host#cd/root(进入配置文献途径)Host#vi.bash_profile(打开配置文献)在PATH=$PATH:$HOME/bin紧接的一行,添加以下内容:PATH="/opt/mv_pro_4.0.1/montavista/pro/devkit/arm/v5t_le/bin:/opt/mv_pro_4.0.1/montavista/pro/bin:/opt/mv_pro_4.0.1/montavista/common/bin:$PATH"保存退出即可(需要重启生效)。4.配置NFS(网络文献系统)为了方便开发人员和服务器互换数据,需要配置服务器的NFS(网络文献系统),设立访问者的权限、方式、以及访问途径等。重要通过配置/etc/exports脚本文献配置NFS文献系统服务,具体过程如下:Host#vi/etc/exports(打开配置文献并添加以下内容)opt/nfs*(rw,sync,no_root_sqush,no_all_squash)保存退出即可。无需重启服务器,可以通过以下命令重启nfs服务:Host#/usr/sbin/exportfs-a(重新mount文献/etc/exports中的内容)Host#/sbin/servicenfsrestart(重启NFS服务)至此,SEED-SDK开发工具安装完毕。3.3.工作站一般是该局域网中windows操作系统的计算机,是开发人员的操作终端。开发人员可以通过以下方式来开发程序:为了方便程序员开发软件,程序员通常在window平台的工作站进行软件开发。通常可以通过两种方式完毕程序开发:a)通过虚拟机开发在工作站中安装VMware虚拟机,并在VMware上安装Linux操作系统,然后通过虚拟机来进行程序的开发。b)通过远程连接Linux服务器,在服务器上直接开发。为了可以更好地使用服务器的优良硬件开发环境,开发人员可以通过putty远程登录到Linux服务器,直接在Linux服务器上开发程序。当程序开发完毕后,开发人员需要把程序上传到服务器上,使用ARMv5t交叉编译器进行交叉编译,最后通过网络文献系统把编译好的可执行文献拷贝到目的开发板中进行功能测试。3.3.3嵌入式Linux操作系统从系统上电到运营用户应用程序,需要通过三个重要的过程:加载Bootloader、启动Linux系统、挂载根文献系统[18][19]。嵌入式系统启动流程如下图3.8所示。为了顺利启动嵌入式Linux操作系统,本节将完毕以下三个方面的工作:1.U-Boot编译烧写;2.Linux内核定制烧写;3.根文献系统烧写;图3.8嵌入式Linux的初始化过程一.U-Boot烧写Bootloader嵌入式系统上电后最先执行的一段代码,它是一段引导程序,可以完毕硬件设备的初始化、建立内存空间映射图,然后把Linux内核镜像文献加载到RAM中去,并跳转到它的入口处去执行。在所有的嵌入式系统中,构建或者移植Bootloader都是一项最基本的任务。常见的Bootloader有Redboot、ARMboot、U-Boot、Bios-lt等。本课题中采用U-boot。它具有以下优点:1.开源代码。2.较高的可靠性和稳定性。3.具有高度灵活的设立功能。本系统中使用的U-boot是在开发套件提供的。编译过程如下:将u-boot-1.2.0_dvs6467.tar.gz拷贝到Linux服务器的/opt,然后执行如下命令:Host#cd/optHost#tar–zxvfu-boot-1.2.0_dvs6467.tar.gzHost#cd/opt/u-boot-1.2.0_dvs6467Host#makediscleanHost#makeARCH=armCROSS_COMPILE=arm_v5t_le-davinci_dm646x_configHost#makeARCH=armCROSS_COMPILE=arm_v5t_le-编译生成的u-boot.bin文献在/opt/u-boot-1.2.0_dvs6467文献夹下面。然后进行u-boot烧写。一方面进行环境的软硬件的配置,硬件上重要将仿真器的JTAG连接到DM6467上,软件上重要配置CCStudiov3.3IDE环境。在完毕配置工作后,启动CCStudiov3.3后,选择ARM端打开,加载GEL(GeneralExtensionLanguage),连接ARM发端;将已经准备好的两个文献u-boot.bin与NORWriter.out拷贝到某一分区的根目录下,例如D:\;在CCS中点击命令File-LoadProgram,用来加载文献NORWriter.out;然后点击运营,程序会弹出如图3.9所示对话框,在对话框中输入u-boot所在途径,点击确认OK,变完毕了u-boot的烧写。图3.9u-boot烧写示意图二.内核配置与编译由于在X86平台编译的嵌入式内核需要烧写在ARM架构解决器的目的系统上,因此涉及到交叉编译。交叉编译需要在编译时指明嵌入式目的系统的CPU架构(ARM)以及交叉编译工具(arm_v5t_le-gcc)。进入内核源码目录后执行如下命令进行内核配置:makeARCH=armCROSS_COMPILE=arm_v5t_le-menuconfig得到配置界面如图3.10所示:图3.10内核配置界面然后可以根据本系统的外围电路和实际需求,对Linux的内核功能进行裁剪,裁剪的重要部分是设备驱动。例如,ATA、PPP、TVP5158等。例如为支持视频采集,将采集驱动程序davincihd_capture.c和tvp5158.c拷贝到内核的/drivers/media/video/davinci目录进入配置页面后光标进入DeviceDrivers———>VideoForLinux———><*>TVP5158videodecoder<*>DM646xVideoCapture最终配置好后,保存配置并退出界面即可。执行如下命令编译内核:makeARCH=armCROSS_COMPILE=arm_v5t_le-uImage编译完毕后,在嵌入式的内核源码的arch/arm/boot途径下会生成Image,zImage以及uImage三个文献。其中Image一般局限性4M,本系统中为2.7M,它是内核镜像文献,zImage一般局限性2M,本系统中为1.3M,是压缩的内核镜像文献,uImage是U-boot专用的映像文献,它是在zImage之前加上一个长度为0x40的“头”,这个头部信息重要包含内核的版本、加载位置、生成时间、大小等信息,uImage头部之后的内容与zImage的内容完全一致[20]。其实zImage和uImage的区别就是一个自动跟手动的区别,有了uImage头部的描述,U-boot就知道相应Image的信息,zImage没有头部信息,则用户需要自己手动添加这些信息。最后通过TFTP烧写uImage。一方面分别通过串口线连和网线接TFTP服务器和DM6467开发板。把uImage拷贝至TFTP服务器文献夹下,启动TFTP服务器,配置相关参数,便可把uImage烧写至NORFLASH。烧写过程如下:Target#setenvserverip6//配置TFTP服务器地址Target#setenvipaddr36//配置DM6467平台的IP地址Target#setenvethaddr00:0C:29:94:D7:D6//配置网卡物理地址Target#tftp0x80800000uImageTarget#protectoff0x+0x180000Target#erase0x+0x180000Target#cp.b0x0x0x180000Target#setenvbootcmdbootm0xTarget#save三.根文献系统的烧写开发套件提供了DM6467的根文献系统rootfs.tar.gz,这一节中完毕根文献系统的烧写,具体工作是:编写烧写脚本文献prep-ATA和restore-ATA,然后执行脚本文献完毕根文献系统的烧写。prep-ATA脚本重要完毕对烧写目的硬盘的前期准备工作,重要涉及ATA硬盘空间的探测、硬盘的分区、格式化硬盘(ext2或者ext3文献系统)等。restore-ATA脚本完毕根文献系统的具体烧写。具体环节如图3.11所示:图3.11根文献系统烧些环节在完毕以上脚本文献编写后,在局域网内连接Linux服务器和DM6467。根文献系统具体的烧写过程如下:以网络文献系统(NFS)启动DM6467开发板;拷贝脚本文献prep-ATA和restore-ATA以及根文献系统rootfs.tar.gz至Linux服务器的/opt/nfs/mnt途径下;执行命令进行根文献系统的烧写Host#cd/mntHost#./prep-hdd重新启动开发板,配置U-boot环境变量,设立系统从硬盘启动;Target#setenvbootargsmem=120Mconsole=ttyS0,115200n8root=/dev/hdb1noinitrdrwip=30::保存设立,输入启动命令启动系统Target#saveTarget#boot至此,实现了嵌入式开发板DM6467的U-boot、内核以及根文献系统烧写,嵌入式开发板可以脱离网络文献系统,依靠自身的硬盘文献系统独立运营。3.4本章小结本章一方面具体介绍了DM6467的特点以及采集译码器TVP5158的功能;然后介绍了DaVinci软件开发环境,重要介绍了xDM算法封装标准以及CodecEngine机制;最后进行嵌入式开发环境搭建,重要实现了Linux服务器开发环境搭建、开发工作站的配置以及完毕DaVinci平台初始化,为嵌入式软件开发提供基础的开发环境。第四章视频采集编码发送模块的设计与实现本章是模块具体的设计实现部分,重要完毕了视频采集、视频编码、视频发送三个子模块。视频采集模块:ARM解决器通过V4L2采集驱动接口控制TVP5158采集译码器完毕多路视频复合采集,得到原始YUV格式数据;视频编码模块:实现H.264编码器,将通过解复用的YUV格式数据通过DSP进行实时的H.264编码,并生成NAUL数据;视频发送模块:运用RTP流媒体实时传输协议封装NAUL数据,建立传输链路,创建socket,把RTP数据包通过MF210无线模块发送到WCDMA网络当中。4.1视频采集模块设计实现4.1.1视频采集模块的图4.1视频采集程序程序设计V4L2是Linux操作系统提供的一个视频解决编程接口,整体架构如图4.1所示。V4l2通过I2C总线对TVP5158进行控制,所以作为从属设备的TVP5158需要将自己注册到VPIF采集驱动中,应用程序通过调用VPIF驱动中的ioctl以及mmap()等命令来控制TVP5158完毕视频采集。VPIF驱动则通过调用TVP5158驱动中的相关函数来实现对V4L2API的支持,使得应用程序可以根据自己的需要对底层硬件进行设立。采集应用程序通过调用V4L2的IOCTL命令,按照打开视频采集设备(dev/video0,dev/video1等节点)、查询设备功能、设立图像格式、制式、属性、开始视频采集等环节实现视频循环采集。4.1.2VVideo4Linux2(简称V4L2)是为针对视频设备的应用程序编程提供一系列接口函数,通过这些函数,可以执行读写、打开、关闭等操作[21-23]。Linux下操作V4L2进行视频采集时,通常涉及到ioctl()和mmap()两个系统调用,其中ioctl()系统调用负责控制设备的I/O通道,mmap()系统调用通过映射同一个普通文献来实现进程之间共享内存。V4L2编程中,通过调用ioctl函数来实现与图像设备的交互,常用的ioctl命令标记符如图4.2所示。图4.2ioctl()函数命令标示符由于应用程序不能直接访问内核数据空间,所以应用程序要访问内核空间缓存buffer中的数据就需要通过系统调用read()、write()等操作,数据访问速度慢。但是通过mmap()映射后,内核中的缓存数据被映射到用户空间,应用程序可以像访问普通文献同样对采集数据进行访问,大大的提高了数据解决效率。与之相应的释放映射内核内存函数mummap()。mmap()函数的原型是:void*mmap(void*start,size_tlength,intprot,intflags,intfd,off_toffset);mummap()函数原型是intmunmap(void*start,size_tlength);4.1.3在本系统的实际研发过程中,前端模拟摄像头将采集的PAL制式的模拟视频信号输入TVP5158模块,通过TVP5158编码转化为数字信号,DM6467的视频端口(VPIF)把数字化后的视频信号采集到缓存中,进行相关的解决。视频采集的流程图如图4.2所示。图4.2视频采集的流程图具体流程如下:1、打开采集端口在V4L2中,视频设备被看做一个文献,使用open函数打开这个设备。应用程序可以在阻塞模式或非阻塞模式下打开采集端口,假如使用非阻塞模式调用视频设备,即使尚未捕获到信息,驱动依旧会把缓存(DQBUFF)里的东西返回给应用程序,否则将一直阻塞直到有数据[24]。DM6467的视频端口VPIF有2个8位的BT.656接口,分别相应驱动中的设备节点为dev/video0和dev/video1,本设计采用阻塞模式打开采集端口:sprintf(devname,”/dev/video%d”,portnum);capture_fd=open((constchar*)devname,mode);2、检测视频通道是否连接摄像头此功能在V4L2标准中是没有的,本系统根据需要对其进行的扩展。下面代码中”x”表达视频通道号。ioctl(capture_fd,VIDIOC_G_CHx_STATUS,&status[x]);if(status[x])printf("Channel%dnocameraisconnected\n",x);3、设立视频捕获格式std=TVP5158_STD_PAL;ioctl(capture_fd,VIDIOC_S_STD,&std);4、申请缓冲区接下来,要为视频捕获分派内存空间。在V4L2驱动程序中维持着两个队列:一个是输入队列,另一个是输出队列。队列被组织成FIFO结构,内存片段将按顺序入队到输入队列,并按照顺序从输出队列中出队。开始采集前,所有被映射的内存片段都处在出队状态,驱动程序此时不可以访问。应用程序通过相关ioctl命令将映射好的内存片段入队,然后开始捕获视频并进入read循环,此时应用程序会一直等待输出队列被填满到可以有内存片段出队。当出队的内存片段使用完后就会重新入队到输入队列。内存片段循环入队出队,就可以进行循环采集。申请缓冲区的关键代码如下:#defineMAX_BUFFER3reqbuf.count=MAX_BUFFER;reqbuf.type=

温馨提示

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

评论

0/150

提交评论