datasheet
超过460,000+ 应用技术资源下载
pdf

基于ARM的嵌入式视频服务器设计与实现

  • 1星
  • 日期: 2014-03-05
  • 大小: 3.42MB
  • 所需积分:1分
  • 下载次数:0
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: 基于ARM的嵌入式视频服务器设计与实现

视频监控系统是一种先进的、防范能力强的综合系统。它通过遥控摄像机及其辅助设备(镜头、云台等)直接观看被监控场所的一切情况,同时可以把监控场所的图像内容传送到监控中心,进行实时远程监控。随着计算机、网络以及图像处理、传输技术的迅猛发展,视频监控技术也得到飞速发展,视频监控进入了全数字化的网络时代,传统的模拟视频监控系统和基于PC机的数字视频监控系统已不能满足现代社会发展的需要,基于嵌入式技术的网络视频监控系统成为视频监控系统发展的新趋势,具有广阔的应用前景和实用价值。 本文在总结分析前人研究成果的基础上,深入系统地研究了基于ARM和Linux的嵌入式系统开发技术,给出了基于ARM的嵌入式视频服务器的总体设计方案和功能规划,包括硬件结构和软件结构,基于B/S(Browser/Server)服务机制的客户端软件设计大大降低了客户端的软硬件要求。然后,介绍了嵌入式Linux交叉编译环境的搭建和嵌入式软件的开发过程,通过BootLoader的配置烧写和Linux内核的移植编译,搭建了嵌入式视频服务器运行开发的软件平台。最后详细分析了嵌入式视频服务器软件部分各个功能模块的设计思路及其关键代码实现,用Liflux vide04linux APIs实现了视频图像的采集,视频数据网络传输采用了基于UDP协议的IP组播方式,而视频图像显示模块则采用了自行设计实现的基于IPicture COM接口的ActiveX控件,便于维护、更新和升级。 本文设计的基于ARM的嵌入式视频服务器安装设置方便,远程客户端用户通过IE浏览器可直接访问服务器,实时视频图像传输流畅,无明显抖动,具有良好的稳定性、较高的性价比和一定的实用价值。

中国民航大学 硕士学位论文 基于ARM的嵌入式视频服务器设计与实现 姓名:秦培龙 申请学位级别:硕士 专业:计算机应用技术 指导教师:李国 20080320 中国民航大学硕士毕业论文 摘要 视频监控系统是一种先进的、防范能力强的综合系统。它通过遥控摄像机及其辅助 设备(镜头、云台等)直接观看被监控场所的一切情况,同时可以把监控场所的图像内 容传送到监控中心,进行实时远程监控。随着计算机、网络以及图像处理、传输技术的 迅猛发展,视频监控技术也得到飞速发展,视频监控进入了全数字化的网络时代,传统 的模拟视频监控系统和基于Pc机的数字视频监控系统已不能满足现代社会发展的需要, 基于嵌入式技术的网络视频监控系统成为视频监控系统发展的新趋势,具有广阔的应用 前景和实用价值。 本文在总结分析前人研究成果的基础上,深入系统地研究了基于ARM和Linux的嵌 入式系统开发技术,给出了基于ARM的嵌入式视频服务器的总体设计方案和功能规划, 包括硬件结构和软件结构,基于B/S(Browser/Scrvcr)服务机制的客户端软件设计大大 降低了客户端的软硬件要求。然后,介绍了嵌入式Linux交叉编译环境的搭建和嵌入式 软件的开发过程,通过BootLoader的配置烧写和Linux内核的移植编译,搭建了嵌入 式视频服务器运行开发的软件平台。最后详细分析了嵌入式视频服务器软件部分各个功 能模块的设计思路及其关键代码实现,用Linux vide041 inux APIs实现了视频图像的 采集,视频数据网络传输采用了基于UDP协议的IP组播方式,而视频图像显示模块则 采用了自行设计实现的基于IPicture COM接口的ActiveX控件,便于维护、更新和升 级。 本文设计的基于ARM的嵌入式视频服务器安装设置方便,远程客户端用户通过IE 浏览器可直接访问服务器,实时视频图像传输流畅,无明显抖动,具有良好的稳定性、 较高的性价比和一定的实用价值。 关键词:ARM;嵌入式Linux;视频服务器;ActiveX控件:vide041 inux 中国民航大学硕士毕业论文 Abstract Video monitor system is all advanced、powerful prevention integrated system,it directly watches all the circumstances of place under surveillance with the camera and its supporting equipment(1ens,Yuntm,etc.),and at the same time it Call sends these image contents to the monitoring center for real—time remote monitoring.With the rapid development of technology of computer、networks and image processing、transmission,video monitor technology also develops rapidly,video monitor has entered the digital network era,SO that traditional analog video monitor system and PC-based digital video monitor system has been unable to meet the needs of modem society,SO network video monitoring system based on embedded technology become a new trend of video monitor system,which has broad application prospects and practical value. On the basis of analyzing previous research achievements,the paper systematically and in-depth studies the technology of embedded system development,and presents the overall design solution and function planning of embedded video server based on ARM,including hardware and SOftware architecture,and the design of client software based on B/S(Browser/ Server)server mechanism significantly reduces the hardware and software requirement of the client.Then establishment of embedded Linux cross-compiler environment and development process of embedded SOftware are introduced.We set up the software platform of embedded video server development,by doing configuration and writing of BootLoader and transplantation and compile of Linux kernel. At last,the design idea and key code implementation of every functional module of embedded video server software department are analyzed in detail,the acquisition of video image is accomplished with Linux vide041inux APIs,the method of IP multicast based on UDP protocol is adopted in video data transmission, and the modules of video images show USeS a self-designed and implemented ActiveX control based on IPicture COM interface,which is easy to maintain,update and upgrade. The embedded video server based on ARM designed in this Paper has such characteristics as convenient installation,remote client users can directly access server through IE,real.time video image transmits fluent,no evidence jitter,has good stability,higher cost—effective and practical value. Key Words:ARM;embedded Linux;video server;ActiveX control;vide041inux II 中国民航大学学位论文独创性声明 本人声明所旱交的学位论文是我个人伦导师指导下进行的研究一l’作及取得的研 宄成果。尽我所知,除了文巾特别加以f,j、注和致谢的地方外,论文r{·不包含其他人 L经发表或撰。j过的研究成粜,也不包亿’为获得中国【屯航大学或其℃敦育机构的学 ft或证书而使:{j过的材料。与我一同工f1_’}勺同志对本研究所做的任f11贡献均已在论 文中作了明确的说明并表示了谢意。 研究生签名: 日期:丝丝垒么 中国民航大学学位论文使用授权声明 中国民航人学、中国科学技术信息研究所、国家图二传馆有权保留本人所送交学 f节论文的复印f,I:和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人 l乜子文档的内窬和纸质论文的内容相一致。除在保密期内的保密论文外,允许论文 被查阅和借阅,可以公布(包括刊登)论文的全部或部分内容。论文的公布(包括 刊登)授权中f14民航大学研究生部办理。 研究生签名:盔座盔 导师签名: 五年…:巡丝 中国民航大学硕士毕业论文 第一章绪论 1.1引言 视频监控系统是安全技术防范体系中的一个重要组成部分,是一种先进的、防范能 力强的综合系统。视频监控系统是由前端摄像部分、中端传输部分、控制部分以及后端 显示与记录部分所组成的系统。视频监控系统使管理人员在控制室中能观察到前端监控 区域内的所有活动情况并进行记录,并提供实时动态图像信息。随着我国社会、技术和 经济的迅速发展,特别是社会信息化程度的不断提高,视频监控技术的应用范围也在不 断拓展,由传统的安防监控向管理监控和生产经营监控发展,从最初银行、军事、机要 部门等特殊行业领域的应用已经延伸到今天的公安、电力、电信、金融、交通等部门, 大大提高了管理效率、降低了生产成本。视频监控系统以其直观、方便、信息内容丰富 的特点越来越受到人们的重视,使其成为安全监控系统的重要组成部分。 视频监控是--I"1集计算机技术、网络技术、数字视频技术于一体的技术。近年来, 由于计算机、网络以及图像处理、传输技术的迅猛发展,视频监控技术也得到飞速发展, 特别是视频监控系统和网络技术的结合,实现了对大量视频数据实时的和无地域性阻碍 的传输,达到了资源共享,提供了方便、快捷、有效的服务。视频监控进入了全数字化 的网络时代,传统的模拟视频监控系统和基于Pc机的数字视频监控系统已不能满足现 代社会发展的需要,嵌入式网络视频监控系统是一种以嵌入式技术、视频压缩编码技术 和网络传输控制技术为核心的新型视频监控系统,它在稳定性、实时性、处理速度、功 能、价格、扩展性等方面和传统的视频监控系统相比有着突出的优势,基于嵌入式技术 的网络视频监控系统成为视频监控系统发展的新趋势。 1.2视频监控系统的发展历史与发展趋势 1.2.1视频监控系统的发展历史 1.模拟视频监控系统 在20世纪90年代初以前,主要以模拟设备为主的闭路监控系统,称为第一代视频 监控系统,模拟视频监控系统【11。模拟视频监控系统一般由模拟摄像机、视频矩阵切换 器、电视墙和录像机等组成,如图卜1。视频图像采用同轴电缆以模拟方式进行传输,经 过系统控制主机进行模拟处理,由电视墙实现实时监控,通过录像机磁带录像。 中国民航大学硕士毕业论文 I I l摄像机I l ‘ l摄像机 l”一”I 视 矩 频 阵 图像模拟传输 分 切 配 换 器 器 I 电…视 。。墙9 I 。 舌累‘。倩躁士伊nL i I 键盘 图卜1模拟视频监控系统 特点: 一视频采用同轴电缆线传输; 一图像信息采集、传输为模拟方式; 一信息存储采用模拟方式(磁带等); 缺点: 一经过几十年的发展技术已成熟; 一传输距离有限,一般只有几百米范围,只适用于较小的地理范围; 一模拟信号占用通讯线路较大,而且开放性较差: 一监控仅限于监控中心,应用的灵活性较差,维护管理复杂。没有良好的用户 操作界面,非专业人员无法正常操作; 一监控图像质量不高,模拟信号受干扰程度大,稳定性差; 一成本高。同轴电缆传输,布线复杂,设备材料费用高。对于每个监控中心都 需要配置一套监控设备。利用录像带、磁带等设备进行信息存储,存储设备 成本高; 2.基于PC机的数字视频监控系统 20世纪90年代中后期,随着视频压缩技术的出现、发展和计算机网络技术的迅速 普及,使得数字视频的存储和传输成为可能。基于PC机的数字视频监控系统将摄像机、 报警探头等采集的模拟视频信号转化为数字信号,利用视频压缩卡进行压缩处理,经由 网络传输给多媒体监控终端Pc机,PC机利用视频解压缩卡解压数据,使远端的视频图 像重现,如图卜2所示。 I 探头 l l 探头 视 图像模拟传输 频 压 缩 卡 计算机 视频解压缩 卡 电视墙 I……像“舸 键盘 特点: 图1-2数字视频监控系统 2 中国民航大学硕士毕业论文 一传输方式依旧采用模拟方式,依靠电缆作为传输介质。图像存储为数字化存储, 管理手段极大丰富,降低成本且质量较高。 一录像时间长,图像传输距离远,数字信号传输可靠性高,图像品质和稳定性相对 模拟视频监控系统有很大提高。 一数字化的视频流可以通过网络被其他计算机共享,实现了与信息系统的数据交 换。 一多采用MJPEG、MPEG-I、MPEG-2压缩方式; 缺点: 一系统从监控点到监控中心为模拟方式传输,与第一代视频监控系统相似存在许多 缺陷; 一体积大、成本高。由于需要利用专用的压缩/解压缩卡对视频信号进行压缩和解 压缩处理,这使得监控系统的体积较大; 一数字化程度不够,远程观看、管理、资料交流功能有限; 一实时性不高; 一可扩展性差,采用专用的压缩卡和解压缩卡对视频数据进行压缩和解压,只能支 持一种编码格式,无法提供对其他编码方式的支持; 3.基于嵌入式技术的网络视频监控系统 基于嵌入式技术的网络视频监控系统一般指非Pc系统,将内部的操作系统和应用程 序写入到FLASH、DISK ON CHIP或单片机等存储器芯片上,面向某种特定应用的视频监 控系统或视频监控设备【21。它广泛结合多媒体、图像处理、网络技术与信息技术,使视 频监控基本满足了人们对视频监控系统的要求。视频服务器主要由大容量存储设备、输 入/输出通道、视音频接口、网络接口、RS422/RS232串行接口、软件接口、协议接口 以及视音频矩阵等组成13】,如图1-3。其关键设备是内置嵌入式Web服务器的视频服务 器,采用嵌入式实时多任务操作系统。摄像头送来的视频信号数字化后由高效压缩芯片 压缩,通过内部总线送到内置的Web服务器,网络上用户可以直接用浏览器观看Web服 务器上的视频图像,授权用户还可以控制摄像头、云台、探头的动作或对系统配置进行 操作【41。 特点: 一数字化网络传输。不受地域空间限制,极大丰富监控手段,真正随时、随地、随 意监控,开创全新的安防监控理念: 一即插即用即看,省掉各种复杂的电缆,安装方便,无需专人值守: 一存储容量大,扩展容易,存储方式丰富,可以采用前端设备存储或中心统一存储: 一系统易于管理和维护,设备可靠性强,集成度高; 一图像质量高,采用最先进的Mpe94/H.264压缩方式,多种图像质量可供选择,超 低压缩码流15J; 一采用专业级嵌入式操作系统,结构简单紧凑,集中组网,分级管理去掉不必要的 3 中国民航大学硕士毕业论文 冗余,追求更专业、更实用、更稳定; 视频服务器 :。。’‘。。。‘。。。。。。。‘‘。。。。。。。。。。。‘HTYP/TCP/IP - I摄像头 视 频 嵌入式WEB服务器 编 I糯馋婆 I取卧万r 码 视频处理 与传输 R耶/ImP/lP I ● 以 / / WEB浏览器 太 网 \ \. WEB浏览器 图1-3嵌入式视频监控系统 一提供了多种网络接口,使用TCP/IP协议,可实现同局域网、广域网的连接,使 用户无论身处何地都能通过网络连线,实现对被监控区域的监控和录像; 一实时性高。采用流媒体实时传输协议RTP(RFCl889),RTP控制协议RTCP(RFCl889) 和实时流化协议RTSP(RFC2326)保证数据的实时传输和控带,ji61; 缺点: 一网络依赖性大。庞大的视频数据和信号流量受相对过小的可用网络带宽的限制; 1.2.2视频监控系统发展趋势 进入二十一世纪,视频监控系统已经步入全数字化时代。视频监控系统作为多媒体 技术、计算机网络、工业控制和人工智能等技术的综合应用,正朝着数字化、网络化和 智能化的方向不断发展。 数字化——视频监控系统的数字化是指系统中信息流(包括视频、音频、控制等) 从模拟状态转为数字状态,它改变以往“经典闭路电视系统是以摄像机成像技术为中 心"的结构。信息流的数字化、编码压缩和开放式的协议,可以实现监控系统与信息管 理系统的无缝连接,并在统一的操作平台上实现管理和控制。 网络化——视频监控系统的网络化意味着系统的结构将由集总式向集散式系统发 展,集散式系统采用多层分级的结构形式,以具有微内核技术的实时多任务、多用户、 分布式操作系统来实现抢先任务调度算法的快速响应1.丌。视频监控系统的网络化在某种 程度上打破了布控区域和设备扩展的地域和数量界限。系统的网络化将使整个网络系统 硬件和软件资源得以共享,以及任务和负载的共享。 智能化——视频监控系统的智能化指监控系统具有图像识别和特征提取的功能,通 过图像分析实现运动探测、报警和控制。视频监控的智能化是在数字化、网络化基础 上发展起来的一种更高端的监控技术,它利用模式识别算法识别出对象类别、分析对 象活动、去除无用信息,在无需人工干预的情况下将信息路由到正确节点,甚至能够 4 中国民航大学硕士毕业论文 发现监控画面中的异常情况并及时发出警报,使视频监控从集中式控制模式转向分布 式控制模式。 1.3课题的研究意义及特点 1.3.1课题的研究意义 2004年8月上旬,媒体接连报道了上海计划在2010年前于市区内安装20余万个监 控摄像头,全面构建“社会防控体系’’。社会防控体系只是视频监控的应用之一,但足 以说明视频监控市场规模之巨大。“9·11’’恐怖袭击事件、马德里爆炸案、伦敦爆炸 案后,人们对于社会安全更加重视,视频监控更是由原来的金融、商业、交通、住宅、 社区,延伸到各行各业pJ。 目前,国外许多公司如AXIS、IBM、ClSCO、GE、Honeywell等已经有很多成熟的视 频服务产品,它负责单路或多路模拟视频信号的接入,在视频服务器内部进行A/D转换, 并进行视频图像的压缩,由服务器接入网络,用户在网络上通过浏览器或专门的监控软 件进行网络视频监控,国内大部分的监控系统也都采用这种方案。采用专门的视频服务 器来实现网络视频监控,价格相当昂贵,成本较大,多应用于奥运、世博会等大型项目, 不利于视频监控的推广普及应用。在国内,这方面的研究起步相对较晚,一些企业也逐 步开始加强对嵌入式系统的研究,开发基于嵌入式Web服务器的网络视频监控产品。但 由于技术基础相对薄弱,相关技术还不够成熟,研究水平与国外相比还存在一定差距, 产品简单,产品种类不够丰富,产品性能稳定性、可靠性等方面还有待进一步提高。如 天津亚安科技电子有限公司生产的IPS 104/101视频服务器存在传输视频图像有明显延 迟、受外界干扰大、对网络要求高、性能不稳定等问题,深圳市微控科技有限公司的嵌 入式视频服务器:VS201/VS204、广州市视联科技有限公司的嵌入式网络视频服务器 SL-ARGUS-116VE等也都在图像质量、安全、可靠性等方面存在问题,同时,上述产品的 价格也都比较昂贵。 另外,由于安全防范意识以及价格成本等因素的影响,我国安防产品的渗透率较低, 像学校、住宅小区等应该得到可靠安全保障的地方,视频监控却并没有得到普遍应用。 本课题作为(横向科研项目)综合井场场面监控系统的实验开发阶段的重要组成部分, 通过对嵌入式视频服务器相关技术的研究,设计并实现了基于ARM微处理器、嵌入式 Linux技术的嵌入式视频服务器,实现了实时视频监控的主要功能,有助于视频监控的 推广普及。实时视频图像传输流畅,无明显抖动,达到了实时监控的目的。并且具有高 性能、低成本、低功耗和稳定可靠等优点,具有一定的工程应用价值。 中国民航大学硕士毕业论文 1.3.2作者研发的嵌入式视频服务器的特点 与同类科研产品相比,作者设计的基于ARM的嵌入式视频服务器有以下特点: 1.采用当今最流行的ARM芯片作为核心微处理器。ARM9¥3C2410A在高性能和低功 耗特性方面提供最佳的性能,广泛应用于网络通信等嵌入式领域。 2. 以开放源代码的嵌入式Linux作为嵌入式视频服务器的软件运行平台,系统稳 定可靠,成本低。嵌入式Linux由于与生俱来的网络特性、便于定制和再开发、 高安全性等特性,在中低端的嵌入式网络设备应用中,较pSOS、Vxworks嵌入 式系统有许多优势,已成为嵌入式操作系统的主流之一。 3.嵌入式视频服务器客户端软件部分使用自行设计的ActiveX控件实现视频图像 的实时显示,开发成本低,便于维护、更新和升级。 4.采用基于WEB服务器的B/S服务机制(相对于c/s),大大降低了对远程客户端 的软硬件要求,用户只须通过IE浏览器就可直接访问,简单方便。 1.4论文的主要内容 本文首先分析了视频监控系统的发展历史、趋势,在课题研究意义中介绍了当前视 频监控系统发展的现状。借鉴前人的研究,设计了目前较为先进的嵌入式WEB视频服务 器的总体方案。基于ARM的嵌入式视频服务器以ARM9微处理器¥3C2410A为核心处理器, 并移植嵌入式Linux操作系统。数字压缩芯片ZC0301将采集的RGB原始图像压缩编 码为JPEG格式的二进制位流,经Linux APIs vide041inux采集,并在视频服务器中通过 基于UDP协议的口组播方式发送出去。客户端采用自行设计的ActivcX控件实现视频 图像的接收和实时显示,ActiveX控件通过移植在视频服务器中的嵌入式WEB服务器 Boa发布,远程客户端通过正浏览器就可实时监控现场的一切情况。论文各个章节安 排如下: 第一章——绪论,分析了视频监控系统的发展历史和趋势,说明了嵌入式视频服务 器将成为监控系统的发展趋势。在课题研究意义中,介绍了视频监控系统的发展现状。 同时,阐述了本基于ARM的嵌入式视频服务器在同类科研产品中的优势。最后,总结了 本文的主要内容及各章节安排。 第二章——ARM微处理器及嵌入式Linux系统概述,详细介绍了ARM微处理器体系 结构、嵌入式Linux的优点以及嵌入式Linux开发的几个层次:引导装载程序 (BootLoader)、Linux系统内核、文件系统和Linux驱动程序设计。 第三章——基于ARM的嵌入式视频服务器总体设计,详细阐述了嵌入式视频服务器 总体结构、嵌入式视频服务器硬件结构和软件结构。 第四章——嵌入式Linux的设计,介绍了嵌入式Linux交叉开发环境的建立、嵌入 式Linux软件开发的过程。详细说明了BootLoader的配置烧写、Linux内核编译,搭建 6 中国民航大学硕士毕业论文 起了嵌入式Linux开发的软件平台,为下一步嵌入式视频服务器的设计实现做好了准备 工作。 第五章——嵌入式视频服务器软件设计,介绍了嵌入式视频服务器软件设计中各个 功能模块的主要内容,包括视频图像采集模块、图像采集驱动程序模块、嵌入式WEB服 务器Boa的移植、视频数据网络传输模块、基于IPicture接口的视频图像显示模块、 ActiveX控件实现模块和HTML页面制作模块。 第六章——结论与展望,对本文作了简要总结,指出了嵌入式视频服务器待改进和 完善的地方。 7 中国民航大学硕士毕业论文 第二章ARM微处理器及嵌入式Linux系统概述 2.1 ARM微处理器 2.1.1 ARM微处理器概述 ARM(Advanced RISC Machines Limited)公司于1990年11月成立于英国剑桥,是一 家专门从事16/32位RISC微处理器知识产权设计的供应商,本身不直接从事芯片生产, 靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司 购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从 而形成自己的ARM微处理器芯片进入市场。目前,采用ARM技术知识产权(口)核 的微处理器,即通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信 系统、网络系统、无线系统、军用系统等各类产品市场,基于ARM技术的微处理器应 用约占据了32位RISC微处理器70%以上的市场份额,ARM技术正在逐步渗入到我们 生活的各个方面【91【10l。 ARM处理器具有低电压、低功耗和低集成度等特点,并具有开发和可扩性,已成为 嵌入式系统首选的处理器架构。ARM处理器架构的特剧11J有: 1.砌SC型处理器架构 ARM采用RISC(Reduced Instruction Set Computing)结构,一个机器周期执行1条指 令。减少了复杂功能的指令,减少指令条件,选用使用频度最高的指令,简化处理器的 集成度。并使每一条指令都在一个机器周期内完成,来提高处理器的速度。采用 Load/Store指令结构,只有Load/Store的存/取指令可与存储器打交道,其余指令都不允 许进行存储器操作。为了进一步提高指令和数据的存/取速度,有的还增加指令快存 I-Cache和数据快存D.Cache。采用多寄存器的结构,使指令的操作尽可能在寄存器之 间进行。由于指令相对比较经典,降低了处理器的复杂性,ARM中央控制器采用了硬 连线PLA方式替代微程序方式。所有指令采用32位定长,除了单机器周期执行I条指 令外,每条指令具有多种操作功能,提高了指令使用率。 2.Thumb指令集 ARM为了弥补RISC型处理器的指令功能相对比较弱,在新型ARM架构(v4T版 以上)定义了16位的Thumb指令集。Thumb指令集比通常的8位和16位CISC/RISC 处理器具有更好的代码密度,而芯片密度只增加6%,使程序存储器更加小。 3.多处理器状态模式 ARM可以支持用户、快中断、中断、管理、中止、系统和未定义等7种处理器模式, 除了用户模式外,其余的均为特权模式,大大提高了ARM处理器的效率。 8 中国民航大学硕士毕业论文 4.嵌入式在线仿真调试 为了便于通过JTAG来仿真调试ARM架构芯片,ARM架构的处理器芯片都嵌入了 在线仿真lCE.RT逻辑,另外,在处理器核中还可以嵌入跟踪宏单元ETM(Embedded Trace Macrocell),用于监控内部总线,实时跟踪指令和数据的执行。 5.灵活方便的接口 ARM架构具有协处理器接口,使基本的ARM处理器内核尽可能小,又可以方便的 扩充各种功能。ARM允许接16个协处理器,如CPl5用于系统控制,CPl4用于调试控 制器。ARM处理器核还具有片上总线OCB的AMBA,通过AMBA可方便的扩充各种 处理器及I/O,这样,可以把DSP、其他处理器和I/o(如VART、定时器和接口等)都 集成在1块芯片中。 6.低电压低功耗的设计 ARM架构的处理器主要用于手持式嵌入式系统中,根据CMOS电路的功耗关系: 因此,ARM结构的独特设计之处: 一降低电源电压,可工作在3.0V以下; 一减少门的翻转次数,当某个功能不需要时禁止门翻转; 一减少门的数目,即降低芯片的集成度; 一降低时钟频率; ARM处理器支持7种运行模式【12J,分别如下: 一用户模式(usr):ARM处理器正常的程序执行状态; 一快速中断模式(fiq):用于高速数据传输或通道处理; 一外部中断模式(irq):用于通用的中断处理; 一管理模式(svc):操作系统使用的保护模式; 一数据访问中止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存 储及存储保护; 一未定义und):支持硬件协处理器的软件仿真; 一系统模式(sys):运行具有特权的操作系统任务; 2.1.2 ARM微处理器系列 ARM微处理器系列主要特点及其主要应用领域如表2-1所示【13】: 9 中国民航大学硕士毕业论文 型号 ARM7 ARM9 JUW9E ARMIOE SecurCore StrongARM 表2-1 ARM微处理器系列 主要特点 低功耗的32位RISC处理器,最适合于对价位和功耗要求较高的消费类应 用。主要应用领域为:工业控制、Internet设备、网络和调制解调器设备、 移动电话等多种多媒体和嵌入式应用。 在高性能和低功耗特性方面提供最佳的性能。1.1肝IS/删z的5级流水线 结构,采用哈佛存储器结构,支持MMU。 主要应用领域为:无线设备、仪器仪表、安全系统、机顶盒、高端打印机、 数字照相机和数字摄像机等。 综合处理器,使用单一的处理器内核,提供了微控制器、DSP、Java应用 系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。主要应用 领域为:下一代无线设备、数字消费品、工业控制、存储设备和网络设备 等。 高性能、低功耗。由于采用了新的体系结构,与同等的ARM9器件比较,在 同样的时钟频率下,性能提高近50%,同时,ARMIOE系列微处理器采用了 两种先进的节能方式,使其功耗极低。主要应用领域为:下一代无线设备、 数字消费品、工业控制、存储设备和网络设备等。 专为安全需要而设计,带有灵活的保护单元,采用软内核技术,可集成用 户自己的安全特性和其他协处理器。主要应用领域为:对安全性要求较高 的应用产品及应用系统,如电子商务、电子政务、电子银行业务、网络和 认证系统等领域。 融合了Intel公司的设计和处理技术以及ARM体系结构的电源效率,采用 在软件上兼容ARMy4体系结构、同时采用具有Intel技术优点的体系结构。 主要应用领域为:便携式通讯产品和消费类电子产品。 2.2嵌入式Unux 2.2.1嵌入式Linux系统概述 Linux是指一套免费使用和自由传播的类UNIX操作系统,是一个基于POSIX和UNIX 的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、 应用程序和网络协议。它支持32位和64位硬件。Linux操作系统源于芬兰赫尔辛基大 学计算机系学生Linus TorValds的课余作品。他是目的是设计一个能代替Minix的操 作系统(Minix是由计算机科学家Andrew S.Tanenbaum教授编写的一个操作系统示教程 序),他要求这个新的操作系统可用于386、486或奔腾处理器的个人计算机上,并且 10 中国民航大学硕士毕业论文 具有UNIX操作系统的全部功能,由此开始了Linux雏形的设计。1991年9月,Linus TorValds通过互联网发布了Linux 0.Ol,并公开了源代码。随着Internet的发展,在 GNU自由软件精神和全球计算机爱好者的共同努力下,Linux内核版本也已经从原先的 0.0.1发展到现在的2.6.XX,Linux现在已成为最流行的开放源码的操作系统【141. Linux从最开始就是一个开放的系统,并且它始终遵循着源代码开放的原则,是一 个成熟稳定的网络操作系统,Linux系统不仅能够运行于PC平台,还在嵌入式系统中得 到了广泛应用,作为嵌入式操作系统有如下优势: 1.低成本开发系统 Linux的源代码开放性允许任何人可以获取并修改Linux的源码。这样一方面大大 降低了开发的成本,另一方面又可以提高开发产品的效率。并且还可以在Linux社区中 获得支持,用户只需向邮件列表发一封邮件,即可获得作者的支持。 2.可应用于多种硬件平台 Linux可支持X86、PowerPC、ARM、XSCAL、MIPS、SH、68K、Alpha、SPARC等多种 体系结构,并且已经被移植到多种硬件平台。这对于经费、时间受限制的研究与开发项 目是很有吸引力的。Linux采用一个统一的框架对硬件进行管理,同时从一个硬件平台 到另一个硬件平台的改动与上层应用无关。 3.可定制的内核 Linux具有独特的内核模块机制,它可以根据用户的需要,实时地将某些模块插入 到内核中或从内核中移走,并能根据嵌入式设备的个性需要量体裁衣。经裁剪的Linux 内核最小可达到150KB以下,尤其适合嵌入式领域中资源受限的实际情况。当前的2.6 内核加入了许多嵌入式友好特性,如构建用于不需要用户界面的设备的小占板面积内核 选项。 4.性能优异 Linux系统内核精简、高效和稳定,能够充分发挥硬件的功能,因此它比其他操作 系统的运行效率更高。在个人计算机上使用Linux,可以将它作为工作站。它也非常适 合在嵌入式领域中应用,对比其他操作系统,它占用的资源更少,运行更稳定,速度更 快。 5.良好的网络支持 Linux是首先实现TCP/IP协议栈的操作系统,它的内核结构在网络方面是非常完整 的,并提供了对包括十兆位、百兆位及千兆位的以太网,还有无线网络、Token ring(令 牌环)和光纤甚至卫星的支持,这对现在依赖于网络的嵌入式设备来说无疑是很好的选 择。Linux的操作系统TCP/IP的协议的效率比起私有的操作系统要高。有数据可以说明, 一家法国公司做以太网的交换机测试的时候,和别的PSOS比较,标准的Linux2.4的 Kernel比PSOS块五十倍。 6.完整的工具链支持 Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境, 中国民航大学硕士毕业论文 可以跨越嵌入式系统开发中仿真工具的障碍。Linux也符合IEEE POSIX.I标准,使应用 程序具有较好的可移植性。 2.2.2嵌入式Linux开发 嵌入式Linux的开发大致涉及以下几个层浏15】:引导装载程序(BootLoader)、Linux 系统内核和文件系统、Linux设备驱动程序设计。 1.引导装载程序 引导装载程序通常是在任何硬件上执行的第一段代码。在安装它并给予其控制后, 这个引导装载程序执行下列各类功能: (1)初始化CPU速度; (2)初始化内存,包括启用内存库、初始化内存配置寄存器等; (3)初始化串行端口(如果在目标上有的话); (4)启用指令/数据高速缓存; (5)设置堆栈指针; (6)设置参数区域并构造参数结构和标记(这是重要的一步,因为内核在标识根 设备、页面大小、内存大小以及更多内容时要使用引导参数): (7)执行PoST(加电自检)来标识存在的设备并报告任何问题; (8)为电源管理提供挂起/恢复支持; (9)跳转到内核的开始。 一旦将引导装载程序安装到目标的闪存中,它就会执行我们上面提到的所有初始化 工作。然后,它准备接收来自主机的内核和文件系统。一旦装入了内核,引导装载程序 就将控制转给内核。 2.Linux系统内核 Linux内核主要由5个模块构成,他们分别是:进程调度模块、内存管理模块、文 件系统模块、进程间通信模块和网络接口模块1161,Linux内核结构框图如图2-1所示。 进程调度模块用来负责控制进程对CPU资源的使用。所采取的调度策略是各进程能 够公平合理地访问CPU,同时保证内核能及时地执行硬件操作。内存管理模块用于确保 所有进程能够安全地共享机器内存区,同时,内存管理模块还支持虚拟内存管理方式, 使得Linux支持进程使用比实际内存空间更多的内存容量。并可以利用文件系统把暂时 不用的内存数据块交换到外部存储设备上去,当需要时再交换回来。文件系统模块用于 支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个 通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其他操作系统兼 容的多种文件系统格式。进程间通信模块子系统用于支持多种进程间的信息交换方式。 网络接口模块提供对多种网络通信标准的访问并支持许多网络硬件。 12 中国民航大学硕士毕业论文 用户程序 J- ; 函数库 ▲ 1r ◆ 系统调用接口 工 文件子系统 高速缓冲 £ 0 字符设备 块设备 王 ●● :进程间通信j 进 进程翟 控驯制I;.L i: 子系统 调度程序 设各驱动程序 内存管理 毒 { 硬件控制 · …··一···一-·-·{壬 … 硬 件 用户级 内核级 内核级 硬件级 图2-1 Linux内核结构框图 根据可用的系统资源和引导装载程序的功能,内核可以编译成vmlinux、Image或 zImage。vml inux和zImage之间的主要区别在于vml inux是实际的(未压缩的)可执行文 件,而zImage是或多或少包含相同信息的自解压压缩文件。 一旦为目标系统编译了内核后,通过使用引导装载程序(它已经被装入到目标的闪存 中),内核就被装入到目标系统的内存(在DRAM中或者在闪存中)。在系统开发测试或者 升级阶段,可通过使用串行、USB或以太网端口,用引导装载程序将内核传送到目标闪 存或DRAM中。在将内核完全装入目标后,引导装载程序将控制传递给装入内核的地址。 3.嵌入式设备的文件系统 嵌入式文件系统是嵌入式操作系统的一部分,它的任务是对逻辑文件进行管理,其 工作包括提供对逻辑文件的操作接口。在文件系统内部,又根据存储设备的特点,使用 不同的文件组织模式来实现文件的逻辑结构。嵌入式系统对文件的操作是通过层次结构 实现的,用户程序可以通过文件I/O函数操作文件。Linux的文件系统采用了虚拟文件系 统VFS(Virtual File Systems)机制,为上层程序提供了一个统一的抽象文件系统接口 层。嵌入式系统中为了减小体积和功耗,一般采用Flash作为非易失性存储介质。和硬 盘等PC机上常用的存储介质相比,Flash有自己独特的物理特性,所以必须使用专门的 文件系统。 目前比较常用的支持Flash存储器的文件系统有: 13 中国民航大学硕士毕业论文 一R^MFS、CItAMFS、ROMFS —JFFS2、Yaffs 4.Linux设备驱动程序设计 设备驱动程序是Linux内核的重要组成部分,是操作系统内核与硬件设备之间的桥 梁,屏蔽了硬件的细节(如总线协议、DMA操作等)。Linux操作系统将所有的设备(而 不仅是存储器里的文件)都看成文件,纳入文件系统的范畴,通过文件的操作界面进行 操作。在应用程序看来硬件设备只是一个特殊的文件。驱动程序的基本功削r7】有: 一对设备初始化和释放。如对音频设备而言包括内核注册设备,设置音频的输入输 出参数(采样频率、采样宽度等)、分配音频设备使用的内核内存等工作; 一对设备进行管理。包括实时参数设置以及提供对设备的操作接口; 一读取应用程序传送给设备文件的数据并回送应用程序请求的数据。这需要在用户 空间、内核空间、总线及外设之间传输数据; 一检测和处理设备之间的错误; Linux系统将设备分成三种类型18l:字符设备、块设备和网络接口。其中,网络接 口是介于字符设备和块设备之间的一种特殊设备。三种类型的设备如下: (1)字符设备(character device) 字符设备是能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来 实现这种特性。字符设备通常可以直接读写,没有缓冲区。系统控制台和并口就是字符 设备的例子,它们可以很好的用流的概念来加以描述。通过文件系统节点可以对字符设 备加以访问。字符设备和普通文件系统的唯一区别是:普通文件允许在其上来回读写, 而大多数字符设备仅仅是数据通道,只能顺序读写。然而,也存在具有数据区特征的字 符设备,访问它们时可前后移动访问位置。例如帧抓取器就是这样一个设备,应用程序 可以用mmap()或lseek()访问抓取整个图像。 (2)块设备(block device) 和字符设备类似,块设备也是通过/dev目录下的文件系统节点来访问。块设备是文 件系统的宿主,如硬盘、光驱等。在大多数Unix系统中,只能将块设备当作多个块进行 访问,一块通常是lkb数据。Linux允许你像字符设备那样读取块设备——允许一次传输 任意长度的字节。结果是,块设备和字符设备只在内核内部的管理上有所区别,因此也 就是在内核/驱动程序间的软件接口上有所区别。就像字符设备一样,每个块设备也通 过/dev目录下的文件系统节点来读写数据,它们之间的不同对于用户来说是透明的。块 设备驱动程序和内核的接口跟字符设备驱动程序的接口是一样的,它也通过一个传统的 面向块的接口与内核通信,但这个接口对于用户来说是不可见的。 (3)网络接口(network interface) 任何网络事务都经过一个网络接口形成,即一个能够和其他主机交换数据的设备。 通常,接口是一个硬件设备,但也可以像loopback(回路)接口一样是软件设备。网络 接口是由内核网络子系统驱动的,它负责发送和接收数据包,而且无需了解每次事务是 中国民航大学硕士毕业论文 如何映射到实际被发送的数据包。由于不是面向流的设备,网络接口不能像/dev/ttyl 设备那样简单地映射到文件系统的节点上。Linux调用这些节点的方式是给它们分配个 独立的名字如ethO,这样的名字在文件系统中并没有对应项。内核和网络设备驱动程序 之间的通信,与字符设备和块设备驱动程序与内核/的通信是完全不一样的。不再是通 过read 0、write 0函数而是采用sk_buff数据缓冲区,调用与数据包相关的函数。 一般Linux设备驱动程序可以分为3个主要组成部分: (1)自动配置和初始化子程序,负责检测所要驱动的硬件设备是否存在和能否正常 工作。如果设备正常则对这个设备及其相关的设备驱动程序需要的软件状态进行初始 化。这部分驱动程序仅在初始化时被调用一次。 (2)服务于I/O请求的子程序,又称为驱动程序的上半部。调用这部分程序是由于系 统调用的结果。这部分程序在执行时,系统仍认为是与进行调用的进程属于同一个进程, 只是由用户态变成了核心态,具有进行此系统调用的用户程序的运行环境,因而可以在 其中调用sleep 0等与进程运行环境有关的函数。 (3)中断服务程序,又称为驱动程序的下半部。在Linux系统中并不是直接从中 断向量表调用设备驱动程序的中断服务子程序,而是由Linux系统来接收硬件中断,再 由系统调用中断服务子程序。中断可以在任何一个进程运行时产生,因而在中断服务程 序被调用时,不能依赖于任何进程的状态,也就不能调用任何与进程运行环境有关的函 数。因为设备驱动程序一般支持同一类型的若干设备,所以一般在系统调用中断服务子 程序时,都带有一个或多个参数,以唯一标志请求服务的设备。 在系统内部,I/O设备的存/取通过一组固定的入口点来进行,这组入口点是由每 个设备的设备驱动程序提供的。具体到Linux系统,设备驱动程序所提供的这组入口点 由一个文件操作结构来向系统进行说明。file—operations结构定义于linux/fs.h文件 中,随着内核的不断升级,file—operations结构也越来越大,不同版本的内核会稍有 不同。 在ARM平台上开发嵌入式Linux的设备驱动程序与在其他平台上开发是一样的。总 的来说,实现一个嵌入式Linux设备驱动的大致流程如下【19J: (1)查看原理图,理解设备的工作原理; (2)定义主设备号; (3)在驱动程序中实现驱动的初始化。如果驱动程序采用模块的方式,则要实现模 块初始化; (4)设计所要实现的文件操作,定义file—operations结构; (5)实现中断服务(中断并不是每个设备驱动所必须的); (6)编译该驱动程序到内核中,或者用insmod命令加载; (7)测试该设备; 15 中国民航大学硕士毕业论文 2.3本章小结 基于ARM的嵌入式视频服务器以ARM微处理器S3C2410A为核心处理器,移植嵌入式 Linux操作系统作为服务器软件的运行平台。本章详细介绍了基于ARM的嵌入式视频服 务器设计开发中用到的主要技术:ARM微处理器、嵌入式Linux操作系统。其中,嵌入 式Linux操作系统部分着重介绍了嵌入式Linux作为嵌入式操作系统的优势以及嵌入式 Linux开发中引导装载程序(BootLoader)、Linux系统内核、文件系统和Linux驱动 程序设计相关知识。 16 中国民航大学硕士毕业论文 第三章基于ARM的嵌入式视频服务器总体设计 3.1基于ARM的嵌入式视频服务器总体结构 本基于ARM的嵌入式视频服务器主要由两部分组成:服务器端部分和客户端部分。 其总体架构如图3.1所示,服务器端部分包括图像采集驱动程序模块、视频数据采集压 缩模块、视频数据网络传输模块。服务器端部分的主要功能为:图像传感器M1360采集 的RGB原始图像数据经数字压缩芯片ZC0301压缩编码后输出JPEG格式的二进制位 流。然后经由Linux视频子系统vide04Linux采集,通过UDP协议的口多播方式将采 图3-1嵌入式视频服务器总体结构图 集的一帧JPEG图像的二进制位流通过RJ45接口发送到浏览器客户端。客户端部分的 主要功能为:在微处理器S3C2410A的嵌入式Linux系统上移植嵌入式WEB服务器Boa, 在自行编写的ActiveX控件中实现与视频服务器进行网络通信、视频图像显示等功能, 并通过WEB服务器发布,这样就可以通过浏览器访问WEB服务器IP对远端现场进行 实时监控。 3.2嵌入式视频服务器硬件结构 3.2.1嵌入式视频服务器硬件总体结构 嵌入式视频监控系统硬件总体结构图如图3-2,主要由微处理器芯片、视频压缩编 码芯片、FLASH芯片和SDRAM内存以及以太网接口组成。其中微处理器芯片采用的是 17 中国民航大学硕士毕业论文 SAMSUNG的16/32位RISC处理器¥3C2410A,实现了MMU存储器管理和独立的16KB 图3—2系统硬件总体结构图 指令和16KB数据哈佛结构的缓存,且每个缓存均为8个子长度的流水线,具有低功 耗、精简而出色的全静态设计等特点㈨。为了降低嵌入式视频服务器的成本,本方案没 有采用高端的压缩芯片,如MPEG一4,H.264等,而是采用了最简单的MJPE6压缩,故选用 了中星微的微处理器ZC0301作为视频压缩编码芯片,图像传感器M1360采集的RGB原 始图像数据经ZC0301芯片压缩编码后输出的是JPEG格式的二进制位流。以太网接口采 用的是常用的10M RG-45接口。 3.2.2嵌入式视频服务器核心处理器单元设计 微处理器是嵌入式视频服务器的核心部件,主要功能是移植嵌入式Linux操作系统、 构建视频服务器、对视频数据流进行采集和转发。考虑到嵌入式视频服务器需要长时间 运行,处理的数据量较大以及将来推广应用的性价比等因素,这里使用了SAMSUNG 的ARM920T核微处理器S3C2410A。 S3C2410A提供全面、通用的片上外设,大大降低系统的成本,下面列举了¥3C2410A 的主要片上功能【201: 一1.8VARM920T内核供电,1.8V/2.5v届.3V存储器供电; 一16KB指令核16KB数据缓存的MMU内存管理单元; 一外部存储器控制(SDRAM控制核芯片选择逻辑); 一提供LCD控制器(最大支持4K色的STN或256色11可的LCD),并带有1个 通道的LCD专用DMA控制器; 一提供4通道DMA,具有外部请求引脚; 一提供3通道的UART(支持kDAl.0,16字节发送FIFO及16字节接受FIFO),2 通道SPI接口: 一提供1个通道多主IIC总线控制器,1通道IIS总线控制器; 一兼容SD主机接口1.0版及MMC卡协议2.11版; 一提供2个主机接口的USB口,1个设备USB口(1.1); 一4通道PWM定时器,1通道内部计时器; 18 中国民航大学硕士毕业论文 一提供看门狗定时器: 一提供117个通用yo口,24通道外部中断源: I LCD p I CObiT l DLMACD ko G剖Intemet I USBHostCONT A G二刮触BUitoS棚COeN训T e H B CONT I ExtMaster k l NANDCONT. I l NAND FIash BootLoader 乏 ≥ ≮=刮M哪Poweemrent 。/^——扒J B >U Memory CONT. \广——弋/1 sRAM/NOR/SDRAM S r~(M—PL“L“)~1 I≤纠 Bridge&DMA(4ch) 、 ko UART 0.1.2 ko G剖12S USB Device ko G剖GPIO SDI/MMC <爿 12C A P B G剖ADC 脚1 l、广———]/ ≤=刮唧Time(Inr/PteW加Mal) l B A8Ur/Dso骝I\广——]/ U SPl 0.1 ◇—刊 S k二二今 RTC 图3—3¥3C2410X系统结构图 一提供带触摸屏接口的8通道10位ADC: 19 中国民航大学硕士毕业论文 一提供带日历功能的实时时钟控制器(RTC); 一具有PU的片上时钟发生器: ¥3C2410A系统结构图如图3.3所示。 存储器模块多采用数据不易丢失的Flash来存储固化的引导程序、操作系统内核和应 用程序,它具有低功耗、大容量、擦写速度快、可整片或分扇区在系统中编程(烧写)、 擦除等特点,因此在嵌入式系统中得到了广泛的应用。 ¥3C2410A支持从NAND Flash启动,NAND Flash具有容量大、比NOR Flash价格低等特 点。采用NAND Flash与SOP,AM相组合的方式,可以获得非常高的性价比。可以将引导代 码和操作系统镜像存放在外部的NAND Flash中,并从NAND Flash启动。当S3C2410A在这 种模式下上电复位时,内置的NAND Flash控制器将访问控制接口,将NAND Flash存储器 里4K大小的引导代码自动加载至US3C2410A内部的SRAM缓冲器中运行,这个4K的引导代码 需将NAND Flash里的操作系统镜像加载到SDRAM中,在引导代码执行完毕后跳转到SDRAM 执行,这样操作系统就能够在SDRAM中运行了。 这里用到的相关处理器模块主要有:1个64M×32Bit NANDFlash(K9F1208UDM—YC80), 2个32M×16Bit SDI洲(K4S561632C—TC75),1个IMX 16Bit NOR Flash(SST39VFl60). ARM微处理器芯片¥3C2410A与存储器模块的接口框图如图3—4所示: 图3-4存储器接口框图 中国民航大学硕士毕业论文 3.2-3基于ZC030l的视频压缩编码模块 嵌入式视频服务器视频压缩编码模块采用的是Vimicro的ZC0301芯片。ZC0301是 中星微电子有限公司(Vimicro)生产的一款JPEG压缩芯片,性价比极高。ZC0301采 用一个微型28引脚PLCC封装且无外部DRAM,为个人计算机摄像头应用提供了单芯 片解决方案。其所有主要图像处理功能、图像数据压缩和图像传输单元都集成在芯片中, ZC0301芯片通过USB同PC主机进行通信。 Xrtmicro视频压缩芯片的主要特点121】有: 一支持帧速高达15帧/秒的无DRAM VGA视频显示; 一支持USBl.1接口; 一支持自动CMOS传感器复位控制; 一支持8位CMOS图像传感器的RGB原始图像输入; 一支持基于8×8像素单元的全景拍摄; 一支持ISO/IEC 10918.I(JPEG)标准图像压缩; 一支持JPEG文件交换格式压缩图像数据格式输出; 一支持4种图像质量; 一支持2 AC和2 DC Huffman码表; Vimicro ZC0301主要有五大功能模块组成:系统控制、图像信号处理、次取样和 水平扫描模块、JPEG编码器和USB设备控制。图3.5是ZC0301结构图。 图3—5 Vimicro ZC0301结构图 在本基于ARM的嵌入式视频服务器中,CMOS图像传感器(CIS)选择美光的M1360, 这是一片VGA标准(30万像素)的感光芯片,感光面积位1/4英寸,有效像素位649H X489H,它采用低噪声技术,噪声等级达到CCD标准。M1360和ZC0301压缩编码芯片完 成对从摄像头传送过来的视频数据的压缩和编码。图像信号处理模块(ISP)从CMOS图 像传感器(M1360)接口接收RGB原始图像数据并对图像数据进行相关处理,次取样和扫 21 中国民航大学硕士毕业论文 描模块改变图像的缩放比例且将图像数据转换为适合JPEG压缩的8×8格式。最后JPEG 编码器进一步将图像数据压缩成JPEG格式。 3.3嵌入式视频服务器软件结构 嵌入式视频服务器软件部分是嵌入式视频服务器的重要组成部分,具体实现了嵌入 式视频服务器的各项功能。嵌入式视频服务器软件包括嵌入式视频服务器的服务器端软 件和客户端软件两部分。 3.3.1嵌入式视频服务器服务器端软件部分 服务器端软件部分主要由视频数据采集模块、图像采集驱动程序模块和视频数据网 络传输模块服务器端发送部分三部分构成。各部分的主要功能: 一视频数据采集压缩模块用于完成对视频数据的实时采集,这里主要采用是Linux 系统中的视频子系统Vide04Linux,Vide04Linux是Linux kernel里支持影像设 备的一组APIs,视频应用程序通过标准的系统调用就可操纵各种不同的视频捕获 设备。Vide04Linux向虚拟文件系统注册视频设备文件,应用程序通过操纵视频 设备文件来实现对视频设备的访问,主要有两种方法:内存映射和直接从设备读 取; 一图像采集驱动程序模块通过在嵌入式视频服务器中移植支持ZC0301的驱动程序 补丁,生成驱动程序模块,然后开启嵌入式视频服务器时,采用动态加载驱动程 序模块方式,实现嵌入式视频服务器对ZC0301的支持; 一视频数据网络传输模块服务器端发送部分采用Linux Socket和多线程技术,通 过UDP协议的IP多播方式将采集的一帧帧JPEG图像的二进制位流发送到远程客 户端; 嵌入式视频服务器服务器端软件的框架如图3-6所示。 服务器端软件部分 Linux文件系统 Linux内核 Linux设备驱动程序 ¥3C2410A硬件平台 图3-6嵌入式视频服务器服务器端软件框架 中国民航大学硕士毕业论文 3.3.2嵌入式视频服务器客户端软件部分 嵌入式视频服务器客户端软件部分采用的是基于WEB服务器的B/S (Browser/Server)服务机制,B/S服务机制是随着Internct技术的兴起,对C/S (Client/Server)服务机制的一种改进,由于其先进的开发技术、优越的可管理性和可 维护性以及简单方便的应用模式,正成为视频监控系统最流行的应用方式。 其主要特征和优剧冽是: 1.视频监控系统部署在WEB服务器上,远程客户端不需要人工安装软件,用户 只要通过浏览器就可以直接访问,简单方便。 2.维护和升级方式简单。无论用户的规模有多大,有多少分支机构都不会增加 任何维护升级的工作量,所有的操作只需要针对服务器进行,节省人力和物 力。 3. B/S服务机制通过一种集中处理的模式,大大降低了对远程客户端的软硬件 的需求。只要远程客户端PC机配置有浏览器并且能够上网进行监控。 嵌入式视频服务器客户端软件部分设计思路是:在嵌入式视频监控系统上移植嵌入 式WEB服务器Boa,在ActiveX控件中实现与视频监控系统进行网络通信、视频图像显示 等功能,并通过WEB服务器发布,同时WEB服务器接收远程客户端的监控请求,反馈本 地视频监控系统的数据存储信息。用户通过浏览器访问WEB服务器时,ActiveX控件就 会经过网页传输到客户端并自动下载安装,实现远程实时监控。 嵌入式视频服务器客户端软件部分主要包括:视频图像网络传输模块客户端接收部 分、基于IPicture接口的视频图像显示模块、ActiveX控件实现模块、嵌入式WEB服务 器模块和HTML页面制作模块。其客户端软件的总体架构图如图3.7: 图3-7客户端软件的总体架构图 视频图像网络传输模块客户端接收部分在Visual C++6.0开发环境中,采用基于UDP 协议的IP多播编程,接收服务器端发送部分发送的~帧帧JPEG视频图像,以便视频图 中国民航大学硕士毕业论文 像显示模块实时显示图像。 基于IPicture接口的视频图像显示模块实现了视频图像网络传输模块客户端接收部 分接收的视频图像的实时显示。IPicture接口是Window95及以上操作系统支持的一个 COM接口,支持JPEG等Windows常见的图像格式。首先将接收的视频图像转换为数据 流对象,然后使用OleLoadPicture函数从视频图像数据流中加载视频图像,接着在当 前窗口显示图像。 ActiveX控件实现模块使用Visual C++MFC ActiveX技术创建整个框架,在此基础 上添加相关函数实现各项功能。ActiveX控件中集成了视频图像网络传输模块客户端接 收部分和基于IPicture接口的视频图像显示模块两部分的编程实现。最后详细介绍了 ActiveX控件打包的过程。 嵌入式WEB服务器模块实现了嵌入式WEB服务器Boa在嵌入式Linux操作系统的移 植,WEB服务器Boa通过HTTP协议与客户端浏览器进行信息交互,提供其他应用程序模 块的接口以及视频数据浏览界面。 I-ITML页面制作模块用HTML(Hyper Text Markup Language)生成加载ActiveX控 件的网页,并把它放到WEB服务器中,远程客户端浏览器访问服务器网页时,便可自 动下载安装,进行实时监控。 3.4本章小结 本章概述性的介绍了基于ARM的嵌入式视频服务器的硬件和软件结构。首先介绍 了嵌入式视频服务器的总体架构,详细介绍了嵌入式视频服务器服务器端部分和客户端 部分的主要功能。嵌入式视频服务器硬件结构部分对硬件总体结构设计、¥3C2410A核 心处理器单元设计和基于ZC0301的视频压缩编码模块设计做了具体的说明,重点分析 了ARM9微处理器芯片¥3C2410A、视频压缩编码芯片ZC0301的特点、结构。嵌入式 视频服务器软件结构部分对服务器端软件和客户端软件的各部分功能进行了详细论述。 中国民航大学硕士毕业论文 第四章嵌入式Linux的设计 4.1嵌入式Linux交叉开发环境的建立 作为嵌入式系统应用的ARM处理器,其应用软件的开发属于跨平台开发。因此,需 要一个交叉开发环境。交叉开发是指在一台通用计算机上进行软件的编辑编译,然后下 载到嵌入式设备中进行运行调试的开发方式。 运行平台Target 开发平台Host 图4—1交叉开发环境 交叉开发环境(Cross Development Environment)是嵌入式应用软件开发时的一个 显著特点,如图4-I所示,是用于嵌入式软件开发的所有工具软件的集合,一般包括文 本编辑器、交叉编译器、交叉调试器、仿真器和下载器等。 交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建 立起逻辑连接。宿主机(Host):是用于开发嵌入式系统的计算机。一般为PC机(或者 工作站),具备丰富的软硬件资源,为嵌入式软件的开发提供全过程支持。目标机 (Target):即所开发的嵌入式系统,是嵌入式软件的运行环境,其软硬件是为特定应 用定制的。在开发过程中,目标机端需接收和执行宿主机发出的各种命令如设置断点、 读内存、写内存等,将结果返回给宿主机,配合宿主机各方面的工作。物理连接是指宿 主机与目标机通过物理线路连接在一起,连接方式主要有三种:串口、以太口和OCD(On Chip Debug)方式,如JTAG、BDM等。逻辑连接指宿主机与目标机间按某种通信协议建 立起来的通信连接,目前逐步形成了一些通信协议的标准。物理连接是逻辑连接的基础。 这里我们使用的宿主机是装有Red Hat Linux的PC机,内核是2.4.20-8。目标机 开发板中ARM微处理器中Li rlux内核是2.4.18稳定内核,文件系统选用的是可支持读 写的yaffs文件系统。目标机和宿主机通过串口相连。然后使用Minicom作为串口终端 中国民航^荦顷±毕业论立 对目标机开发板进行管理控制.作为目标机的操作控制界面。Minicom设置界面如图4—2 所示。 匿到 l 圈4-2 Hinicc口设置界面 Ⅵ2 选用广州友善之臂计算机科技有限公司提供的Linux开发包sbc2410v6_Linux 4 18一sdk.tgz建立宿主机的开发环境。里面包括内核源代码、Jflash烧写程序、yaffs 文件系统等。交叉编译环境是arm_linux-gcc一2.95.3。 4.2嵌入式IJnux的软件开发实现过程 交叉开发环境建立后,嵌入式软件的开发进入实现阶段.可分为三个步骤:软件的 生成、调试和固化运行。 一软件的生成:主要是在宿主机上进行.利用各种工具完成对应用程序的编辑、交 叉编译和链接工作,生成可供调试或固化的目标程序: 一调试:是通过交叉调试器完成软件的调试工作。调试完成后还需进行必要的测试 工作; 一固化运行:是先用一定的工具将应用程序固化到目标机上,然后启动目标机,在 没有任何工具干预的情况下应用程序能自动地启动运行; l嵌入式软件的生成 中国民航大学硕士毕业论文 图4—3嵌入式软件的生成过程 如图4-3所示,嵌入式软件的生成分为三个过程: (1)源代码程序的编写。Linux提供了一个完整的编辑器家族系列,如Ed,Ex,Vi 和Emacs等。这里我们使用的是Vi编辑器,Vi是Linux系统的第一个全屏 幕交互式编辑程序,是UNIX/Linux系统中最常用的编辑器。 (2)编译生成各个目标模块。这里使用的是GNU CC(简称Gcc)是GNU项目中符合 ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。 而且Gcc是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系 结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。 (3)链接成可供下载调试或固化的目标程序。链接时应注意链接库的使用。静态 库是指编译链接时,把库文件的代码全部加入到可执行文件中。动态库是在 程序执行时由运行时链接文件加载。 2.调试 嵌入式软件经过编译和连接后即进入调试阶段,调试是软件开发过程中必不可少的 一个环节。嵌入式软件调试方法如图4-4所示,调试时采用的是在宿主机和目标机之间 进行的交叉调试,调试器仍然运行在宿主机的通用操作系统上,但被调试的进程却是运 行在基于特定硬件平台的嵌入式操作系统中,调试通过串口或网络进行通信。 3.固化运行 当程序调试完成之后,程序代码需要被完全烧入目标板的非易失性存储器(如ROM 或闪存)中,并且在真实的硬件环境上运行,这个过程叫做固化。 4.3 BootLoader的配置和烧写 中国民航大学硕士毕业论文 图4-4嵌入式应用软件调试方法 43.1 BootLoader介绍 BootLoader(引导加载)程序【捌是系统加电后首先运行的一段程序代码,用来初始 化硬件环境、改变处理器运行模式和重组中断向量,建立内存空间的映射图(有的CPU 没有内存映射功能如S3C44BOX),将系统的软、硬件环境带到一个由用户定制的特定状 态,然后加载操作系统内核。对于不使用操作系统的嵌入式系统而言,应用程序的运行 同样也需要依赖一个准备好的软、硬件环境,因此从这个意义上来讲,BootLoader对于 嵌入式系统是必需的。 BootLoader是依赖于目标硬件实现的,主要包括以下两方面241: 1.每种嵌入式微处理器体系结构都有不同的BootLoader.应用比较广泛的 BootLoader有VIVI、U—Boot、Blob、RedBoot等。有些BootLoader也可以支持 多种体系结构的嵌入式微处理器。如U-Boot同时支持ARM和MIPS体系结构。 2.BootLoader依赖于具体的嵌入式板级硬件设备的配置。比如板卡的硬件地址配 置、微处理器的类型和其他外设的类型等。也就是说,即使是基于相同嵌入式 微处理器构建的不同嵌入式目标板,要想让运行在一个板子上的BootLoader程 序同样运行在另一个板子上,仍需要修改BootLoader的源程序。 中国民航大学硕士毕业论文 在嵌入式系统中,通常并没有像BIOS那样的固件程序(有的嵌入式CPU会在芯片内 部嵌入式一段短小的程序,一般用来将BootLoader装载进RAM中,它有点类似BIOS的 功能,但远比BIOS弱),因此在一般典型的系统中,整个系统的加载启动任务就完全由 BootLoader来完成。在一个基于ARM的嵌入式系统中,系统在上电或复位时通常都从地 址Ox00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader。通过 这段小程序可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带 到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 大多数BootLoader都包含两种不同的操作模式:启动加载模式和下载模式12-q。 。 1.启动加载模式 在这种模式下,BootLoader从目标机上的某个固态存储设备上将操作系统加载到 RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式,因 此在嵌入式产品发布时,BootLoader必须工作在这种模式下。 2.下载模式 在这种模式下,目标机上的BootLoader将通过串口、USB接口或网络等通讯手段从 开发主机上下载内核映像和根文件系统映像等到RAM中。然后可以再被BootLoader写 到目标机上的固态存储介质上,或者直接进征系统的引导。前一种功能通常用于第一次 烧写内核与根文件系统到固态存储介质时或者以后的系统更新时使用;后者多用于开发 人员在前期开发的过程中。工作于这种模式下的BootLoader通常都会向它的终端用户 提供简单的命令行接口。 BootLoader与主机之间进行文件传输所用的通信设备及协议,最常见的情况就是通 过串口与主机之间进行文件传输,传输协议通常是Xmodem/Ymodem/Zmodem协议中的一 种。但是串口传输的速度是有限的,因此通过以太网连接并借助TFTP协议或是通过USB 接口来下载文件是一个更好的选择。 从操作系统的角度看,BootLoader的总目标就是正确的调用内核来执行。另外由于 BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader都分为stagel和 stage2两部分H1,依赖CPU体系结构的代码,比如设备初始化代码等,通常都放在stagel 中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2通常用C语言 来实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。 BootLoader的stagel通常包括以下步骤闭(以执行的先后顺序): 1.硬件设备初始化。 2.为加载BootLoader的stage2准备RAM空间。 3.拷贝BootLoader的stage2到RAM空间。 4.设置堆栈。 5.跳转到stage2的C程序入口点。 BootLoader的stage2通常包括以下步骤(以执行的先后顺序): 1.初始化本阶段要使用到的硬件设备。 中田民航大学硕士毕业论文 2.检测系统内存映射。 3.将内核映像和根文件系统映像从Flash读到RAM。 4.为内核设置启动参数。 5.调用内棱。 4,3.2删配置和烧写 VIVI是由韩国MIZI公司开发的专门用于ARM产品线的一种BootLoader,VIVI目前 只支持使用串口和主机通信。vivi也有启动加载和下载两种工作模式,在启动加载模式 下系统可以在一段时间后自行启动Linux内核,这是vivi的默认模式。在下载模式下, vivi为用户提供了命令行接口,通过该接口可以使用vivi提供的一些命令.见表 表4-I vivi常用命令 命令 功能 Load 把二进制文件载入Flash或者ARM Part 操作MTD分区信息。显示、增加、删除、复位、保存MID分区 Param 设置参数 Boot 启动系统 Flash 管理Flash,如删除Flash的数据 对vivi的配置,可以通过: {}iake distclean 精Gske嘴nuconfig 来进行配置,配置界面如图4-5所示 幽4-5 vIVI陀崔界面 中用民航上学顿十毕业论立 可根据自己的开发板的具体硬件电路进行配置。其中主要是: 1.System Type一) CPU设置.支持的Flash设置等。 2.General Setup vivi基地址设置.CPU指令数据Cache开关,电源管理设置等。 3.Serial Fort—一) 串口设置,包括支持的串口.选用的协议.串口提示符设置等。 4 Memory Technology Devices(婀D)一) 内存设备的设置,包括NAND Flash,NOR Flash驱动等。 配置完成后,保存新的vivi配置。输入命令make开始编译.编译完成后在当前目 录下得到新的vivi文件,并将其拷贝到Windows系统下的任何盘中,如c:\盘。将开发 板和Pc机通过简易JTAG下载扳相连,并将Flash烧写软件sjf2410.exe拷贝到c:\下, 在Windows的命令行模式下进入到c:\盘符,执行命令sjf2410/f:vivi。就进入烧写 流程,最后成功烧写界面如图4-6所示。 圈4_6 vivi烧写界面 4.4 Unux内核编译 编译嵌入式Linux内核都是通过make的不同命令来实现的,它的执行配置文件就是 Makefile。Linux内核中不同的目录结构里都有相应的Makefile,而不同的址akefile 又通过彼此之间的依赖关系构成统一的整体。共同完成建立依赖关系、建立内核的功能。 内核的编译橄据不I司的情况会有不同的步骤.但其中最主要的分别为3个步骤:内 核配置、建立依赖是系.建宦内核。 1_内核配胃 中国民航大学颧t毕业论i 第一步内核配置中的选项主要是用户用来为目标扳选择处理器架构的选项,不同的 处理器架构会有不同的处理器选项,比如ARM就有其专用的选项如“Multimedia capabilities port drivers”等。因此,在此之前,必须确保在根目录中_lakefiIe里 “ARCH”的变量值已经设定了目标扳的类型。 接下来就是进行内核配置.内棱支持4种不同的配簧方法.这几种方法只是与用户 交互的界面不同,其实现的功能是完全一样的。每种方{去都会通过读入一个默认的配置 文件——根目录下的“.confJg”胯藏文件。当然,我们也可以自己加载其他配置文件, 还可以将当前的配置保存为其他名字的配置文件。这4种配置方式如下: 一make config:基于文本的最为传统的配置界面,系统会为每个配置选项让你选 择,比较烦琐,不推荐使用: 一阻ke menuconfig=基于文本选项的配置界面.字符终端下推荐使用; 一make xconfig:基于)(Window图形窗口模式的配置界面; 一make oldconfig:自动读八“.config”配置文件,并且要求用户设定前次没有 设定过的进项: 在这4种模式中,make menuconfig使用最为广泛,其配置界面如图4—7所示。 削4—7配置Linux内棱 从图中可以看出,Linux内核允许刚户对其各类功能惩项配置(一÷指示),每个功 能选项内部还有各个详细的功能设置,选项前面都有个括号,可以通过按辛格键或“Y” 键表示包含该选项,按“N”表示不包音该选项。选中某个选项后括号内以“+”提示. 如足没有选中,括号内为宅.另外还宵一种是以字母”M”提示的,这表示把该选项编 译成模块.可以动态加载。 为了方便配:螽:,内核挺供了“Load∽^lternate Configurat{On Fi Ie”和“Say{l 中周民航大学颈k毕业论空 Configuration to卸Alternate File”两个选项,这样我们就不需要每次配置内核时 都从头开始。 2建立依赖关系 由于内核源码树中的大多数文件都与一些头文件有依赖关系,因此要顺利建立内核 映像.内核源码树中的每个gakefile就必须知道这些依赖关系。建立依敕关系往往发 生在第一次编译内核的时候,运行“make dep”命令,它会在内核源码树中每个子目录 产生一个“.depend”文件。 3.建立内核 建立内棱可以使用。make zImage”或4make bzImage”命令,这里建立的为压缩 的内核映像。通常在Linux系统中,内核映像分为压缩的内棱映像和未压缩的内核映像。 其中.压缩的内核映像通常命名为zImage,编译完成后位于4arch/<architecture> /boot4目录中.其大小根据内核功能的多少而异.使用压缩的内核映像在内核启动时. 会自动增加一段代码进行解压。而末压缩的内核vmlinux,位于源码树的根目录中。 内核编译完成后,就可以用BootLoader通过串口或者USB口下载到Flash中。图 4_8所示就是内核启动时通过串口在宿主机上输出的信息。 圈4-8 Lint{x内桉启动幽 4.5本章小结 本章首先对基于ARM微处理器软件丌发的嵌入式Linux变义开发环境的搭建作了 详细介绍,采用宿主机、目标机开发模式。介绍了嵌入式软件实现过程中嵌入式软件开 发的过程步骤,即嵌入式软件的生成、调试和州化运行。最后埘嵌入式视频服务器运行 的操作系统嵌入式L_inux进行了设计,惜建好r嵌入式视频服务器软件丌发平台,为嵌 中国民航大学硕士毕业论文 入式视频服务器各个功能模块软件设计做好了准备工作。 中国民航大学硕士毕业论文 第五章嵌入式视频服务器软件设计 5.1视频图像采集模块 vide041inux(V4L)是Linux的影像串流系统与嵌入式影像系统的基础,是Linux kernel里支持影像设备的一组APIs,配合适当的视频采集卡与视频采集卡驱动程序, vide041inux可以让我们实现影像采集、AM/FM无线广播、影像CODEC、视频切换等功 能。vide041inux为2层式架构,最上层为vide041inux驱动程序本身,最下层架构则是 影像设备的驱动程序。这里我们用到的是vide041inux的最上层驱动程序,即vide041inux 本身所提供给程序开发人员的APIsl26l。 在Linux下,所有外设都被看成是一种特殊的文件,称为设备文件。系统调用是内 核和应用程序之间的接口,设备驱动程序则是内核和外设之间的接口,它完成设备的初 始化和释放、对设备文件的各种操作和中断处理等功能,为应用程序屏蔽了外设硬件的 细节,使得应用程序可以像普通文件一样对外设进行操作。这里主要针对设备文件 /dev/video,进行视频图像采集方面的程序设计。 5.1.1 vide041inux支持的数据结构及其用途 vide041inux编程时要包含头文件,其中包含了vide041inux的数据结构和函数定义 IZTllm!: 1.video—capability:图像设备基本信息(设备名称、支持的最大最小分辨率、 信号源信息等) name[32]设备名称 maxwidth maxheight minwidth minheight channels信号源个数 type是否能采集图像,彩色还是黑白,是否能裁剪等。 2.video_picture:图像的各种属性 bri ghtness明暗度(O’65535) hue色调 colour contrast对比度 whi tenesS 35 中国民航大学硕士毕业论文 depth(8 l 16 24 32) palette(VIDEO_PALETTE—RGB24 VIDEO_PALETTE RGB565 I VI DEO_PALETTE—JPEG VI DEO_PALETTE—RGB32) 3.video—channel:各个信号源的属性 channel信号源的编号 name tuners type类型(VIDEO_TYPE_TV IDEO TYPE_CAMERA) norm制式(PAL NSTC SECAM AUTO) 4.video—window:包含关于capture area的信息 x窗体中的X坐标. Y窗体中的Y坐标. width图像的宽度. height图像的高度. chromakey色度关键值的RGB32主序值. flags附加标记. clips裁剪矩形列表.(只写) cl ipcount裁剪矩形的数量.(只写) 5.video__mbuf利用咖ap进行映射的帧的信息 size每帧大小 frames最多支持的帧数 offsets每帧相对基址的偏移 6.video_mmap用于map(内存映射) 根据实际USB摄像头的特性,在实际编程实践中定义了数据结构vdIn来表示,它几乎 包括上面介绍的所有特性。其定义如下: struct vdIn{ int fd: char爿cvideodevice : struct v i deo_map vmmap; struct video—capability videocap: int mmapsize: struct video—mbuf videombuf: struct video_picture videopict: struct vi deo—channel videochan: int cameratype: char*cameraname: 中国民航大学硕士毕业论文 char bridge[9]: int palette: int grabMethod: uns i gned char*pFramebuffer: unsigned char木ptframe: int framesizeIn: int bppIn: int hdrwidth: int hdrheight: int ): formatIn: 5.1.2 vide041 inux视频图像采集流程 图5-1 vide041inux视频图像采集流科 Vide041inux视频图像采集流程如图5一l所示。 37 中国民航大学硕士毕业论文 1.视频设备开启 struct vdIn宰vd: if((vd一>fd=open(vd一>videodevice,O RDWR))==一1) exit—fatal(”ERROR opening V4L interface”): 2.获取视频信息和图像信息 struct vdIn木vd;//获取设备相关信息 if(ioctl(vd一>fd,VIDIOCGCAP,&(vd->videocap))==-1) exit—fatal(’Couldn’t get videodevice capabi 1 ity”): //获取图像相关信息 if(ioctl(vd一>fd,VIDIOCGPICT,&vd一>videopict)<0) exit—fatal(”Could not get videopict params with VIDIOCGPICT’): 其中ioctl是设备驱动程序中对设备的i/o通道进行管理的函数。调用如下:int ioctl(int fd,unsigned long cmd….):fd是用户程序打开设备时使用open函数返回的 文件标示符,cmd是设备的控制命令,省略号是一些补充函数。上面利用VIDIOCGCAP来 取得视频设备文件的性能参数,包括名称、类型、通道数、图像宽度、图像高度等。并 存放至Uvideo—capability结构里。 3.初始化采集窗口、颜色模式、帧状态 vd一>hdrwi dth=wi dth: vd一>hdrheight=height: vd一>format In 2 format: 设置图像格式位为JPEG格式,大小位640X480或320×240。 4.捕捉视频帧数据 read(videoIn.fd,videoIn.pFramebuffer,size): 这里采用的是直接读取视频设备,将视频设备作为设备文件一样直接读取每帧视 频图像,然后经UDP协议的IP组播方式发送出去。 5.关闭视频设备 close(vd一>fd): 视频图像的采集主要有两种方法【捌:一种是内存映射方式,另一种就是直接读取。内 存映射mmap0系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件 被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不必再调用 read0,write()等操作。 5.2图像采集驱动程序模块 视频图像的采集工作是由图像传感器M1360和视频压缩芯片ZC0301完成的, ZC0301通过USB口与ARM9微处理器¥3C2410A相连。因此,驱动程序的主要工作 中国民航上学顿1-毕业论空 实际上就是实现ZC0301 USB接口的Linux驱动。USB摄像头驱动程序是一个比较复杂 的模块,因为这不仅关系到摄像头内部CMOS图像采集芯片的操作,而且还和USB接口 操作有关,独立开发的难度相对比较大。关键是Vimicro公司并末公开ZC0301的详细 技术资料。不过,笔者在互联网上找到了支持ZC0301的驱动程序补丁,需要移植到嵌 入式视频服务器中.经过多次调试.终于移植成功。 l-我们把下载的补丁包放到内核源码目录下的drivers/usb子目录下,通过tar —xvzf usb-2.4.31.patch.gz解压,并用命令patch—pl<usb-2.4.31.patch打上补 丁,这时就会在此目录下看到名为spcaSxx的文件夹。由于内核版本的原因,在 /armlinux/kernel/driver/usb的目录中的Makefile和config.in中找不到对应的关 键字,此时会有一些错误,并将错误放在Makefile.rej和confi岳in.rej两文件中,打开 两个文件,分别将其中前面有“+”的文字加到Makefiie和config.in中对应的分类中 即可。 2.编译内核。 在arm linux的kernel目录下功ake menuconfig。首先<}>选择Multimedia device一> 下的Video for linux.然后USB support一>USB Multimedia devices 选项下 应该有<M> USB SPCA5XX Sunplus Vimicro Sonix Cameras,要把它配置成∞dule。 3.make dep;眦ke zImsge:mRke modules。就会在arch/arm/boot下生成zImage, 这就是我们生成的最新内核,将此内核通过终端下载到开发板中。此时文件央 drivers/usb/spcaSxx中会生成spca5xx o,spcadecoder.o,spca_core.o三个文件,这 就是编译生成的USB摄像头驱动模块。 4.用新内核启动.insmod这三个.oR件(可以不用加载spcadecoder.o)。摄像头就加 载成功,也可用modprobe spcaSxx.o命令,此命令会自动去加载其要支持的.oR件。 酗5 2削像求兆驱动安装测试岫 中国民航大学硕士毕业论文 图像采集驱动安装测试图如图5—2所示,支持ZC0301的驱动程序补丁安装成功时, 会在文件目录/dev/v41下生成videoO设备文件,通过对/dev/v41/videoO设备文件读写来获 取视频压缩芯片ZC0301采集的视频流。 5.3嵌入式WEB服务器Boa的移植 嵌入式设备资源一般都比较有限,并且不需要能同时处理很多用户的请求,因此这 里不使用Linux下最常用的如Apache等服务器,而需要使用一些专门为嵌入式设备设 计的Web服务器,这些Web服务器在存贮空间和运行时所占有的内存空间上都非常适合 于嵌入式应用场合。典型的嵌入式Web服务器有Boa和thttpd等,它们和Apache等高 性能的Web服务器主要的区别在于它们一般是单进程服务器,只有在完成一个用户请求 后才能响应另一个用户的请求,而无法并发响应,但这在嵌入式设备的应用场合里已经 足够了。 Boa是一个单任务的HTTP服务器,跟传统的Web服务器有所不同,它不为每一个访 问的连接单独开启一个进程,而是通过建立HTTP请求列表来处理多路HTTP连接请求。 Boa对所有活动的HTTP连接在内部进行处理,而只为每个CGI程序启动新的进程啪1,因 此Boa在同等硬件条件下节省了系统资源,显示出了更快的速度,这对嵌入式系统来说 至关重要。同时它还具有自动解压文件、自动创建目录等功能,在嵌入式系统中具有很 高的应用价值。 如本文第四章所述,在宿主机建立交叉开发环境后,从www.boa.org下载Boa源码, 此处使用版本为0.94.13,将其解压并进入源码目录的src子目录 #tar zxvf boa一0.94.13.tar.gz #cd boa-O.94.13/src 生成Makefile文件 #./configure 修改Makefi le文件,找到CC=gcc,将其改成CC=arm—l inux—gcc,再找到CPP=gcc —E,将其改成CPP=arm-linux-gcc—E,并保存退出。 然后运行make进行编译,得到的可执行程序为boa,将调试信息剥去,得到的最后 程序只有约60KB大小。 #make #arm一1 i nux—strip boa 接下来需要对Boa配置文件进行修改。Boa服务器需要在/etc目录下建立一个boa目录, 里面放入Boa的主要配置文件boa.conf。在Boa源码目录下已有一个示例boa.conf, 可以在其基础上进行修改,设定运行时的变量。其中主要设计项有: 1.Port 8;监听的端口号,缺省都是80,一般无需修改 2.ErrorLog/var/log/boa/error—log;创建错误日志文件 4n 中国民航大学硕上毕业论文 3.DocumentBoot/耵冒.创建HTML文档的主目录,挂载自行设计的ActiveX控件 页面。 4.mime.types文件复制/etc目录下。 编写一个简单的HTML文档index.html,放在目标机开发板中嵌入式Boa服务器的 DocumentBoot/_硼目录下.index.html代码如下: <html> <head> <meta http-equiv=’Content-Type’content=’text/html:charset=gb2312。> <title>ActiveX控件例子</title> </head> <body> <p>嵌入式BOA服务器移植测试 中国民航大学</p> </body> </html> 图5-3是嵌入式WEB服务器Boa测试效果图。嵌入式WEB服务器Boa在嵌入式Linux 操作系统上移植成功。 图5-3嵌入式WEB服务器Boa测试附 中国民航大学硕:仁毕业论文 5.4视频数据网络传输模块 5.4.1视频数据网络传送协议的选择 视频图像传输与传统的文件传输有着明显的区别,传统文件的传输对于传输的延迟、 抖动没有过多的要求,但是要求有严格的差错控制和重传机制。视频图像传输在传输的 实时性、同步性上要求很高,并且要求传输延迟小。视频图像传输能够忍受分组造成的 差错和反常,也可以忍受由于没有重传或者纠错机制而导致的分组丢失或延迟,但却无 法忍受由于基于重传的差错机制引起的显示不连续或显示混乱。视频图像传输有以下几 个特点m1: 一连续性、实时性; 一占用较大的网络带宽; 一需要精确的时间控制; 一需要具有广播和多播的功能; 一允许一定的传输误码; TCP/IP协议是一种网络操作系统互连和通信的工业标准。将系统构建在TCP/IP之 上,可以拓宽其适用范围。但是,单纯的TCP/IP协议已经很难适用视频通信,特别是 连续的媒体流通信的要求。TCP和其它可靠的传输层协议与UDP相比不适合实时视频的 原因主要有以下几个方面口羽: 1.TCP的重传机制 TCP/IP协议中,当发送方发现数据丢失时,它将要求重传丢失的数据包,但这将需 要一个甚至更多的周期,根据TCP/IP的快速重传机制,需要三个额外的帧延迟。这种 重传机制对于实时性要求较高的音视频数据通信来说几乎是灾难性的,容易造成延迟和 断点、音频的不连续或视频的凝固等问题。 2.TCP的拥塞控制机制 TCP的拥塞控制机制在探测到有数据包丢失时,它就会减少它的拥塞窗口。而另一 个方面,音频、视频在特定的编码方式下,产生的编码数量是不可能突然改变的。在这 种状态下,整个网络的性能将受到极大的影响。 3.TCP报文头较大 TCP不适合于实时音视频传输的另一个缺陷是,它的报文头比UDP的报文头大。TCP 的报文头位40个字节,而UDP的报文头仅为12个字节。并且,这些可靠的传输层协议 不能提供时间戳和编解码信息,而这些信息恰恰是接收方的应用程序所需要的,所以TCP 也不适合传输实时的音视频信息。 4.TCP启动速度较慢 即使在网络运行状态良好、没有丢包的情况下,由于TCP的启动需要建立连接,因 42 中国民航丈学硕士毕业论文 而在初始化的过程中,需要较长的时间。而在一个实时音视频传输应用中,尽量少的延 迟是必要的。 可见,TCP协议不适合实时视频数据的传输,UDP(User Datagram Protoc01)是一种 简单的传输层协议。UDP是无连接的,不提供数据的重传和确认,可以提高传输效率, 并且UDP支持网络广播功能,适合进行网络视频传输。 5.4.2 IP组播技术 TCP/IP是一组完整的数据协议集,指两个最重要的协议:传输控制协议 (Transmission Control Protocol,TCP)和网络协议(Internet Protocol,IP).目前 TCP/IP协议已成为占主导地位的通讯协议,它能使各种业务在不同的网上实现互联互 通,从技术上为网络融合奠定了基础。主要特点有:开放的协议标准,可以独立于特定 计算机和操作系统的开放方式。 独立于特定的物理网络硬件,可以运行在多种网络传 输介质上。 IP组播即IP Multicast,其概念最早于1988年出现在Steve deering的博士论文中, 在1989年Steve deering对标准IP网络层协议进行了扩展,提出了IP组播规范;1999 年IP组播具有了发展的三个关键条件口31:1.支持IP组播的路由协议:2.使用开放标准 的可测试管理协议;3.发展的商业机遇。从而使其进入高速发展阶段。 IPv4定义了3 种IP数据通信方式:a点点通信;b全网广播;C组播。点点通信是指两个IP地址间进 行的数据通信;全网广播是指在IP子网内向所有网内IP地址以广播的方式发送数据包, 所有子网内的IP站都能收到全网广播:组播是指在IP网上对一组特定IP地址进行数 据传送,是居于以上a与b之间的通信方式。 IP组播是利用一种协议将IP数据包从一个源传送到多个目的地,将信息的拷贝发 送到一组地址,到达所有想要接收它的接收者处。IP组播是将IP数据包。尽最大 努力”传输到一个构成组播群组的主机集合,群组的各个成员可以分布于各个独立的 物理网络上。IP组播群组中成员的关系是动态的,主机可以随时加入和退出群组,群 组的成员关系决定了主机是否接收发送给该群组的组播数据包,不是某群组的成员主机 也能向该群组发送组播数据包。 由于网络信息的交互性和互动性,使网络中的信息传输量日益剧增,网络传输的瓶 颈问题日益突出。在多媒体应用中,视频传输带来的网络带宽问题更突出些。当11个IP 地址同时接收网络多媒体视频流时∞1,假设每个视频流所需传输带宽为1.5M,按现在网 络结构,所需带宽为n*1.5M,同时会带来无法忍受的网络延时和抖动。现有的大部分网 络多是使用TCP/IP点到点的协议构置,因此我们考虑的重点是如何在现有网络条件下 不作过多的改变来实现视频的传输,即IP组播解决方案要与现有网络兼容。同点点通 信和全网广播相比,组播效率非常高,可以节省网络带宽和资源。在一个组播环境里, 不论网络中的用户数目是多少,服务器发送一个视频流,由网络中的路由器或交换器同 43 中国民航大学硕士毕业论文 时复制出n个视频流,广播到每个用户,仅需和一个用户同样的带宽。可见,IP组播 能够有效地节省网络带宽和资源,管理网络的增容和控制开销,大大减轻发送服务器的 负荷,从而高性能地发送消息。另外,组播发送的信息能同时到达用户端,时延小,而 且网络中的服务器不需要知道每个客户机的地址。所有的接收者使用一个网络组播地 址,可实现匿名服务,并且IP组播具有可升级性,与新的IP和业务能相兼容。 综上所述,多媒体视频流对数据可靠性要求不高,适当的数据丢失不会过多影响视 频播出的实际效果。虽然多媒体视频流对网络传输延时和抖动比较敏感,而IP组播在 网络中延时与抖动是很少的。所以用IP组播来传输IP视频信号是可行的。 5.4.3视频图像网络传输模块的实现 考虑到用户数目的增多和网络的负荷,本文采用基于UDP协议的IP组播方式传送视 频数据。视频图像首先经CMOS传感器M1360和视频压缩芯片ZC0301压缩编码,转换成 JPEG格式的图像,然后由Linux APls vide041inux采集,采集的一帧帧JPEG格式视 频图像经网络传输模块发送进IP组播组。IP组播组内的客户端软件接收组内广播的数 据,然后经基于IPicture接口的ActiveX控件实时显示。 为了提高数据传输的效率,实现真正的并发执行。在main()主线程外创建了一个子 线程,通过子线程的入口函数实现视频数据的网络传输。利用基于UDP协议的IP组播 技术实现视频图像数据收发流程图5—4所示。 视频图像网络传输模块分为服务器端发送部分和客户端接收部分。视频图像网络传 输模块服务器端发送部分的实现主要是基于Linux Socket编程m1,主要步骤及关键代 码实现如下: 1.创建Socket s=socket(AF INET,SOCK DGRAM,O): if(s=:-1) bail(”socket()”): 2.设置本地地址和端口 adr—srvr.s i n—fami ly=AF_INET; adr srvr.S i n port=htons(0): adr—srvr.sin_addr.s_addr=htonl(INADDR_ANY): 3.将socket和本地地址绑定 z=bind(S,(struct sockaddr木)&adr—srvr;len—srvr): if(z==一1) bai l(%i nd()”): 4.设置组播地址和端口号 servAddr.S i FI_fami ly=h一>h—addrt ype: 中国民航大学硕士毕业论文 memcpy((char*)&servAddr.sin—addr.s_addr,h一>h—addr~l i st[0], h->h_l ength): servAddr.s i n_port=htons(SERV—PORT): a.服务器端 b.客户端 图5-4视频图像收发流程图 5.设置组播组的属性,设置组播数据的TTL值,组播报文环路无效 if(setsockopt(S,IPPROTO_IP,IP_MULTICAST_TTL,&ttl,sizeof(ttl))<0) { printf(”cannot set ttl=%d\n”,ttl): exit(1): } ret=setsockopt(S,IPPROTO_IP,IP_MULTICAST—LOOP,(char*)&optval,sizeof(int) 45 中国民航大学硕士毕业论文 ): if(ret<0) { printf(’setsockopt Error!”): exit(1): ) 6.获得一帧视频图像 JPEG文件大体上可以分成两部分:标记码(Tag)和压缩数据。JPEG的每个标记 都是由2个字节组成,其中结束标记为OXFF OXD9。 for(i=1024:i<insize:i++){ if((buf[i]一OxFF)&&(buf[i+1]一0xD9))return i+2: read(videoIn.fd,videoIn.pFramebuffer,size): 7.发送视频图像 sendto(S,videoIn.ptframe,picsize,0,(struct sockaddr木)&sevrAddr,sizeof (servAddr)): 视频图像网络传输模块客户端接收部分采用Windows Socket 1.0套接字规范编程, 客户端必须加入组播组,才能接收数据。前面的三个步骤同发送端一样,第4个步骤以 后不同: 4.加入组播组 ip_mreq mcast: mcast.imr—interface.S_un.S—addr=INADDR_ANY; mcast.imr_multiaddr.S—un.S_addr=m_dwMultiAddr: int nRet=::setsockopt(socketClient, (char*)&mcast,s i zeof(mcast)): IPPROTO_IP, if(nRet!=SOCKET ERROR) { IP_ADD_MEMBERSHIP, return TRUE: ) 5.接收单帧视频图像 recvfrom(m_pCtrl一>socketCl i ent,m_pCtrl一>recvBuf,NUM,0,(SOCKADDR ,lc)&m_pCtrl一>addrSrv,&m_pCtrl一>addr—len): 6.IPicture接口显示视频图像 使用IPicture接口显示视频图像将在基于IPicture接口的视频图像显示模块中详 细介绍。 中国民航大学硕士毕业论文 5.5基于IPicture接口的视频图像显示模块 JPEG图像格式扩展名是JPG,其全称为Joint Photograhic Experts Group。JPEG 图像格式采用十分先进的压缩技术,它用有损压缩的方式去除冗余的图像和彩色数据, 获取极高压缩率的同时能展现十分丰富生动的图像,即用较少的磁盘空间得到较好的图 像质量,成为网络最受欢迎的图像格式汹1。可作为图像处理的重要开发工具的Visual C++6.0的MFC库仅对没有经过任何压缩的BMP位图文件有着良好的支持,没有直接的方 法来显示JPEG或其他格式的图片。虽然有许多处理和显示JPEG格式图像的ActiveX控 件,但多数实现代码过于复杂而且使用不太方便。借助于IPicture的COM接口大大简 化了JPEG格式图像在Vc开发环境中的显示。 IPicture接口是Window95及以上操作系统支持的一个COM(Components Object Model)接口,用来管理图像对象及其属性,图像对象为位图、图标和图元提供了一个 语言无关的抽象,与标准的字体对象一样,系统提供了对图像对象的标准实现∞1。 IPicture接口支持Windows常见的图像格式如BMP、JPEG、GIF等。图像对象的主要接口 包括IPicture、IPictureDisp,后者从Idispatch派生,此接口允许通过OLE的方法来访 问图像的属性,因此IPicture接口需由具有OLE的图像对象实现.另外,图像对象还支 持IPersistStream接口,能读写IStream接口的实例.任何对象均可使用图像对象来读 写图像并把它作为对象持久化的一部分,而实用函数OleLoadPicture简化了基于流环境 中图像对象的创建及显示过程. 函数01eLoadPicture是从包含有图像数据的流中装载图像。该函数简化了基于流的 图像对象的创建过程,可以创建一个新的图像对象并且用流中的内容对它进行初始化。 其函数原型如下: STDAPI OleLoadPicture(IStream*pStream,//指向包含有图像数据流的指针 LONG 1Size,//从流中读取的字节数 BOOL fRunmode,//图像属性对应的初值 REFIID riid,//涉及到的接口标志,描述要返回的接口指针的类型 VOID ppvObj//在rrid中用到的接口指针变量的地址 ): 通过IPicture接口显示JPEG视频图像的主要步骤及部分代码实现如下: 1.从堆分配指定字节的内存区域,准备读入一帧JPEG图像的数据 HGLOBAL hGlobal=GlobalAlloc(GMEM MOVEABLE,jpgsize): 2.锁住一个全局的内存区域对象,复制视频图像数据到内存区域。 void木pData=G10balLock(hGlobal): memcpy(pData,m_pCtrl一>recvBuf,jpgsize): G10bal Unlock(hGlobal): 47 中国民航大学硕士毕业论文 3.在全局对象创建IStream指针,将视频数据生成流对象 CreateStreamOnHGlobal(hGlobal,TRUE,&pStream): 4. 函数OleLoadPicture从包含视频图像数据的流中装载图像,并返回IPicture 接口指针. OleLoadPicture(pStream,jpgsize,FALSE,IID—IPicture,(LPVOID 木)&pPicture): 5.得到图像的宽和高 pPi cture一>get_Wi dth(&nWi dth): pPi cture一>get_He i ght(&nHe i ght): 6.在当前窗口显示图像 pPicture一>Render(hDC,0,0,rect.Width(),rect.Height(),0,nHeight,nWidth ,一nHeight,NULL): 5.6 ActiveX控件实现模块 5.6.1 ActiveX控件的设计与实现 ActiveX是Microsoft公司提出的使用组件对象建模(component object model,COM) 的一种开放式技术,主要用于网络的对象链接和嵌入技术(OLE),它与具体的编程语言 无关。它是一种面向对象的组件系统,这些组件对象为用户提供了各种不同的功能,使 得不同软件供应商提供的组件可在二进制级进行相互连接和通信,对象通过接口实现组 件之间及组件与系统的相互作用口刀。 ActiveX控件最突出的特点是属性(Properties)和方法(Methods),它提供一些 方法和属性供客户程序使用,客户程序一般称为自动化控制器或容器应用程序,通过调 用方法、设置属性来控制和使用ActiveX控件侧。在特定条件下,ActiveX还可以产生 相当于Windows编程中的通知消息的事件(Events),以通知客户程序当前发生了什么 事情。对ActiveX控件进行编程关键就在于如何使用它的方法、属性和事件。ActiveX控 件的前身是OLE控件,它基于COM服务器进行操作,与开发平台无关,在一种编程语 言上开发的ActiveX控件可以无需任何修改,即可在另一种编程语言中使用,其效果如 同使用Windows通用控件一样。在VC++中开发的ActiveX控件,可方便地应用于VC、 VB或ASP等编程语言环境中。ActiveX控件在不同的编程语言之间架起了一座桥梁, 拓展了各种编程语言开发程序的能力,可实现快速小型的组件重用、实现代码共享,从 而提高编程效率,缩短开发周期。 为了减轻嵌入式视频服务器客户端操作的负担,提高软件升级和维护的方便性,这 里将视频图像显示模块和视频数据网络传输模块中的客户端接收部分封装在ActiveX控 件中通过网页进行发布。在嵌入式视频服务器上移植嵌入式WEB服务器Boa,在ActiveX 中国民航大学硕士毕业论文 控件中实现与视频服务器进行网络通信、视频图像显示等功能,并通过WEB服务器发布, 同时WEB服务器接收远程客户端的监控请求,反馈本地视频服务器的数据存储信息。用 户通过浏览器访WEB服务器时,ActiveX控件就会经过网页传输到客户端并自动下载安 装,实现远程实时监控。其层次如图5-5所示: 远程客户端 Browser 客户端软件 (ActiveX控件) - :WEB 视;服 频;务 服 : ● 巽∞ 务: 器: ● ● ● ● ◆ ActiveX控件发布 工 数据监控交换模块 视频服务器软件处理 图5—5 ActiveX层次结构图 本嵌入式视频服务器采用三层结构,WEB服务器Boa作为中间接口层直接移植到视 频服务器中。WEB服务器用来发布ActiveX控件,接受远程客户的监控请求,并反馈嵌 入式视频服务器的数据存储信息。这样一旦嵌入式视频服务器和ActiveX控件建立通信, 就可通过Socket套接口进行视频数据的组播发送传输。 Visual C++提供了两个途径开发ActiveX:MFC和ATL(active template library)。 使用MFC开发ActiveX控件比较容易,不必关心控件接口的细节。只要把注意力集中在 控件本身的功能上,但是生成的控件比较大。而且,客户端如果要运行此ActiveX控件, 必须具有相应版本MFC类库的DLL使用ATL不涉及MFC类库,生成的控件相对较小,但 开发者必须了解CoM和OLE的技术细节。因此,利用MFC ActiveX ControlWizard向导 创建ActiveX控件的框架呻1。向导自动产生三个类:CmyNameApp,CmyNameCtrl和 CmyNamePropPage.CmyNameApp类派生于Col eControlModule,而ColeControlModul e 类是从CWinAPP类派生的,可以把ColeControlModule类看成是一个应用程序类,其实 例表示了控件程序本身,CmyNameApp类就相当于前面创建的单文档应用程序的应用程序 类。CmyNameCtrl派生于ColeControl类,而ColeControl类是从CWnd类派生的,是一 个窗口类,相当于单文档应用程序中的主窗口类,或者视类,因此对控件窗口进行的操 作都将在CmyNameCtrl类中完成。嵌入式视频服务器的视频数据网络传输客户端接收部 分和基于IPicture接口的视频图像显示模块就在CmyNameCtrl类中实现。 CmyNamePropPage类派生于C01ePropertyPage类,而C01ePropertyPage类派生于 Cdialog类,它以一种类似于对话框的图形界面显示一个自定义控件的属性,也就是晚, 49 中国民航大学硕士毕业论文 C01ePropertyPage类是用来显示myName控件的属性页的。 5.6.2 ActiveX控件的打包 在WEB页面中使用ActiveX控件,须对它进行包装,将有关的动态链接库及信息 文件(INF文件)压缩到一个扩展名为CAB(Cabinet)的文件。CAB压缩包形式是微 软公司在发行Windows 95、Plus 195等软件时采用了一种全新的压缩包形式,它具有压 缩率高、安全性好、不易受到破坏等优点,深受广大用户及软件制作商的欢迎。目前制 作CAB文件的软件有主要有Cabarc和WinCAB。Cabarc是一个用于压缩、列出压缩包 中的文件、解压CAB文件的工具。Cabarc支持通配符和递归路径搜索,Cabarc使用一 个类似于常用的压缩工具的命令行界面。 使用Cabarc压缩自行设计的ActiveX控件的命令:CABARC N JPEGVideo.cab JPEGVideo.inf JPEGVideo.OCX MFC42D.DLL MSVCRTD.DUL. 其中N后面的JPEGVideo.cab为要生成的包文件名,剩下的为要打成包的文件。在 使用OBJECT标记将ActiveX控件嵌入网页中时,用于指定下载位置的CODEBASE属 性可以指向.cab文件。在CAB文件中打包MFC ActiveX控件时,允许控件中包 含.inf文件以便对ActiveX控件的安装进行控制;允许对相关DLL进行命名并提供 位置;允许代码签名以及自动压缩代码以便更快地进行下载。 5.7 HTML页面制作模块 ActiveX控件是可在任何窗口中使用的交互对象,区别于一般的Windows控件。把 打包好的ActiveX控件通过OBJECT标签插入到HTTP页面中,并经WEB服务器发布,远 程客户端通过标准浏览器访问嵌入式视频服务器中HTTP页面实现远程实时视频监控。 实现代码如下: <html> <head> <meta http—equiv=”Content—Type”content=”text/html:charset=gb23124> <title>ActiveX控件例子</title> </head> ‘ <body> <p>基于ARM的嵌入式视频服务器</p> <ob iect classid=”clsid:6E66406A一80C1—44BE一849C一51893248866C” id=“Act ivece8 width=9 400“height=6 300“ CODEBASE=”http://10.5.26.134/wwwl/Activece.cab#Version=l,0,0,O”> </object> 中闻民航大学颈t毕业论立 </body> </html> 其中OBJECT标记的CODEBASE属性指定从中下载控件的位置。CODEBASE可以成功 地指向一组不同的文件类型。这里CODEBASE指向c^B文件,可以引用支持DLL并对 CAB文件进行签名。通过IE浏览器访问嵌入式视频服务器.就可进行远程实时监控。 在实验室局域网中,利用三台监控主机对嵌入式视频服务器访问。将嵌入式视频服 务器的IP地址设定为:10.5 26.134.其余三台监控主机IP地址可随意设定,如 10.5.26.77。10.5.26.78,10.5.26.79.经测试:视频服务器向IP组播组每秒发送JPEG 格式的视频图像26帧,画面播放流畅、无明显延迟和抖动,清晰度较高,基本达到了 实时视频监控的要求。其监控页面效果如图5书所示。 圈5 6嵌入式视频服务器监控页面 5.8本章小结 本章详细论述了嵌入式视频服务嚣软件设计各个功能模块的设计思路及其关键代码 实现.这也是嵌入式视频服务器软件设计的主要内容.主要包括:视频图像采集模块, 图像采集驱动程序模块、嵌入武WEB服务器Boa的移植、视频数据网络传输模块、基于 IPicture接【]的视频图像显示模块,ActiveX控件实现模块和IITML页面制作模块。最 后。滴水丁霹P端访问服务器时得纠的实时监控界面。 中国民航大学硕士毕业论文 第六章结论与展望 本课题以当前流行的ARM微处理器芯片¥3C2410A和嵌入式Linux操作系统为基础, 针对横向科研项目研究试验的需要,设计并实现了具有较高性价比和实用价值的基于 ARM的嵌入式视频服务器,符合当前嵌入式视频监控系统的发展趋势。 基于ARM的嵌入式视频服务器主要由服务器端部分和客户端部分组成。服务器端部 分采用嵌入式WEB技术,实现了视频图像数据的压缩编码、采集和发送,可以直接连入 以太网,能够即插即用,具有体积小、易于管理维护、可靠性高,可实现无人监控等优 点。客户端部分采用基于WEB服务器的B/S(Browser/Server)服务机制,通过自行设 计ActiveX控件实现视频图像的实时显示,远程客户端无需人工安装软件,通过IE浏 览器就可直接访问视频服务器,大大降低了对远程客户端的软硬件要求。 远程客户端用户通过IE浏览器访问嵌入式视频服务器,实际测试效果表明,实时视 频图像传输流畅,无明显延迟和抖动,本嵌入式视频服务器具有可行性、稳定性和较高 的性价比,满足了实时视频监控的需要,具有一定的实用价值。 由于时间有限,本基于ARM的嵌入式视频服务器还存在着有待改进和完善的地方, 主要有: 一视频服务器传输采用的是提供不可靠传输机制的UDP协议。目前多采用针对 Internet上多媒体数据流的RTP/RTCP协议传输实时视频数据,它提供了多媒体 数据传输时的数据源标识、数据包丢失监测、重新排序和时间同步、接收者质量 反馈等功能; 一视频服务器只实现了监控现场远程实时显示,可通过CGI(公共网关接口)来实 现动态WEB技术,实现WEB服务器和浏览器的信息交互; 52 中国民航大学硕士毕业论文 致谢 在此,首先向我的导师李国副教授表示衷心的感谢。我在中国民航大学攻读硕士学 位的两年半时间里,导师李国副教授不论在学习上还是在生活上都给予了我极大的关怀 和帮助,使我在各方面获得了长足的进步。感谢李老师为我提供了良好的科研条件和学 习氛围,在本论文的选题、设计、撰写和修改的过程中,无不凝住着李老师的心血和汗 水。李老师严谨的治学态度和为人之道,使我终生受益匪浅。再次表达我对李老师的最 诚挚的敬意,祝愿李老师身体安康、工作顺利、合家幸福。 感谢同实验室的陈为清、李德兴、臧金梅、李炜峰同学,感谢他们对我学习和生活 上的帮助,特别是在毕业设计期间,通过同他们讨论我解决了遇到的问题,学到了许多 专业知识,在这里我真诚的祝愿他们在今后的人生道路上一帆风顺、事业有成。 感谢我父母,在我二十年的求学生涯中,他们为我倾注了大量的心血。正是他们默 默的无私奉献和鼓励,才使我能够顺利完成学业,在此,致以我最诚挚的敬意和最衷心 的谢意! 最后,向所有关心过我、帮助过我的人们致以最真挚的谢意1 53 中国民航大学硕士毕业论文 参考文献 [1]刘富强.数字视频监控系统开发及应用[M].北京:机械工业出版社,2003.卜2. [2]视频监控系统[EB/OL].http://www.capturar.com.cn/cava.html [3]夏惊涛,卢娜,穆道生.视频监控系统浅析[J].兵工自动化,2003(2):84—85. [4]许维超,宋春宁,胡桂明.嵌入式网络视频监控服务器的研究与设计[J].电视技术, 2004(10):86—88. [5]马姗姗,钱建生,程德强.基于H.264的远程视频监控系统的设计与实现[J].电视 技术,2004(6):77—79. [6]Real Time Streami ng Protocol[S].RFC2326,1998 [7]万加富,张文雯,张占松.网络监控系统原理与应用[M].北京:机械工业出版社, 2003.2-3. [8]2005年国内外视频监控业务市场研究报告[EB/OL].2005—06 [9]吴明晖.基于ARM的嵌入式系统开发与应用[M].北京:人民邮电出版社,2004.卜2 [10]ARM嵌入式教学实践教程[M/CD].武汉创维特信息技术有限公司,2004.卜2 [11]陈章龙.嵌入式系统-Intel StrongARM结构与开发[M].北京:北京航空航天大学出 版社,2002:17—18 [12]马忠梅,马广云,徐英慧等.ARM嵌入式处理器结构与应用基础[M].北京:北京航空 航天大学出版社,2002.18—19 [13]孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006.113—114 [14]李善平,刘文峰,王焕龙.Linux与嵌入式系统(第二版)[M].北京:清华大学出 版社,2006.33—34 [15]李炜峰.基于ARM9的嵌入式Linux驱动程序开发与应用[D].[硕士学位论文].天 津:中国民航大学.2007 [16]赵炯.Linux内核完全剖析[M].北京:机械工业出版社,2006.142—143 [17]吴明晖.基于ARM的嵌入式系统开发与应用[M].北京:人民邮电出版社, ‘ 2004.206-207 [18]Alessandro Rubini,Jonathan Corbet.Linux Device Drivers,2删Edition [M],0’Reilly,2001 [19]SBC-2410X使用手册VersionO.9[M/CD].广州友善之臂科技有限公司,2004 [20]¥3C2410A 32一BIT RISC MICROPROCESSOR USER’S MANUAL Revi sion 1.2 [M/CD].Samsung Electronics,1—4 [21]ZC0301 Preliminary Data Sheet[M/CD].Vimicro Corporation,2002 [22]彭小桢,郝福珍等.基于B/S的视频监控系统客户端的设计与实现[J].计算机工程 与应用,2007,43(24):208—21 l 气4 中国民航大学硕士毕业论文 [23]白伟平等.基于ARM的嵌入式BootLoader浅析[J].微计算机信息,2006,4-2:99- 100 [24]夏靖波等.嵌入式系统原理与开发[M].西安电子科技大学出版社.2006.1 19—120 [25]孙天泽,袁文菊等.嵌入式设计及Linux驱动开发指南[M].北京:电子工业出版社, 2006.96—97 [26]陈俊宏.Embedded Linux嵌入式系统原理与实务[M].北京:中国铁道出版社, 2004.184-185 [27]Lingzhi shi.基于vide041inux的视频设备编程[EB/OL].http://202.38.64.185 /semi nar/040409/v4 1.ppt [28]Vide04Linux Kernel API Reference vO.1[EB/OL].http://linux.bytesex.org/ v412/API.html,1999 [29]基于vide041inux的USB摄像头图像采集实现.[EB/OL].http://wWW.hhcn.org /maindoc/USB_Camera—base——on—Vide04Linux.pdf [30]LARRY DOOLITTLE,JON NELSON.Boa Webserver[EB/OL].http://嗍.boa.org,2000. [31]王军,吕海宝.基于UDP协议的视频图像传输的研究与实现[J].现代计算机,2002, (147):18—20 · [32]陈迪勇,赵伟.音视频远程监控系统的数据传输策略[J].武汉工业学院学 报,2005,24(3):54-57 [33]TCP/IP协议和IP组播的视频传输[EB/OL].http://www.Imtw.com/tech/ technical/200506/9442.html [34]Warren W.Gay.Linux Socket Programming by Example[M].Indianapolis: Macmi l lan Computer Pub,2000:303—310 [35]雷建忠,霍滨焱等.一种显示JPEG和GIF格式图像的简便方法及实现[J].应用科 技,2005,32(3):55—56 [36]刘显荣.用VC++实现数据库中图片的存取与显示[J].计算机应用研究,2005(5): 163-165 [37]夏惊涛,穆道生.基于ActiveX控件的视频监控系统客户端编程[J].广播与电视技 术,2006(1):85—87 [38]Davi d J.Krugl i nski,Scot Wi ngo,George Shepherd.Programmi ng Vi sual C++6.0 技术内幕(第五版)[M].北京:北京希望电子出版社,1999.157-158 [39]孙鑫,余安萍.VC++深入理解[M].北京:电子工业出版社,2006.662—666 55 中国民航大学硕士毕业论文 攻读硕士期间发表的论文 1.李国,秦培龙.ARM S3C44BOX中断开发方法.山西大学学报(自然科学版)(增 刊).2006,29(S1).10-12. 2.李国,秦培龙,李艳红.基于CP2200的嵌入式以太网接口设计.微计算机信息,2007, 7—2:32-34 3.秦培龙,李国,李艳红.基于S3C44BOX的BootLoader设计与实现.微计算机信息, 2008,I-2:153-155 4.秦培龙,李国,刘艳.基于B/S的嵌入式视频监控系统客户端软件的设计与实现,自 动化与仪表,已录用 56 基于ARM的嵌入式视频服务器设计与实现 作者: 学位授予单位: 秦培龙 中国民航大学 相似文献(10条) 1.期刊论文 孙弋.郭小玄.陈旸.任博涵.SUN Yi.GUO Xiao-xuan.CHEN Yang.REN Bo-han 基于Hi3510的Linux嵌入式 视频服务器的设计 -煤炭技术2009,28(11) 随着视频监控技术的发展,嵌人式视频服务器广泛应用于工业领域,本文介绍了1种基于Hi3510的Linux嵌入式视频服务器,将视音频信号进行采集、 H.264压缩编码、复合后传输到网络,采用RTP/RTCP协议实现了视音频压缩数据流的实时网络传输.本文主要分析了系统各组成模块的功能与实现方法,给 出了系统的结构框图和程序主流程图. 2.期刊论文 基于嵌入式Linux的实时视频服务器 -计算机工程2005,31(20) 介绍了一种支持视频实时采集、编码和传输的网络实时视频服务器.服务器基于嵌入式Linux系统,采用H.263视频编码技术和RTP/RTCP传输协议.给出 了服务器软件的总体结构以及图像采集、格式转换、H.263编码和RTP协议传输4个功能模块的实现,并对系统进行了测试和实验.实验结果表明,系统在保 证传输质量的同时具有良好的带宽适应能力. 3.学位论文 俞建如 基于嵌入式Linux的网络视频监控系统的研究和实现 2006 本文首先介绍视频监控系统的发展历程。在分析和比较各阶段视频监控系统优缺点的基础上,认为未来的视频监控系统必将是集数字化、网络化、 集成化和智能化为一体的综合系统,而以嵌入式视频Web服务器为核心的视频监控系统必将成为该系统前端系统的首选。 第二部分分析当前数字视频监控系统的关键技术之一:视频压缩技术。在对当前流行的视频压缩标准H.263、MPEG-4、H.264进行比较和分析的基础 上,选择采用H.263作为本论文的视频压缩标准。同时笔者对本系统中使用的USB摄像头的数据格式做了详细的分析。 第三部分介绍系统的硬件和软件平台,着重论述选择嵌入式Linux作为软件平台的原因以及Linux2.6.11核的移植过程。同时,本系统要考虑到对 USB普通摄像头的广泛支持,因此笔者对USB协议的结构、Linux下USB驱动的模型和USB视频驱动的模型进行了深入探讨,结合第二部分对摄像头数据格式 的分析,笔者实现了USB摄像头的Linux驱动。 第四部分讲解了以嵌入式视频Web服务器为核心的视频监控系统的实现过程,包括视频服务器的实现和视频客户端的实现。通过对二层、三层架构优 缺点的分析,笔者提出了四层架构的设计,该架构既有效克服了二层、三层架构的缺点,同时又能实现访问的集中控制、负载的均衡分配等功能。同时 笔者对该架构中存在的安全问题进行了深入讨论,提出了一种先授权后认证的安全控制策略。 文章最后总结本论文的工作及对未来的展望。 4.期刊论文 周强.费章君.王强.杨仕友.ZHOU Qiang.FEI Zhang-jun.WANG Qiang.YANG Shi-you 基于H.264的嵌入 式网络视频服务器的设计与开发 -计算机应用2010,30(2) 基于Freescale公司的IMX27视频处理芯片,设计、开发了一种网络视频服务器.服务器以裁剪的Linux为操作系统,服务端和客户端的交互通信采用多 线程和短连接的方式,有效地节约了系统资源,减小了对服务器CPU的占用率.为获取高清晰度的视频图像,应用自适应反交错算法分别对静止、运动图像进 行拼接和插值,实现了反交错图像变换,保证了数据的完整性,提高了图像的清晰度.最后给出了所开发服务器的具体应用实例,服务器的运行效果达到了预 期的设计目标. 5.期刊论文 辛建光.潘孟春.陈棣湘.蒋巧文.XIN Jian-guang.PAN Meng-chun.CHEN Di-xiang.JIANG Qiao-wen 嵌 入式Web视频服务器的设计 -兵工自动化2005,24(1) 嵌入式Web视频服务器监控系统以ARM芯片作微处理器,摄像机视频信号压缩采用MPEG-2编码格式并在嵌入式Linux中内置服务器应用程序.数据采集压 缩模块实时采集视频数据,压缩后发给网络传输模块,媒体流经ARM芯片发到Internet.该服务器直接浏览Web视频,授权用户可控制摄像机或对系统配置操 作,实现远端现场监控. 6.学位论文 周俊华 基于ARM9网络视频监控系统的实现 2007 近年来,随着网络技术和视频技术的快速发展,传统的监控系统也不断向新的发展方向发展,出现了结合网络技术和视频技术的远程视频监控技术 。课题的目标是设计一个基于Internet的嵌入式远程视频监控系统。 系统采用CMOS成像芯片OV5 11以及嵌入式处理器S3C2410进行视频信号的采样和MPEG-4编码,提高了采集编码的效率并减小了对控制芯片的CPU占用 率:编码后的数字视频信号直接发送到嵌入式视频服务器缓冲区,由视频服务器负责向网络上的用户发送MPEG-4视频流;该视频服务器是基于三星公司 的ARM9系列微处理器S3C2410硬件平台以及嵌入式Linux软件平台进行构建的,因此流媒体服务器具有较高的性能指标;对linux的内核进行了适当的改造 ,使用了较新的Linux-2.4内核。整套系统仅需要一个IP地址就可以连接到Internet上,网络上的用户可以直接使用浏览器观看服务器上的视频图像,授 权用户还可以对系统进行操作和配置。 在校园局域网内的试验表明,视频监控系统的性能良好,达到了预期的设计目标。 7.学位论文 卢静 嵌入式视频监控系统服务器软件研制 2007 随着网络技术和多媒体技术的飞速发展,网络视频监控已广泛应用于军事、交通、公安、银行、小区、仓库、远程支援和远程教学等领域。 近年来,控制技术、通信技术以及微处理器性能的极大提高,也促进了视频监控向着数字化、网络化、嵌入式化的方向发展。在此基础上,本文提 出了一个嵌入式视频监控系统服务端软件的设计方案,实现了一个稳定的、低成本的实时H.264嵌入式网络监控系统服务器。系统设计包括两个部分:嵌 入式Linux配置和系统服务器端软件设计,服务器主要完成视频的采集、H.264.压缩编码、网络发送、视频录像、设备控制功能。精简的嵌入式Linux配 置和模块化的软件设计思想,使本系统具有稳定、可靠、成本低和易于实现等特点。 服务器端软件采用模块化的设计思想,各模块之间相互独立。每个模块功能单一,接口简单,并且根据需要可动态加载。服务器端软件的实现使用 了计算机控制技术、多线程编程技术、JRTPLIB、H264编码器等,便服务器能高效地处理视频数据。同时,针对嵌入式视频服务器资源有限的特点,对多 用户连接,视频存储,自适应网络传输等关键问题进行了讨论并给出了解决方法。 论文通过对嵌入式视频监控系统中服务器运行分析及实验,验证了嵌入式视频服务器在远程监控系统中的实用性和可靠性,表明系统的设计与实现 方案具有良好的通用性和工程推广使用意义。 8.会议论文 汤一平.顾校凯.傅培军.沈孙斌.金海明 基于嵌入式Linux的WEB全方位视觉传感器的开发 2006 本文首先介绍了WEB全方位视觉传感器及其开发平台的软硬件环境,接着详细论述在该平台上如何实现嵌入式Linux的WEB全方位视觉传感的这一应用 ,并对视频采集的实现进行了具体介绍,最后展示了相关的实验结果。 9.学位论文 田胜军 基于DaVinci处理器的DVS解码系统软件设计 2008 随着经济的发展和人民生活水平的提高,对安防系统的技术含量要求越来越高,对网络化、无区域限制、移动式的安全需求也越来越大,DVS(视频 服务器)是一种可以很好的解决这种需求而诞生的视频监控系统。 本文基于德州仪器(TI)公司的DaVinci处理器和嵌入式Linux操作系统研究开发了一套DVS解码系统软件,本文详细讨论和分析了该系统软件的相关技 术和实现细节。 第1章简述了课题提出的背景,包括视频监控系统的发展历程,DVS系统当前发展状况和趋势,最后介绍了本课题研究开发的意义和内容; 第2章系统讨论了DVS解码系统开发的相关技术,包括DaVinci技术和TMS320DM6446处理器平台,嵌入式Linux系统开发技术和视频编码技术; 第3章论述了DVS解码系统的功能,介绍了系统硬件架构和软件设计方案,并重点分析了软件系统各个模块的功能和交互关系; 第4章详细分析了DVS解码系统软件各个模块的设计,包括解码交互控制模块中多个编码源的轮询机制、编码数据流的接收以及与解码DSP交互,报警 联动模块,客户端交互模块的实现细节; 第5章介绍了DVS解码系统软件相关的测试技术,并给出了系统实现的性能指标和测试结果; 第6章总结了DVS解码系统软件的实现工作,并对DVS未来的发展趋势做了展望。 10.学位论文 董霖 基于DaVinci处理器的DVS编码系统软件设计 2008 网络视频服务器(DVS)是目前视频监控行业的主要产品之一,它在传统的硬盘录像机(DVR)的基础上发展起来,是视频监控技术向网络化发展的必然 趋势. 本课题设计和实现了一种基于DaVinci处理器和H.264编码算法的DVS编码系统解决方案。该方案采用嵌入式Linux操作系统,目标是实现较为完善的 DVS编码功能,如视频编码和传输、报警和存储以及系统远程管理等。由于采用针对低成本数字视频应用领域设计的DaVinci处理器,该方案具有很高的 性价比,具有一定的工程意义和市场意义。 第一章介绍了视频监控行业的背景以及相关技术的发展历程,并提出了本课题研究的重要意义和课题任务。 第二章总体性地介绍了本课题应用到的相关背景技术,包括TI最新的DaVinci处理器的相关技术信息、以及嵌入式Linux系统及其开发环境等。 第三章对DVS编码系统功能进行了简要分析,从总体上对该系统的硬件架构和软件架构进行了介绍,并进行了软件模块的划分。 第四章详细讨论了系统的软件设计,主要对视频处理模块、视频流实时发送模块、报警事件管理模块和存储管理模块进行了详细的介绍。其中,视 频处理模块详细介绍了模拟视频输入如何转换为H.264编码数据的完整过程,视频流数据发送模块完成与PC客户端应用程序的通讯以及向其发送实时编码 数据的流程,报警事件管理模块则实现了对各种硬件事件和软件事件的侦测,并根据系统设定的逻辑触发相应的动作,存储管理模块实现编码数据在本 地硬盘和报警服务器上的存储和索引工作。最后介绍了基于XML的软件模块单元测试工具的实现和应用。 第五章对DVS编码系统的测试工作进行了简要介绍,重点介绍了系统集成测试部分。 第六章对本课题完成的工作进行了总结,并对DVS系统的前景进行了展望。 本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1355972.aspx 下载时间:2010年5月26日
更多简介内容

评论

下载专区


TI 参考设计资源库

工业电子 汽车电子 个人电子
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })