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

基于ARM的嵌入式远程视频监控系统的研究与实现

  • 1星
  • 日期: 2014-03-05
  • 大小: 8.41MB
  • 所需积分:1分
  • 下载次数:0
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: 嵌入式远程远程视频监控视频视频监控

嵌入式网络视频监控系统是一种以嵌入式技术、视频编码技术和网络传输技术为核心的新型视频监控系统,它在稳定性、实时性、处理速度、功能、价格、扩展性等方面和传统的视频监控系统相比有着突出的优势,同时也代表着目前视频监控系统研究和发展的方向。 本文研究并实现了以微处理器S3C2440和嵌入式Linux操作系统为核心的嵌入式网络视频监控系统。论文首先介绍了嵌入式视频监控技术的发展趋势和研究现状,而后阐述了该系统硬件总体设计方案,讨论了基于嵌入式Linux操作系统的开发平台的构建,详细论述了视频采集、编码、存储、传输等单元的软硬件设计,重点论述了基于AL9V576的视频编码模块和基于TW2835的视频处理模块的设计。 本文研究的主要内容如下: 1、研究视频采集单元的优化方法,设计采用音视频控制器TW2835采集四路模拟视频输入信号并叠加OSD环境信息显示,提高了视频处理的功能和视频质量; 2、研究双核构架,采用混合信号系统级芯片C8051F340控制TW2835、采集环境信息并与S3C2440串口通信,使视频采集单元模块化设计,增加了产品设计的灵活性,减小了主控芯片的负担和软件设计的复杂性,便于产品功能的扩展和二次开发; 3、研究并分析了MPEG-4的硬件实现方式,采用高品质、高性能、低功率视频压缩芯片AL9V576进行MPEG-4编码,大幅提升了压缩效率,另外还设计了SRAM主机接口与主控芯片通信,突破了传统芯片大多采用的PCI接口的限制,方便模块的组合; 4、研究并设计了CF卡存储方案,实现了一种在嵌入式视频服务器上的视频检索和存储方法。

湖南大学 硕士学位论文 基于ARM的嵌入式远程视频监控系统的研究与实现 姓名:张群 申请学位级别:硕士 专业:电气工程 指导教师:谢胜曙 20080407 基于—6瓜M的嵌入式远程视频监控系统的研究与实现 摘要 嵌入式网络视频监控系统是一种以嵌入式技术、视频编码技术和网络传输技 术为核心的新型视频监控系统,它在稳定性、实时性、处理速度、功能、价格、 扩展性等方面和传统的视频监控系统相比有着突出的优势,同时也代表着目前视 频监控系统研究和发展的方向。 本文研究并实现了以微处理器S3C2440和嵌入式Linux操作系统为核心的嵌 入式网络视频监控系统。论文首先介绍了嵌入式视频监控技术的发展趋势和研究 现状,而后阐述了该系统硬件总体设计方案,讨论了基于嵌入式Linux操作系统 的开发平台的构建,详细论述了视频采集、编码、存储、传输等单元的软硬件设 计,重点论述了基于AL9V576的视频编码模块和基于TW2835的视频处理模块 的设计。 本文研究的主要内容如下: l、研究视频采集单元的优化方法,设计采用音视频控制器Tw2835采集四 路模拟视频输入信号并叠加OSD环境信息显示,提高了视频处理的功能和视频质 量; 2、研究双核构架,采用混合信号系统级芯片C805lF340控制TW2835、采集 环境信息并与S3C2440串口通信,使视频采集单元模块化设计,增加了产品设计 的灵活性,减小了主控芯片的负担和软件设计的复杂性,便于产品功能的扩展和 二次开发; 3、研究并分析了MPEG.4的硬件实现方式,采用高品质、高性能、低功率 视频压缩芯片AL9V576进行MPEG.4编码,大幅提升了压缩效率,另外还设计 了SRAM主机接口与主控芯片通信,突破了传统芯片大多采用的PCI接口的限制, 方便模块的组合; 4、研究并设计了CF卡存储方案,实现了一种在嵌入式视频服务器上的视频 检索和存储方法。 关键词:视频监控;嵌入式系统;TW2835;AL9V576;Linux操作系统 Il Abstract The embedded network video surVeillance system is one kind of new V1deo surveillance system which use embedded technology,Video coding technology and t啪smission network technology as the core.Compared to old Video surVelllance s、,stem, it has many advantages,such as stability,fealtime performance,functlons and price,etc.And it is also the direction of research and deVelopment 1n V1deo surveillance system. In this thesis,The embedded network Video surVeill ance system . based on thl置 s3c2440 and Linux operating system(os)is deeply studied and realize出In jevelopment situation觚tly,then paper,we introduce the embedded and the research Video sur、,eil 1 ance technology’s trend ot discuSse thedes吨nofthe sySt锄 s。ftw:e,hardware,Linux AL9V57拿 os,vide。st。re and netw。rk transmissi。n.The video coding module and the Tw28 3 5 Video processing module are elaborated discussed. The primary coverage of the thesis as南110w: , Firstlv。research video gathering unit’s optimized method·In order to enhance the video processing function and video quality,reduce the cost,we use Video controller TW2835 to gather four analog video signals and enVironmental infbrmatlon to superimpose OS D. . Secon帆research dual core iruss.In order to modularize the Video gathellng unit.increase the design nexibility of the product,reduce the burden of the mixe品gnal TW2835撂灿cr microprocessor ana the complexity of softwafe design,we use the fully Integrated system-on-a.chip Mcu c8051 F340t。 contr01 environmentalinfofmation,and communicate with the microprocesso¨n addltlon· Thirdlv’research and analyze the hardware realization of the MPEG-4·we use codec chip AL9V5 76 which has hi曲quality,hi曲performance and low power to make MPEG.4 video coding.On the otherhand,we design the SRAM host Interface ot AI。9v576 to connect with the microprocessor so that to break the PCI interface 11mit that traditional chips mostly use,it is more conVenient for module comblnatlon· Forthlv,research the storage scheme of CF card,and one kind of Video lndex and st。re method which based。n the embedded Video serVer is studied· Kev words:、,edio surveillance,Embedded system,Tw2835,AL9V576,LimⅨos· nI 湖南大学 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取 得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其 他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个 人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果 由本人承担。 作者签名: 日期:劲憎孑年参月,日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学 校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查 阅和借阅。本人授权湖南大学可以将本学位论文的全部或部分内容编入有关 数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位 论文。 本学位论文属于 1、保密口,在——年解密后适用本授权书。 2、不保密以 (请在以上相应方框内打“/”) 作者签名:每杉嘶 导师签名:;午以眵 日期: 娜暑年乎月f日 日期:函娜年争月,日 硕士学位论文 第1章绪论 1.1视频监控系统概述 视频监控是多媒体、计算机网络、工业控制和人工智能等多种技术的综合运 用,目前正从传统的安防监控朝着音视频的数字化、系统的网络化和管理的智能 化方向发展。数字化和网络化已成为一种趋势,采用最新的计算机、通讯、图像 处理技术,通过以太网及其他网络传输视频图像,可为远程视频监控提供高效可 行且价格低廉的解决方案【lJ。 总体来说,视频监控系统的发展,大致可分为三个阶段。 第一阶段,本地模拟监控系统。从摄像机、电视机出现的那天起,原始的视 频监控系统就己诞生,它被广泛应用于保安、生产管理等场合。本地视频监控系 统主要由摄像机、视频矩阵、监视器、录像机等组成,由视频线、控制线缆等连 接i2J。本地视频监控系统一般采用模拟方式传输,采用视频电缆(少数采用光纤), 传输距离不能太远,主要应用于小范围内的监控,如大楼监控等。监控图像一般 只能在控制中心查看。而且模拟视频监控系统有很大的缺陷:监控的范围很有限。 由于模拟线路不可能很长,所以信号传输距离有限且无法联网,仅局限于同一建 筑物或工厂内【3J。由于存在以上的缺点,所以传统的模拟视频监控系统己远远不 能满足越来越高的生产和管理监控的需求【4】。 第二阶段,基于PC的多媒体监控系统。该系统的结构一般是:在远端监控 现场有若干个摄像机,各种检测、报警探头与数据设备,通过各自的传输线路, 汇接到多媒体监控终端上。多媒体监控终端可以是一台PC机,也可以是专用的 工控机。除了处理各种信息和完成本地所要求的各种功能外,系统利用视频压缩 卡和通信接口卡,通过通信网络,将监控信息传到一个或多个监控中心。目前虽 然基于PC的视频远程监控系统仍然占据监控系统的大部分市场,但是它具有: 结构复杂,稳定性、可靠性不高,价格高昂、操作烦琐等缺陷。特别是很多场合 需要在一个监控现场安装多个摄像头,并需要在监控终端同时对多个监控现场进 行实时监控。对于这种需求,如果仍然采用基于PC的远程监控技术,利用专用 的压缩/解压卡来实现视频数据的压缩和解压,就需要大量的压缩/解压卡,使整 个系统更加复杂,稳定性和可靠性更低,而整个系统的成本也变得更加昂贵。 第三阶段,基于嵌入式技术的网络视频监控系统。在监控现场采用嵌入式技 术,摄像机传送来的视频信号和麦克风采集的音频信号数字化后由高效压缩芯片 压缩,通过组播方式传送到网络上。网络上用户可以直接用监控终端软件收看监 基于ARM的嵌入式远程视频监控系统的研究与实现 控现场的图像,授权用户还可以控制摄像机云台镜头的动作或对系统配置进行操 作。在监控现场利用嵌入式技术,采用专用芯片和实时操作系统,有效地提高了 系统的实时性和稳定性。而且把视频压缩和网络传输功能集成到一个体积很小的 设备内,可以直接连入以太网,即插即看,省掉各种复杂的电缆,安装方便(仅需 设置一个IP地址),无需专人值守。在监控终端,远程监控人员只需拥有一台安 装了监控终端软件的PC机,无需安装特殊的硬件设备,就可以在世界的任何一 个地方,对监控现场进行实时远程监控。这样大大降低了系统的成本,极大地方 便了整个监控系统的操作和维护。 嵌入式系统以其本身体积小,实时性高,稳定性好,支持以太网等优点,成 为工控领域的新热点。基于嵌入式技术的网络化视频监控系统有效地将嵌入式技 术和视频技术结合在一起,可以很好地解决基于PC的视频监控系统中存在的问 题。 前端~体化、视频数字化、监控网络化、系统集成化是视频监控系统公认的 发展方向,而数字化是网络化的前提,网络化又是系统集成化的基础,所以,视 频监控发展的最大两个特点就是数字化和网络化【5J。 目前,国际上对智能视频监控的研究己经达到了二定的水平,智能视频也受 到越来越多的重视。在国内,智能视频监控的研究也己经有了长足的进步。中国 科学院自动化研究所模式识别国家重点实验室已经成立了智能视频监控的研究小 组,正在开展智能视频监控方面的研究,研究内容包括:快速准确的运动检测, 实时性、鲁棒性的基于三维模型的车辆与行人的定位、识别和跟踪,基于移动摄 像机的视觉监控技术,多摄像机的协作监控,事件的机器学习方法,异常现象的 检测、报警与目标的行为预测,对目标运动情况给出语义上的解释的方法以及远 距离的身份识别等等,其目标是实现一个包括以上研究内容的动态场景集成分析 演示系统【6J。 1.2课题的意义 随着技术的进步和社会经济的不断发展,客观上对监控系统的性能提出了更 高的需求。具体的讲,主要体现在以下几个方面: 1、全方位的视频监控。单个摄像机的视野有限,要监控大范围的动态场景就 需要多个摄像机,目前对多摄像头的利用大多是采用多个视频采集芯片分别控制, 设计复杂,成本较高。 2、智能化设计。视频监控与其他环境监控的信息组合,在屏显示(OsD),提 供多种录像机制,方便用户分析,其中环境信息包括温度、湿度、红外线、烟感、 水浸等诸多因素。 , 3、音视频高效率高质量压缩。音视频压缩技术MPEG.4很好的解决了高质 2 硕士学位论文 量声音图像流与有限的网络带宽间的矛盾,使用MPEG.4技术进行音频/视频的编 码压缩,既能够提供高质量的声音图像又可以在有限带宽的网络上进行远距离传 输。 4、本地存储和网络传输。视频数据既可以在本地存储,又可以通过网络传输, 本地存储要提供检索机制,网络传输要解决带宽和流量的限制。 针对上述几个方面,本课题研究并设计了一个完整的具有高质量、多形式音 视频实时编解码的嵌入式系统方案。该方案的实现基于高性能嵌入式处理器、硬 件音视频编码芯片、多路视频采集处理芯片、存储卡和以太网控制芯片,并且结 合了嵌入式Linux操作系统。因此,本课题所开展的基于ARM的嵌入式远程视 频监控系统的研究具有重要的理论价值和实用价值。 1.3论文内容的组织安排 文章在分析视频监控系统的发展历史和现状的基础上,从视频监控系统今后 的发展趋势——嵌入式视频监控系统出发,提出了一种基于ARM的嵌入式远程 视频监控系统的设计与实现。本论文主要包括如下内容: 第1章介绍了视频监控系统的发展与现状,介绍了基于网络数字视频监控系 统的主要关键技术与现实意义。 第2章在研究目前比较典型的嵌入式系统硬件平台架构的基础上,提出了本 系统的硬件平台设计方案,并详细阐述了嵌入式核心板、视频采集、压缩、存储、 传输等各功能模块的硬件实现方法。 第3章搭建嵌入式系统软件平台,详细讨论了平台的构建方案及Bootloader、 Linux内核和JFFS2文件系统等组成部分的设计思想与移植方法。 第4章讨论了系统各功能模块的详细设计与实现,着重讨论了视频编码芯片 AL9V576在LinuX平台上设备驱动程序的设计与实现。 第5章对整个系统进行了调试和分析。 最后,对整个工作作了总结和展望。 3 基于ARM的嵌入式远程视频监控系统的研究与实现 第2章系统硬件平台的研究与设计 2.1硬件总体方案研究 近几年,随着视频监控市场的拓展和需求的提高,视频监控设备的设计方案 也有了大幅度的改进,目前比较典型的视频监控设计方案主要有以下几种”】: 1、视频采集芯片+DSP处理器。前端使用一个视频采集A/D芯片完成图像 的基本处理,把模拟信号转化成数字信号,经过变换后的视频数字信号由DSP来 进行存储、MPEGl/2/4或者H.264等格式的图像压缩、网络传输等。其中基于 TMS320DM642嵌入式网络视频服务器的方案比较典型I引,如图2.1所示: 视频 输入 CHl 视频 输入 CH2 图2.1方案1的典型原理框图 2、视频采集芯片+DSP处理器+嵌入式处理器。视频采集芯片完成图像的 数字化处理,嵌入式处理器用来控制整个系统,包括视频采集芯片、DSP处理器 及一些外围设备,DSP处理器用来实现各种格式的图像压缩编码。文献【9j提出了 一种采用SAA7114A进行图像采集、TMS320C6202B进行MJPEG2000标准图像 压缩、以嵌入式ARM芯片S3C2510进行系统控制和网络传输的嵌入式网络视频 服务器方案。该方案的一种典型原理方框如图2.2所示。 视频输入 L!里擘竺I L!里辇竺I L!竺兰 SPI 12Mpbi 以太网 接口 图2.2方案2的典型原理框图 3、视频采集芯片+视频压缩芯片+嵌入式处理芯片。前端使用一个视频采集 4 硕士学位论文 芯片,经过变换后的视频数字信号由视频压缩ASIC芯片负责图像的编码,编码 方式有H.264、MPEG.4等,嵌入式处理器负责图像的存储、传输等系统控制。 典型原理框图如图2.3所示。 图2.3方案3的典型原理框图 从技术角度分析,前面两种方案都采用了DSP处理器,第二种方案增加了一 个嵌入式处理器,可以运行操作系统,增加了系统的灵活性。DSP处理器对视频 进行软件压缩,算法灵活性好,画面质量优异,而且系统升级维护比较容易,但 是存在系统开发周期长,开发难度大,开发成本高等缺点。第三种方案采用视频 压缩芯片来实现硬件视频压缩,开发难度较前两种方案小,成本较前两种方案低, 缺点是算法灵活性小,画面质量一般,系统升级困难。 从芯片应用角度分析,嵌入式视频监控产品大体分为DVR、视频压缩卡、网 络摄象机和视频服务器等几个类别。这些产品大多采用DSP技术或者视频编解码 芯片来处理视频数据,如INTIME公司的‘IME6400、PentaMicro公司的 AT2021/AT2041/AT2042/AT2043等,其中大部分编解码芯片的主机接口都是PCI 接口。另一方面,一些嵌入式微控制器虽然接口丰富,功能强大,但不包含PCI 接口,虽然可以扩展出PCI接口,但是设计复杂,成本较高,所以在设计产品时 这些处理器受到了很大限制。 从视频采集效果分析,单纯的视频采集已经没有太多的竞争力,监控设备要 具备在屏显示(OsD)功能,即图像要叠加环境信息(温度、湿度、红外线、烟感、 水浸等)。实现0SD的方式通常有3种:第1种是使用OSD专用集成芯片实现, 如日本FUJISU公司的芯片MB900921101;第2种方式无需专门的OSD芯片,通 过直接操作视频的数据缓冲区,来完成OSD信息和视频信息的叠加,如采用编 解码芯片TMS320DM642【11'12l;第3种是使用附带OSD功能的多功能芯片来实现, 如EM8510【13J。这3种方式中,第1种方式需要专门的硬件和软件设计,增加了 硬件和软件的复杂度,第2种方式由于采用纯软件设计,较灵活,但是对CPU、 总线等系统性能要求较高,而第3种方式由于在系统中采用的芯片已经具有了 OSD功能,不需要额外的硬件设计,并且只需对OSD部分进行软件开发,因而 是一种较理想的OSD实现方案。 针对需求分析,要求图像清晰、叠加OSD显示、本地存储和网络传输功能等 特点,本系统采用视频采集芯片+视频压缩芯片+嵌入式处理芯片的方案,硬件 总体设计方案如图2.4所示。 基于删的嵌入式远程视频监控系统的研究与实现 本地显示 四 路 模 拟 视 频 主剿棚旧6 ||I~ 全兰!!卜—■AL9v576 l。C I 一 肝 输 入 按键l l环境信息采集 UAIH通信 圈 CF卡 图2.4系统的硬件总体设计方案 图中设计方案采用混合信号ISP Flash微控制器C8051F340控制四信道视频 和音频控制器TW2835采集4路模拟视频信号,进行视频处理并叠加OSD显示, 通过AL240完成ADV转换,然后把ITU.R BT.656格式的混合视频信号输送到编 码芯片AL9V576完成MPEG4格式视频压缩,压缩数据缓存于SDRAM中,而后 通过SRAM接口传输给主控芯片S3C2440进行存储以太网传输等控制。另外, C805lF340还负责与S3C2440串口通信,完成触发录像的信号机制。 2.2核心板 本系统采用主板与核心板分离的方法来设计电路。这种设计方法将核心板单 独设计,电气性能好,拆装方便,便于调试,也简化了电路设计的难度,目前这 种设计方法已经在嵌入式产品研发领域广泛使用,且日益成熟。核心板的硬件设 计框图如图2.5所示。 图2.5核,b板硬件设计框图 核心板是系统硬件的核心,主要器件包括一个主频最高达533M Hz的嵌入式 微处理器S3C2440、一片型号为K9F1208UDM的64MB的NAND FLASH、两片 型号为K4S561632C.TC75组成的2×32MB SDRAM和调试接口。核心板采用 6 硕士学位论文 SO.DIMM200(DualInline Memory Module 200)的接口方式与外围电路的电路板 相连。 2.2.1核心处理器 系统采用S3C2440芯片作为核心处理器,S3C2440是基于AI州920T内核、 高性能和低功耗的硬宏单元。,ARM920T具有全性能的MMU、指令和数据Cache 以及高速AMBA总线接口。作为S3C2440芯片的CPU芯核,16/32位ARM920T RISC微处理器采用O.13um CMOS标准单元结构,具有独立的16kB指今缓存和 16kB数据缓存【14J。 S3C2440内部结构较复杂,提供可扩展的功能模块较多,主要由ARM920T 内核(16./32-bit RISC CPU),独立的16KB指令和16KB数据缓存,MMU虚拟内存 管理单元,LCD控制器,NAND nash bootloader,系统管理单元(SDRAM控制器 等),3个DART,4通道DMA,4通道具备PWM功能的定时器,I/O口,IHC(实 时时钟),8通道I/Obit精度ADC和触摸屏控制器,IIC总线接口,IIS数字音频 总线接口,USB主机,USB设备,SD/MMC卡控制器,2通道SPI和PLL数字锁 相环组成【141。其体系结构图如图2.6所示。 图2.6 S3C2440体系结构图 S3c2440提供了一套比较完整的通用系统的外围设备,并且使得整个系统功 耗最小,片上集成的功能主要包括如下几个方面【14】:(1)1.2v/1-3v ARM内核, 1.8v/2.5v/3.Ov/3.3v存储器,3.3v外部I/O,具有16KB指令缓存/16KB数据缓存 和MMU;(2)外部存储控制器(SDRAM控制和片选逻辑);(3)LCD控制器,1通道 LCD专用DMA;(4)具有外部请求引脚的4通道DMA;(5)2通道SPI,3通道 UART(IDRAl.0,64字节Tx FIFO和64字节Rx FIFO);(6)l通道IIC总线控制 器,1通道IIS总线控制器;(7)兼容sD主机协议1.0版和MMC卡协议2.11兼 7 基于A。RM的嵌入式远程视频监控系统的研究与实现 容版;(8)2个USB主机,1个USB设备(USBl.1);(9)4通道PWM计时器,I通 道内部计时器;(10)看门狗电路;(11)130个通用I/O口,24通道外部中断源;(12) 电源控制:普通、缓慢、空闲和断电模式;(13)8通道10位ADC和触摸屏接口: (14)具有日历功能的实时时钟I汀C;(15)具有PLL片上时钟发生器;(16)相机接口。 2.2.2 F1ash存储器 Flash存储器又称闪存,是一种可在线多次擦除的非易失性存储器,即掉电后 数据不会丢失。FLASH存储器还具有体积小、功耗低、抗振性强等优点,是嵌入 式系统的首选存储设备。 NAND Flash和NOR Flash是两种目前主要的非易失闪存芯片,这两种类型 的Flash区别在于【"J:NOR Flash可以按照字节访问,所以存放在NOR F1ash里 的程序可以直接执行,而NAND F1ash是串行访问的,需要先把程序读取到内存 然后再从内存中运行;NAND Flash的容量大;NAND Flash的I/o端口只有8(或 16)个,要完成地址和数据的传输就必需让这些信号轮流传送,所以比NOR Flash 速度慢。 NAND F1ash具有极高的单元密度,容量可以比较大,价格相对便宜。本文 采用Samsung公司的NAND Flash存储设备K9F2808UOC,整个系统程序全部烧录 在该NAND F1ash中,包括Bootloader、内核以及根文件系统。 1.3 nFRE 1.3 nFWE 1.3 ALE 1.3 nFCE t.3 CLE 1.3 RnB 1,2.5 DATA【O..311 GND wP}}接高电平允许擦除和写入; 接低电平禁止擦除和写入。 图2.7 NAND FLASH电路设计 NAND Flash电路设计如图2.7所示。K9F2808UOC存储容量为132 Mb,其 中主数据区为128 Mb,辅助数据区为4 Mb,工作电压为2.7~3.6 V'I/O端口宽度 为8 bit。S3C2440有特定的NAND Flash接口,使用8位数据总线DATAO~DATA7 与K9F2808UOC的I/00~I/07引脚相连,使用数据总线来发送地址、数据和命令。 8 硕士学位论文 2.2.3 SDRAM 为提高系统性能,我们选用两片K4S561632C.TC75,由它们组成2×32MB的 SDRAM。在系统中它们的地址范围是Ox30000000.Ox33mm。 SDRAM(Synchronous Dynamic RAM)是同步动态存储器,使用SDRAM不但 能提高系统性能,还能简化设计、提供高速的数据传输。在功能上,它类似常规 的DRAM,但是DRAM需要定时刷新。在系统运行时,所有的程序和数据都是 在I认M(主要是在SDI认M)中与CPU和外围设备交互,所以SDI乙~M的速度对 于整个系统的运行速度有着至关重要的影响。K4S561632C总线宽度是16位,与 AMR9连接时,应该选用两片该芯片来构成32位的系统总线。 SDRAM电路设计如下 图2.8所示,K4S561632C地址线为A【12:O】, 片选信 号 为BA[1:0】。电路连接时 S3C2440地址总线A24、A25分别与BAO、BA l相连, 第 一片K4S561632C输出数据线DQ【15:O】连接2440数据总线D【15:O】,第二片连 接 2440数据总线D【31:16】。 AODR2 23 ADDR3 24 ADDR4 25 ADDR5 26 A00R6 29 AODR7 30 ADDR8 31 AODR9 32 ADDRl0 33 ADORll 34 ADDRl2 22 ADDRl3 35 ADDRl4 36 BAO 20 BAl 21 器燃芬i} 慧 1,3 scKE》 1.3 SCLKI 场 ” 28 41 54 6 12 46 52 Ao A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 BA0 BAl 2 u4:87 4 5 D02 7 D03 8 004 10 DQ5 11 D06 13 D07 42 008 44 D09 45 0010 47 0011 48 DQl2 50 OQl3 51 0014 53 DQl5 LDQM UDOM SCKE 19 nSCS 18 nSRAS 17 nSCAS 16 nWE SCLK 1 VOOO 14 VSS0 VDDl 27 VSS'VDD2 VSS2 VSSQO VSSQl VSS02 VDDQO 曼 9 VDDQ’ 43 VDD02 49 VDD03 VSS03 DAlA0 0A1A’ 0ATA2 DATA3 DATA4 DATAS 0ATA6 0ATA7 0ATA8 OATA9 DATAl0 OATAll 0ATAl2 DAlAl3 DATAl4 OA下A15 nGCS6 nSHAS n5CAS nWE VDD3、,3 T AOOR2 ADDR3 ADDR4 ADDR5 ADDR6 ADDR7 ADDR8 ADOR9 ADDRlO ADDRll ADDRl2 ADORl3 ADORl4 8AO HAl nWBE2 nWBt3 SCKE SGLKl 23 篙 24 25 26 A2 29 A3 30 A4 31 A5 32 A6 33 A7 34 A8 22 A9 35 A10 36 A11 A12 20 21 BA0 BAl 2 u5:誉 4 5 D02 7 DQ3 8 OQ4 10 D05 11 D06 13 D07 42 0Q8 44 D09 45 OQl0 47 D011 48 0Q12 50 OQl3 51 DQl4 53 D015 DAl-A16 DATAl7 0ATAl8 0ATAl9 DATA20 DATA21 DATA22 DATA23 OATA24 DATA25 DATA26 DATA27 DATA28 OA了A29 DATA30 DATA3' 15 39 LDQM UDQM 37 38 SCKE SCLK 28 VSSO 41 54 VSSl VSS2 6 12 VSSQ0 46 VSSQl VSSQ2 52 VSS03 瑙i泌j: nSCS {2 nSRAS nSCAS nWE 《(nGcs6, 1 VDDO 14 VDDl 27 VDD2 3 VD000 9 VDD01 43 VDDQ2 49 VDDQ3 VDD3V T GND MS弱1632C.Tc75 I鸵MB) 图2.8 SDRAM电路 2.3存储模块 2.3.1 CF卡存储机制 Compact Flash存储卡(简称CF卡)是目前嵌入式系统中应用最为广泛的flash存 储卡。目前对CF卡的大多数应用,都是用一个PCMCIA控制器来实现对CF卡的操 作。然而在嵌入式系统中,硬件设计应该尽可能简单,从而降低成本,以至许多 嵌入式Linux系统中没有PCMCIA控制器而仍然利用CF卡作为存储设备【1们。 9 基于ARM的嵌入式远程视频监控系统的研究与实现 CF卡跟硬盘的结构相同,如图2.9所示。在引导区中装有用于启动系统的代码, 以及有关文件系统的重要信息,随后是记录所有磁盘空间的表,再下来就是根目 录,然后是所有其他的东西。引导扇区在其末尾处包含所有分区的表。此表包含 了用以标示每个分区开始和结束的表项,最多可以有四个分区,每个分区可以包 含不同的文件系统。紧随引导区之后的是R订(文件分配表),用来记录设备中所有 的磁盘空间信息ll¨。 图2.9 CF卡结构 CF卡扇区寻址有两种方式:物理寻址方式(CHS)和逻辑寻址方式(LBA)。物理 寻址方式使用柱面、磁头和扇区号表示一个特定的扇区,起始扇区是O磁道、0磁 头、l扇区,接着是2扇区,一直到EOF扇区;接下来是同一柱面1头、1扇区等。逻 辑寻址方式将整个CF卡同一寻址。逻辑块地址和物理地址的关系为:LBA地址=(柱 面号×磁头数+磁头号1×扇区数+扇区数.1。CF卡没有机械结构,因此CF卡的扇区寻 址适宜采用逻辑寻址方式。逻辑寻址方式没有磁头和磁道的转换操作,因此在访 问连续扇区时,操作速度比物理寻址方式快得多。 CF卡分为3种寻址访问模式【l引,每一种模式在系统上反映为如何来访问其地址 空间。通过对CF卡的属性存储空间进行配置,可以得到CF卡的不同的寻址访问模 式。 (1)I/O模式:通过访问CF卡的内部I/O寄存器所指向的16字节数据块,实现对 CF卡的通用存储空间进行寻址访问,一般利用系统提供的中断进行读写事务处理。 (2)Memory模式:将CPu与CF卡的地址线和数据线进行直连,通过访问其通用 存储空间的16字节数据块来实现对CF卡的寻址访问。 (3)Tme IDE模式(与大多数磁盘驱动器兼容):将标准的PC.ATA磁盘I/0寻址空 间lF0h—lF7h、3F6h-3F7h(primary)或者170h-177h、376h·377h(secondary)作为寻址端 口,同时使用中断IRQl4(或者其它可用的IRQ)进行事务处理。 在True IDE模式下,CF卡与主机通信的信号最少,硬件接口最简单、软件易 于实现,因此本设计采用了True IDE模式。 10 硕士学位论文 2.3.2电路设计 在CF卡内,有一个集成的片上控制器,这个控制器管理着接口协议、数据存 储和恢复、错误处理和诊断、电源管理和时钟控制。 应用电路如图2.10所示,CF卡通过一个50引脚的连接器与主机相连,接口主 要包括16根数据线、3根地址线、2根寄存器组选择信号线(CS0、CSl)、数据的读/ 写线(IORD、IOwR)、1根中断信号请求线(INTRQ)和1根复位线(RESET)。它们的 特性和时序与IDE接口完全相同,CF卡可以作为一个IDE设备来操作。 图2.10 CF卡接口电路图 2.4视频采集模块 本系统采用混合信号ISP Flash微控制器C8051F340控制TW2835并采集环 境信息,来完成视频信号和环境信息的采集、处理和OSD显示功能。这样本系统 就使用了两片控制芯片,组成了双核结构。这种方式一方面使视频采集单元模块 化设计,降低了产品的设计难度,另一方面使系统具有较强的可裁减性,可按照需 求灵活地采集所需信息,为后续功能上的扩展预留了很大的空间。 微处理器C8051F340是Cygnal公司的8位高速单片机【19】,这款单片机是完全集 成的混合信号系统级芯片(SOC),具有与8051指令集完全兼容的高速CIP.51内核, 采用流水线指令结构,每秒运行数据能力达1亿次。在一个芯片内集成了构成一个 单片机数据采集或控制系统所需的ADC、DAC、SPI、WDT和定时/计数等模块, 使系统的硬件设计大大简化。它的所有I/O管脚都可以作为模拟输入脚,即它具有 32路模拟输入,使得该芯片在控制TW2835的同时,仍能够满足系统中多个环境信 息采集的需求。 基于删的嵌入式远程视频监控系统的研究与实现 2.4.1视频控制器 视频处理芯片TW2835是由TECHWELL公司生产的四信道视频和音频控制 器,其功能框图如图2.11所示。TW2835支持四路的模拟音频输入,一路模拟音 频输出,四路模拟视频输入,两路模拟视频输出,提供三个BT.656/60l格式的数 字I/O视频接口和两个数字音频I/O接口,可以和处理器连接传输视频和音频数 据。TW2835的视频和音频是分开完成的,互不影响【2引。在视频处理部分,一块 Tw2835支持四路模拟输入和四路数字输入。四路模拟视频信号转换成数字视频 信号送入到内部读写控制模块,数字视频输入PBIN可以最多传输四路的视频信 号到内部读写控制模块。TW2835的输出通道有Display Path和Record Path分 别对应实时显示和视频记录功能。Display Path Process可以处理八路的视频输入, 对视频信号做任意的缩放切割处理。Display Path的模拟输出VAOCX、VAOCY 和数字输出VDOX[O:7】输出的图像是相同的,每一路可以选择输出亮度信号、 色度信号或者全电视信号。 视频 显示路 模拟输出 一一一视转一频换一 处理 读/写控制 径处理 数字输出 音频 回放路 一一一一一~一一音转一一频换一 一赡洲一予B 处理 工 音频 DAC 径处理 模拟输出 图2.11 TW2835功能框图 在其众多功能中,Tw2835支持详尽的实时D1录制、在重放过程中将信 道ID信息添加到视频流媒体中,用于自动解码与显示,同时还包含一个5层的 图形覆盖功能,为OSD、单盒、2D阵列箱以及鼠标指示器显示特征/位图。 TW2835还包含一个简单的界面,使用多段连接支持多达16个信道系统。此外, TW2835还嵌入了几种特别的监视功能,其中包括:运动监测、放大以及水平与 垂直缩放控制。凭借减少交叉噪音的反锯齿过滤器和高质量的梳状过滤器, TW2835已经成为一种针对DVR与Quad/Multiplexers的高性能、具有成本效益 的解决方案。 2.4.2 TW2835的接口电路 1、HOST接口 TW2835提供了两种主机接口方式,一种是12C的控制方式(串行),另外一种 是并口的控制方式(并行)。TW2835利用HSPB引脚来选择接口方式,HSPB引脚 12 硕士学位论文 置低电平选择并口方式,反之为串口方式。串口连接方式中引脚HALE和HDAT【7】 定义为SCLK和SDAT,引脚HDAT【6:l】和HCSB0为从属地址。 两种主机接口中,串行接口能够达到400 kbit/s的传输速度,但并行接口的 传输速度要比串行快很多。本课题中考虑到采集的信息要从总线下载到显示存储 器中,所以对数据的传输有较高的要求,因此采用并行接口方式来设计电路。控 制器与Tw2835的接口电路如图2.12所示。 HDAT【7:0】 HCSBO HCSBl TW2835 HRDB HWRB HALE HSPB ]寺 o END P4.7~P4.O P2.1 P2.2 P2.4 C805lF340 P1.1 P2.3 图2.12控制器与TW2835的接口电路 2、SDRAM接口 TW2835要处理大量的音视频数据,并将其缓存,需要扩展外部SDRAM。 TW2835提供了一个存储器接口,支持64M32位SDRAM。本设计选取Hynix公 司的HY57V643220DT作为外部SDRAM,其与TW2835的接口电路如图2.13所 示。 DATA[3l:0] ADDR[10:O] BAl T■2835 BAO CLK54MEM RASB CASB WEB DQM DQ[3l:0] A[10:O] BAl BAO HY57V643220DT CLK RAS CAS WE DQM[3:1] 图2.13 TW2835外部SDRAM接口电路 2.5视频压缩模块 本模块采用AverLogic公司生产的AL9V576作为视频编码芯片。视频采集模块 处理后的模拟视频信号在进入AL9V576前需要通过芯片AL240进行预处理把模拟 视音频信号转换成标准的数字信号。数字信号被输入到AL9V576后,经过视频和 音频处理器,送到视频和音频编码控制器进行编码,然后通过MPEG编码引擎压缩 成标准的MPEG-4的码流,缓存于AL9V576的外部SDRAM中,最后再通过SRAM接 口输出到主控芯片进行其他的处理。硬件结构图如图2.14所示。 基于ARM的嵌入式远程视频监控系统的研究与实现 图2.14视频处理模块硬件结构图 2.5.1音视频编码控制器 影音压缩芯片AL9V576具有MPEG一4/2/1硬件影音压缩核心,可将庞大的 未压缩影音数据,压缩处理到非常小的数字影音串流(MPEG Streams):具有高品 质的MPEG.4、MPEG.2及MPEG.1影像的实时(Real Time)压缩能力,并支持 22.05K、24K、44.1K及48KHz等音频取样频率,以及最高达20Mb/s的影像压缩 速率;它还具有低功率、高性能及高品质等特色,支持标准的数字影音输入接口, 接受ITU.R BT.656、ITU.R BT.601、16.bit YcbCr、24-bit YCbCr及RGB等未压 缩的影音数据;该芯片支持MPEG.4 ASP(Advanced Simple Pr06lel)标准【2¨。在 Full D1分辨率下,可达每秒30个帧(Frame)的实时压缩能力,大幅提升压缩效率。 AL9V576的内部结构如图2.15所示。AL9V576包含2个RISC处理器:系统控制 和复用RISC和音频编码RISC。系统控制和复用RISC主要是对从视频输入处理器来 的视频数据进行编码和复用:音频编码RISC对从音频处理器来的音频数据进行编 码。视频输入处理器负责对外部的视频输入预处理进程,包括:色素转换、视频 压缩比例的选择、同步信号的检测以及对噪声的过滤。音频输入处理器接收 LJ(LeR.Justified)格式的音频数据,并在把它们送SDRAM前进行重新组合。视频压 缩受MPEG压缩引擎的控制。 视频输入 ◆ 处理器 一囊篓篡入 I 音频 编码 RISC 系统控制 及复位 RISC M口EG 编码 引擎 MCU接口控制器 叫 串口总线控制器 1 GPI。接口控制器 SDRAM 控制器 串行 输出 单元 时钟 产生 及 同步 单元 串行 比特 流输 出 图2.15 AL9V576内部功能框图 14 硕士学位论文 2.5.2 AL9V576的接口电路 AL9V576有两种封装【21 J:TfBGA.256和LQFP.160。两种封装的芯片在接口 模式上有所不同,LQFP一160不包含PCI接口。LQFP.160的主机接口有两种: 8/16-bit intel-style接口和8/16-bit SRAM.1ike接口,其中SRAM.1ike接口又称为 主机控制接口(HCI),两种接口通过引脚UP SEL来选择,UP SEL置高电平时选择 SRAM方式。本设计选用LQFP.160封装的AL9V576,主机接口方式采用16.b“ SRAM.1ike。SRAM接口电路设计如下图2.16所示,主机通过4根地址线、8根 数据线和4根信号线来驱动AL9V576。 BUeDATA【8:O】 BUF—ATA【3:0】 BUF n0E S3C2440 nGCS3 BUF nWE UP ADr8:01 {H—ADDR【3:l】,UP—ALE) UP RDN UP CSN AL9V576 UP WRN UP SEL 3V3 图2.16 HCI接口电路 另外AL9V576在数据编码时也需要大量的缓存来存储数据,其也提供了相 应的SDRAM接口,我们选择M12L64322A这个2M×32的芯片来做外接SDRAM, 其电路图与2.13类似。 2.6网络接口 网络接口采用以太网控制芯片DM9000来完成电路设计。DM9000是DEVICOM 公司专门为数字家电和嵌入式产品开发的一款性价比高,结构完整的10/100M快速 以太网控制芯片。DM9000结构完整,性价比高,有比较通用的接口,可以直接连 接到大多数微处理器的总线上。DM9000完全符合IEEE802.3u国际标准,在它内部 集成了一个10/100M自适应PHY,自适应功能可以根据带宽自动配置内部存储区以 发挥其最大处理数据能力。 S3C2440处理器经总线缓冲芯片后与DM9000芯片的连接如图2.17所示,具 体说明如下: 1、用片选nGCS2和地址线BUF ADDR2分别连接DM9000芯片的AEN引 脚和CMD引脚,将DM9000的SA9和SA8引脚设置高电平,SA7引脚设置低电 平,用来片选DM9000; 2、BUF—nOE引脚连接DM9000的读引脚IOR#,BUF nWE引脚连接DM9000 的写引脚IOW撑,并将S3C2440的数据线BUF DATA[15:0】与DM9000的数据线 SD【15:O】连接,用来实现DM9000与S3C2440之间的数据传输; 3、DM9000占用S3C2440的中断引脚EINTl6,使得S3C2440能够响应 15 DM9000的中断。 基于ARM的嵌入式远程视频监控系统的研究与实现 图2。17 S3C2440处理器与DM9000芯片的连接图 2.7调试端口 嵌入式开发平台需要有一个调试端口用来下载bootloader、Linux内核、根文 件系统和应用程序,打印调试信息并提供人机接口。本文采用S3C2440的UAI玎1 作为打印口,USB设备接口作为下载接口。另外,采用S3C2440的UARTO接口 与C8051F340进行通信,其电路设计与UAI盯1类似。UAI玎1和UsB接口电路 的设计图如图2.18和2.19。 黜篇 1,1 1 一 16 =C21 104 2 =C23 VCC V+ ===C24 104 15 11 12 10 9 、,- GND l‘ IN R OUT T, !N KZ()Ul C1+ C1. C2+ C2. floUI R。N T20U一 RZIN 1 。牛,铲 4 =C25 104 5 14 13 7 8 一 舍、^ ,、 2 3 8 V _o ^ :一 ,、 5 V 上厂一巴一一 \/ DB9-_c GND 图2.18 UARTl接口电路 EINTl7,GPG9 DPI DNl GNO 图2.19 USB设备接口电路 16 硕士学位论文 第3章系统软件平台的研究与搭建 3.1系统软件设计方案研究 嵌入式操作系统是嵌入式系统成功的关键,嵌入式操作系统具备一般操作系 统最基本的功能,如任务调度、同步机制、中断处理、文件功能等,但为了适应 嵌入式产品的发展要求,还需要具有以下特点【22J: 1)良好的移植性。由于嵌入式设备硬件平台的多样性,CPU芯片的快速更新, 嵌入式操作系统要求具有更好的硬件适应性。 2)可定制性。因为嵌入式系统环境的要求,嵌入式操作系统一般需要提供可 添加或可裁剪的内核及其他功能,能够让用户根据需要自行进行配置。 3)低资源占有性。要求占有更少的硬件资源,嵌入式系统所能提供的资源有 限,所以嵌入式操作系统必须小巧以满足嵌入式系统硬件的限制。 4)实时性。实时性是嵌入式系统环境的现实要求。不满足一定的实时性,嵌 入式操作系统就无法应用到一些环境中去。 51高可靠性。 本系统选择嵌入式Linux操作系统。因为在嵌入式Linux操作系统上开发应用程 序有许多开源的程序可以参考,能大大降低开发的难度,提高开发的进度。图3.1 是系统整体的软件结构图。 圈圈圈圈 圉团田田目 图3.1系统整体软件结构图 3.2系统引导程序 3.2.1 Bootloader的设计思想 Bootloader是在操作系统内核运行之前运行的一段小程序,也是嵌入式操作系 17 基于触认4的嵌入式远程视频监控系统的研究与实现 统运行的第一个程序,作用是初始化系统硬件、建立内存空间的映射图、将系统 带入适合的启动环境,为调用Linux内核做好准备。 Booltoader包含两种操作模式:启动加载模式和下载模式。在启动加载模式 (Bootloading)下,Bootloader从NAND Flash中将操作系统加载到SDRAM中运行;在 下载模式(Downloading)下,B00tloader将通过串口和USB设备接口从主机上下载内 核映像和根文件系统映像等,从主机下载的文件通常首先被Bootloader保存到嵌入 式平台的SDRAM中,然后再被写入NAND Flash。 Bootloader的启动分为stagel和stage2两大部分,Stagel阶段的任务是初始化硬件 设备(CPU、内存等)、拷贝stage2到内存空间、设置堆栈sP等,用汇编语言来实现, 加快启动速度;Stage2阶段任务是加载操作系统内核和文件系统,并为内核设置适 合的启动参数调用内核,将CPu控制权完全交给操作系统,通常用C语言来实现, 增加代码的可读性和可移植性。具体启动流程如图3.2所示。 Stage l 硬件设备初始化 Stage2 本阶段的硬件初始化 为stage2准备RAM空问 检查系统内存映射 拷贝stage2到RAM空间 堆栈空间设置 加载内核映象和根文件 系统 跳转到stage2的入口 设置内核启动参数 调用内核 图3.2 B00tload的启动流程图 stagel阶段的工作主要包括以下几个步骤t23】: 1)基本硬件初始化:包括设置CPU的速度和时钟频率,屏蔽所有的中断(在 Bootloader运行时不必响应任何的中断,Bootloader都是以cPU查询方式来控制具体 的硬件),关闭MMU,关闭处理器内部指令/数据cache(通常使用cache以及缓冲是 为了提高系统的性能,但由于cache的使用可能改变访问主存的数量、类型和时间, 因此Bootloader中需要关闭),另外如果板子上有LED模块,也需要进行初始化。 2)RAM初始化:为第二阶段的运行准备RAM空间,包括正确地设置系统的内 存控制器的功能寄存器以及各内存库控制寄存器等。 3)将stage2拷贝到RAM中。 4)设置堆栈:堆栈指针的设置是为了执行C语言代码作好准备。通常可以把堆 栈SP的值设置成上面所安排的为stage2准备的内存空问的最顶端(堆栈向下生长)或 最底端(堆栈向上生长)。 18 硕士学位论文 5)跳转到Bolotader的第二阶段的c程序入口。 Stage2阶段的主要工作是加载操作系统内核和文件系统,并为内核设置适合的 启动参数调用内核,将CPU控制权完全交给操作系统。Stage2通常用C语言来实现, 这样易于实现复杂的功能,而且代码会具有更好的可读性和可移植性。 stage2阶段的主要任务有【23】: . 1)初始化本阶段用到的硬件设备:至少初始化一个串口,以便和终端用户进行 加输出信息、初始化计时器等。 2)检测系统内存映射:通常情况下CPU会留出足够的地址空间给系统RAM, 但是具体嵌入式系统运行时却不一定会实现CPU预留的全部RAM地址空间。因此 Bootloader的stage2必须在运行下一步之前检测整个系统的内存映射情况,也即它 必须知道CPU预留的全部RAM地址空间中的哪些被真正映射到RAM地址单元,哪 些是未使用状态。 3)将内核映像和根文件系统映像读到RAM中:首先规划内核映像和根文件系 统映像所占用的内存空间,然后将它们从Flash读到RAM中。 4)为内核设置启动参数:在嵌入式Linux中,需要由Bootloader设置的启动参数 有ATAG.CORE、AIAG.MEM(内存映射)、ATAG.NONE等常见的几个。 5)调用内核 ’ 在U—Boot中,可以使用以下两行代码实现staegl到stage2的工作交接【241: ldr pc.一start_amrboot —starLamboot:word start—armboot 该函数一般是不返回的,但也有些Botlaoder在此函数返回后直接重新启动系 统。 Bootloader调用Linux内核的方法是直接跳转到内核的第一条指令处,即直接跳 转到内存起始地址偏移0x8000(即,MEM.STAI汀+Ox8000)地址处。另外,在跳转 前,还要满足几个条件【24】: 1)CPU寄存器的设置:通用寄存器R0的值为O:Rl为机器类型ID号; R2为启动 参数,标记列表在RAM中的起始基地址。 2)CPU模式:必须禁止中断(IRQs和FIQs);CPU的当前模式是SVC模式。 3)Cache和MMU的设置:MMU(内存管理)必须关闭;数据Cachc必须关闭;指令 Cache可以打开也可以关闭。 以上条件全部满足才可以成功调用Linux内核。 3.2.2 U.Boot的移植 本设计采用的Bootloader为U.Bootl.2.O,目前U.Bootl.2.0版本还不能支持 S3C2440,所以要从S3C2410的文件移植过来。2440与2410的最大区别在于NAND 19 基于ARM的嵌入式远程视频监控系统的研究与实现 FLASH的控制器的寄存器有较大变化,芯片的时钟频率控制器有一定变化,其他 寄存器基本兼容。 本文选择友善之臂公司设计的sbc2410作为蓝本来进行U.Boot的设计与移 植,U.B00t的移植过程主要分三步:建立编译平台、修改U.Bootl.2.0内容以支 持硬件和编译。下面分别阐述。 1、建立编译平台 1)在工作目录下解压U—BOOT:¥tar zxvfu-boot.git.tar.gz 2)将开发板取名为zq2440,进入工作目录,修改Makenle文件,为zq2440 建立编译项,并设置交叉编译器gcc-4.1.O.glibc一2.3.2的路径。建立编译项的命令 如下: zq2440—config :unconng @¥(MKCONFIG)¥(@:_Con69=)a咖arm920t zq2440 zq s3c24xO 3)在/board子目录中建立自己的开发板zq2440目录 ¥cd board ¥mkdir zq zq/zq2440 ¥cp-aff sbc241 0x/· zq/zq2440/ ‘ ¥cd zq/zq2440 ¥mv sbc24 l Ox.c zq2440.c 另外要修改zq2440目录下的Makefile文件,指定调用的可执行文件为zq.o。 4)在include/conngs/中建立配置头文件 ¥cp include/con69s/sbc24 l Ox.h include/configs/zq2440.h 2、修改u.Boot中的文件来支持硬件 1)修改/cpu/arm920t/start.s U.B00t1.2.O暂时没有关于S3C2440的定义,所以S3C2440的硬件初始化部分要 自己定义,内容包括:a、修改寄存器地址定义;b、修改中断禁止部分;c、修改时 钟设置,本设计将S3C2440的时钟设置为405MHz;d、将从Flash启动改为从NAND Flash启动。 2)在board/zq/zq2440加入NAND Flash读函数文件 3)修改board/zq/zq2440/Make矗le文件,指定调用的可执行文件为zq2440.o 4)修改include/conngs/zq2440.h文件,主要是修改NAND FLASH控制器部分 5)修改board/zq/zq/lowleVeI-init.s文件,设置系统的内存控制器的功能寄存器以 及各内存库控制寄存器等 6)在/board/tekkaman/tekkaman2440/tekkaman2440.c修改其对GPIO和PLL的配 置 7)在个文件中添加“CONFIG S3C2440”,使得原来S3C2410的代码可以编译进 20 硕士学位论文 来 8)在include/linux/mtd/nand ids.h的结构体nand flash ids加入本设计中使用的 K9F2208UOB的配置信息 9)修改commoll/env nand.c,加入K9F1208UOB的配置信息 10)在/board/zq/zq2440/zq2440.c文件的末尾添加对Nand Flash的初始化函数 (在后面Nand Flash的操作都要用到) 11)在/include/s3c24x0.h中加入S3C2440的NAND FLASH寄存器定义和 CAMDIVN定义。 3、交叉编译U.Boot 执行make指令,便可得到所需的U.Boot的执行文件。 另外,在调试的过程中要加入几个LED和部分串口输出信息,这样就可以直观 的看出程序的出错位置。 3.3 Linux内核 3.3.1 Linux内核的组成 Linux操作系统主要由进程调度,内存管理,虚拟文件系统,网络接口,进程 间通信等几个部分组成。下面具体介绍【25】: 1)进程调度:进程调度单元的工作是控制进程对于CPU的访问,当需要选择 下一个进程运行时,Linux内核的调度程序选择优先级最高的进程。当前的可运行 进程时等待CPU资源的进程,等待资源的进程时不可运行的进程。Linux使用有 限级算法来选择进程,因为Linux的内核是非抢占式的,所以不支持很多实时性 过分要求的应用。 2)内存管理:Linux的内存管理采取的分页式机制,设计的目的是允许多个 进程共享内存区域。Linux的内存管理支持虚拟内存,即在CPU中运行的程序, 其代码、数据、堆栈的总量可以超过物理内存的大小,操作系统可以把当前使用 的程序保存在内存中,等待中的程序则保存在磁盘中。就是用磁盘上的一部分空 间模拟成内存,以实现在比较小的内存下运行比较大的程序。虚拟内存的实现需 要以下机制:地址映射机制、内存的分配与回收、请页机制、交换机制、内存共 享机制。 3)虚拟文件系统:隐藏了各种硬件的具体细节,为所有的设备提供了统一的接 口,VFS(Vinual File system,虚拟文件系统)提供了多达数十种不同的文件系统。 虚拟文件系统分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持 的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备 驱动程序模块。 2l 基于ARM的嵌入式远程视频监控系统的研究与实现 4)网络接口:提供了对各种网络标准的存取和各种网络硬件的支持。网络接 口分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输 协议。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应 的设备驱动程序。 5)进程间通讯:支持进程间各种通讯机制。处于中心位置的进程调度,所有 的子系统都依赖它,因为每一个子系统都要挂起或恢复进程。为了使各个进程在 同一项任务上协调工作,彼此间的通信必不可少。进程通信子系统提供进程间的 各种通信机制。常见的通信机制有:管道、有名管道(FIFO)、信号、SYSV机制、 网络Socket方式和全双工管道。其中SYSV机制包括消息队列、信号量、共享内 存。一般情况下,当一个进程等待硬件操作完成时,它被挂起,当操作真正完成 时,进程被恢复执行。 Linux内核的子系统的依赖关系【25】【261如图3.3所示。 虚~逻一硬 拟一辑一件 文一文一驱 件~件~动 系一系一程 统一统一序 一 一 络丽磊 一硬一网一件 网一络一驱 一序 图3.3内核子系统依赖关系图 l】进程调度与内存管理之间的关系:这两个子系统相互依赖。在多道程序环 境下,程序要运行必须为其创建进程,而创建进程的第一件事情,就是将程序和 数据装入内存。 2、)进程间通信与内存管理的关系:进程间通信子系统要依赖内存管理支持共 享内存通信机制,这种机制允许两个进程除了拥有自己的私有空间,还可以存取 共同的内存区域。 3)虚拟文件系统与网络接口之间的关系:虚拟文件系统利用网络接口支持网 络文件系统(NFS),也利用内存管理支持RAMDISK设备。 4)内存管理与虚拟文件系统之间的关系:内存管理利用虚拟文件系统支持交 换,交换进程定期由调度程序调度,这也是内存管理依赖于进程调度的唯~原因。 当一个进程存取的内存映射被换出时,内存管理向文件系统发出请求,同时挂起 当前正在运行的进程。 硕士学位论文 3.3.2 Linux内核的移植 操作系统的移植是指通过对操作系统的改造,使同一个操作系统可以在不同 的硬件平台上运行。如果一个操作系统可以在不同硬件平台上运行,那么这个系 统就是可移植的【2”。Linux操作系统可以通过移植,运行在ARM等多种硬件平 台上。考虑到嵌入式系统是“硬件可裁减”的,针对不同的用户需求,我们需要对 已有的内核代码进行裁减移植。 一般情况下的Linux内核的裁减及移植,主要是针对操作系统关联具体硬件 以及除去不需要的功能模块,如一些不会用到的外设支持、驱动程序、协议、网 络支持、文件格式等。Linux内核具有很好的模块性和伸缩性,在资源要求严格 的情况下经过合理的裁减可获得明显的效果。 Linux内核支持很多的硬件体系结构,如ARM,PowerPC等,但由于新的硬 件设备不断出现,根据新的硬件平台移植内核是嵌入式系统构建的必须工作。本 系统采用的是linux.2.6.12内核,硬件平台是以S3C2440为核心处理器的硬件平 台,因此移植过程中需要对新的硬件平台进行定义。 在对内核进行移植的过程中,主要针对以下几个方面来进行修改: 1)去除本硬件平台不需要的外设驱动及其管理部分,简化控制台的代码。 2)尽量减少对文件系统的支持,如果不需要文件系统则可以去掉内核中的文 件系统部分包括内核线程bdnush(),但是需要保留顶部的虚拟文件系统层 (VFS,Vinual File System),因为底层驱动需要VFS支持。 3)根据硬件平台是否需要网络的支持,确定是否保留该模块。 4)根据需要修改进程调度策略,可以通过“优先级继承”、“优先级封顶”等算 法来解决优先级倒转的问题。 另外需要注意的是,linux.2.6.16(含)以前内核的源码中没有Flash分区信息, 所以需要增加新的分区信息,而在linux.2.6.1 7(含)以后内核的源码中已含Flash 分区信息,需要的只是修改分区信息。具体修改如下: 1)在linux.2.6.1 2/arch/arm/mach.s3c2440/common—smdk.c中根据U.Boot对 NAND Flash的分区修改内核中的Flash分区信息。 在U—Boot的命令中,对NAND FLASH的分区如下:U.Boot(O.40000)、U.Boot parameter(40000一60000)、kernel(60000—260000)、filesystem(260000-end)。内核Flash 分区信息必须与U—Boot的Flash分区信息相一致。因为,U.Boot的Flash分区中 的地址是内核及文件系统下载到Nand nash的真正地址;而内核在启动时读的却 是内核Flash分区设定的地址;所以,若两者不同,则很可能导致不能正常启动 内核或读取文件系统。 2)修改linux.2.6.12/drivers/mtd/nand/s3c2440.c,禁止Nand nash差错检测: 基于ARM的嵌入式远程视频监控系统的研究与实现 chip‘>eccmOde。NAND—ECC—N ONE。 内核修改后要修改相关的配置信息,输入makemenuconfig命令得到配置菜 单,在配置菜单中导入内核对zq2440的默认配置,再在此基础上选择所需的功能, 如Nand Flash及MTD设备的支持,Cramfs文件系统的支持等。 配置完毕,在终端输入编译命令“make”进行编译。若内核源码编译成功,将 在linux一2.6.12/arch/afm/boot/下生成内核映像文件zImage。 Linux内核采用条件编译的方式,可以通过改变编译条件值来确定最终编译 进内核的内容,在配置时需要选择嵌入式系统所需要的功能支持模块,同时删除 不需要的功能模块,这样就可以大大的减少内核的大小,提高系统运行的效率。 3.4根文件系统 3.4.1根文件系统概述 系统启动后,操作系统的要完成的最后~步操作是加载根文件系统。根文件 系统的任务是对逻辑文件进行管理。包括提供对逻辑文件的操作(复制、删除、修 改等)接口,方便用户操作文件和目录。 根文件系统一般都包括如下子目录:/etc/、/dev/、/usr/、/usr/bi“、/bin/、/var/ 等。/etc/目录主要含有一些系统配置文件;/dev/含有设备特殊文件,用于使用文 件操作语句操作设各;/usr/存放库函数、手册和其它一些文件;/bin/存放执行程 序;/var/用于存放系统运行时可变的数据或者是日志等信息。 嵌入式系统一般使用nash作为自己的存储介质。文件系统不能直接控制设 备,它通过Flash驱动实现控制。操作Flash的过程如图3.4所示: 图3.4操作FLASH的过程 目前支持闪存的文件系统技术有JFFS2、Yaffs、TmeFFS、FTL/NTFL、RAMFS、 CRAMFS、ROMFS等几种。 JFFS2(JouRmaling Flash File System Version 2)是为在嵌入式系统中使用nash 存储设备而专门设计的一种日志文件系统,属于Log.Structured日志文件系统,它 把整个Flash设备当作可循环的一个日志文件来组织。作为~种日志结构的文件系 24 硕士学位论文 统,它的文件由一长串节点组成海个节点包含文件的部分信息。由于JFFS2采用新 的存储方式,支持损耗平衡,具有断电保护功能,因而相对EXT2文件系统而言, JFFS2更适合于把flash作为存储设备的嵌入式系统【281。 JFFS2作为日志文件系统,它把整个Flash看作一个日志,每次对日志的修改都 在日志的尾部。存储节点是日志的基本组成单位,每个存储节点都与一个Inods相 关联,各个文件的存储节点按照建立时间的先后顺序的存储在Flash上。存储空间 由多个擦写块组成,存储节点必须在擦写块的边界范围内存储。整个Flash区域由 脏块节点区和空白区组成。 一 在JFFS2文件系统中,对文件的修改不是直接修改原地址的数据,而是首先在 nash的尾端的空白区申请一块新的区域来存储修改后的数据,并把原来的数据区 标志为脏区,这种做法有效地实现了防断电机制。同时由于Flash必须将整块区域 擦除后才能写入新的数据,该做法还大大的减少了Flash擦除频率,提高了写文件 的效率和Flash的使用寿命。 JFFS2文件系统是建立在MTD块设备上的。MTD(memory technology device内 存技术设备)是用于访问memory设备(ROM、nash)的Linux的子系统。MTD的主要 目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了 一个抽象的接口【291。MTD的所有源代码在/drivels/mtd子目录下。图3.5所示为MTD 的层次结构,CFI接口的MTD设备分为四层(从设备节点直到底层硬件驱动)i这四 层从上到下依次是:设备节点、MTD设备层、MTD原始设备层和硬件驱动层。 l字符设备节点 毒 l MT。字符设备 毒 块设备节点 善 MTD块设备 害 MTD原始设备 霉 害 MTD芯片驱动程序 图3.5 MTD层次结构 1、Flash硬件驱动层 硬件驱动层负责在init时驱动Flash硬件,Linux MTD设备的NOR Flash芯片驱动 遵循CFI接口标准,其驱动程序位于drivers/mtd/chips子目录下。NAND型Flash的驱 动程序则位于drivers/mtd/nand子目录下。 2、MTD原始设备 原始设备层有两部分组成,一部分是MTD原始设备的通用代码,另一部分是 基于ARM的嵌入式远程视频监控系统的研究与实现 各个特定的Flash的数据,例如分区信息等。 3、MTD设备层 基于MTD原始设备,1inux系统可以定义出MTD的块设备(主设备号31)和字符 设备(设备号90)。 4、设备节点 通过mknod在/dev子目录下建立MTD字符设备节点(主设备号为90)和MTD块 设备节点(主设备号为31),通过访问此设备节点即可访问MTD字符设备和块设备。 3.4.2 JFFSz文件系统的实现 JFFs2作为嵌入式系统的文件系统,一般是把NAND用做主要存储设备,启动 程序放在NAND F1ash中。S3C2440提供了NAND控制器,可以让处理器直接读取 Flash内部的数据。 使用JFFS2作为文件系统,首先在Linux内核中必须支持相关的选项,JFFS2需 要MTD功能支持,MTD把文件系统和具体的Flash设备相隔离,上层的文件系统不 必关心所使用的具体的Flash类型,由MTD提供访问Flash的具体例程。因此必须在 内核配置中选择配置MTD,另外对于不同的MTD设备还需要编制相应的驱动程序。 接着在配置内核中加入对JFFS2的支持,并编译进内核。 文件系统的实现主要在VFs层、物理文件系统层和MTD层。在Linux2.4以后的 版本中,JFFS2已经作为一种标准的文件系统被支持, 所以使得Linux的VFS支持 JFFS2并不是一件难事【301。在源代码中也不用做修改。下面给出在TMD层Linux的 源代码中针对本硬件平台做的一些修改。另外叙述JFFS2物理文件系统映像文件的 生成。 l、支持MTD设备 对MTD设备的支持要经过配置内核、编写设备驱动程序和建立MTD设备这几 个步骤: 1)配置内核参数。选中Memory Technology Devices(MTD)support,下面的子 项中至少要选择MTD panitioning support、Direct char device access to MTD devices 这三项。其他的有关NFTL、CFI的支持根据需求选择。 2)编写针对平台Flash设备的MTD驱动程序,主要实现创建MTD分区和删除 MTD分区的函数。 3)将修改过的MTD驱动文件作为内核文件的补丁,并给内核打上该补丁,然 后编译生成内核文件。 4)使用mknod命令建立MTD设备。在Linux系统中,ROM设备和MTDBlcok设 备的主设备号是31,所以如果用JFFS2作为根文件系统,则需要它的maiof是31,若 JFFS2不是根文件系统,需要修改为其它。命令如下: mknod<device path name>c 90<slave device number>//MTD字符设备 硕士学位论文 m玉【Ilod<device path name>b 90<slave device number>//MTD块设备 2、生成JFFS2映象文件 为使内核支持JFFS2,所以在配置内核参数时,要选中File Systems下的 Joumaling Flash File System V2(JFFS2)suppon。步骤如下: 1)在主机上将该文件系统以loop的方式挂接到临时目录,在该目录下就会出现 一些文件系统的基本文件和信息,可以做增删以达到定制的目的。 2)修改/etc/rc.d/rc.sysinit文件,使得文件系统在remount时不会出现只读的现象 3)使用mkfs.jffs2生成JFFS2的映象文件。 此时便可得到一个JFFS2的映象文件,将其下载到目标平台,将其挂载,便成 为一个文件系统了。在这个嵌入式文件系统中,我们引入了VFS的支持,占用了一 些空间,但是方便了今后各种物理文件系统的动态加载。 基于删的嵌入式远程视频监控系统的研究与实现 第4章系统各功能模块软件的研究与设计 4.1系统主程序 主程序用来创建和启动进程、创建和启动消息队列、初始化系统配置参数、 启动协议处理模块与其它各子系统进行通信、启动通讯处理模块用来接收外部信 息和启动网络传输模块传输视频。 4.1.1系统初始化 该部分主要用于创建进程、消息队列、信号量和初始化系统参数。处理流程 如图4.1所示: 图4.1初始化模块流程图 4.1.2协议解析 该部分为各子系统间消息传递的枢纽,用于处理主处理程序与视频控制子系 统、视频存储子系统、通信控制子系统、网络传输子系统、告警处理子系统和系 统配置子系统之间的通讯协议。处理流程如图4.2所示: 翻 网 网 协议 输入 系统协议解析I 模块 l f告警处理协议I l 解析模块 l l网络传输协议 I 解析模块 图4.2协议解析处理模块流程图 硕士学位论文 4.2通讯处理单元 该单元主要用于串口数据的收发。主处理器S3C2440利用串口定时接收 C8051F340采集的环境信息,按照协议解析,进行相应的处理。 4.2.1串口程序设计 对于S3C2440的串口编程,包括串口的驱动程序和应用程序两部分。驱动程 序在Linux系统的/driver目录,只需修改UART的引脚和控制寄存器的相关定义。 在应用程序中还要通过访问内核程序提供的操作接口进行相关的设置,才能 访问串口的数据。具体的步骤如下: 1、打开串口。在linux下所有的设备都被看作了文件,打开串口就相当于打 开文件,用通常的打开文件的方法就可以打开一个串口设备,1inux在/dev目录下 的文件通信串口虚拟设备名为ttvSO,打开它就相当于打开了串口设备。 fd=open(”/deV/ttyS0”,O—R DWRIO—.NOCTTYlO—.NDELAY); 2、配置串口参数。要配置的串口的参数有波特率、校验位、流控参数等。在 linux操作系统中,主要的串口参数设置都是针对结构体termios内容的填写和设 置。结构体termios含有cjn ag(输入模式),c_ofl ag(输出模式),c—cjflag(控制模式), c-ln ag(本地模式)和c—cc【NCC】(控制字符)这5个控制字,所有的控制工作都是对 这些控制字的相关bit位的设置。本系统的做法是声明一个结构体structter曲ios options来操作,具体的过程如下: 1)设置波特率为9600bps tcgetattr(fd,&options);/毒获得有关本端口的配置幸/ cfsetispeed(&options,B9600);/+设置输入波特率为9600bps·/ cfsetospeed(&options,B9600);/木设置输出波特率为9600bps木/ tcsetattr(fd,TCSANOW,&options);/木将新的配置设置到系统奎/ 2)字符数、校验位、停止位设置 本系统使用无校验,1个停止,8位数据位的格式。 options一一cflag&=~PARENB(无校验位标记) options.c cflag&=~CSTOPB(停止位标记) options一一cnag&=~CSIzE;(按字符数目来计数数据位位数) options一一cnag!=CS8; (8位数据位) 3)选择输入/输出的模式 串口1只是用来传输数据,使用不处理模式(Raw Mode)方式来通讯,所谓的 Raw模式就是说输入的字符数据被直接传递到他们的接收者,Linux系统不做任何 的处理操作,不选择规范输入、回显、回显清除和信号监测标志,同样的对于输 出的模式,也是禁止所有的处理标记。设置如下: 29 基于ARM的嵌入式远程视频监控系统的研究与实现 options一一Iflag&“~(ICANONIECHOlECHOEIISIG); options一一onag&=~OPOST; 3、读写串口。读写的过程相当于读写文件的过程,具体命令如下: write(fd,pSendBuffer,SendLength); read(fd,pRercVBuf|fer,Length); 4、关闭串口。执行close(fd)即可。 4.2.2串口通信协议 串口通信时,S3C2440要接收C805lF340传输过来的不同信息,然后根据信 息的类别作出不同的处理,在此,需要对相关数据位进行定义,也就是需要有一 个双方都可辨识的通信协议。 通信协议定义如下: 1、主控端(Master)为C8051F340,主要工作为采集触发状况(Event)和下达指 令(Command)。 2、受控端(S1aver)为S3C2440,主要工作为控制压解芯片(AL9V576B)、处理 压解数据、存取压解数据和接收命令。 3、传输规范为串口传输,波特率9600bps,1个停止,8位数据位,无校验。 4、命令格式,如表1所示,命令种类分两种,校验码为“启始符+命令种类 +操作码”的累加和。命令种类定义为2种,具体命令为: 表1命令格式 启始符 命令种类 操作码 校验码 1 Byte 1 Byte l Byte 1Byte 1’)查询命令 硬件初始化后,主机要查询从机的状态,看是否能接收命令。主机发送代码为 “01 01 01 00 03”;从机可接收则回应“0l Ol 06 08”,否则回应“01 Ol 15 18”。 2)编码命令 主机采集到环境信号,需要触发录像则发送“01 02 01 04”, 需要停止录像则 发送“Ol 02 02 05”; 从机可接收则回应“01 Ol 06 08”,否则回应“0l Ol 15 18”。 5、信息采集量。采集量包括温度、湿度、红外、烟感、水浸、开门、关门, 开关量直接触发,模拟量到达一定限制时触发。 4.3视频采集单元 为方便操作和系统的扩展,该控制模块通过C8051F340控制TW2835实现视 频的采集、处理和OSD显示。 本部分程序烧录在C8051F340中,大体分为信息处理和Tw2835处理两个部 30 硕士学位论文 分。信息处理部分首先采用轮询的方式采集相应的环境信息和按键信息。如果有 环境信息更新或者是触发按键信息则一方面串口传输,另一方转入OSD设置;如 果按键信息为设置时钟的信息,则转入时钟处理程序设置时钟,而后再进去OSD 信息设置程序。具体程序流程图见图4.30 C805 lF340初始化 OSD显示 TW2835初始化 读取环境和按键信息I I 设置osD Y 时钟处理 之\时.钟,设/三二> N土 磊高衰、型 其他信息有变二>一 串口定时传输 信息处理 Y 图4.3 C805lF340程序流程图 C805lF340使用方便,程序设计简单,不多讨论。本节我们主要研究TW2835 的访问机制、初始化程序设计和OSD显示。 4.3.1 TW2835的访问机制 TW2835的寄存器地址由两部分组成,分为页和页内地址。共有3页,第一页 定义视频解码,第二页定义视频控制、编码,第三页定义oSD、移动帧测、工具 箱和鼠标,分别在页内地址前加Ox、1x或2x来表示,如2x2l表示第2页中地址为 0x21的寄存器。并口使用HCSB0和HCSBl两引脚来选择寄存器的页,使用8根数 据线HDAT【7:0】传输寄存器的地址、数据等。 向TW2835的寄存器写/读字节时,首先确定写入的页码和所写地址,然后将 写入信号HALE先置1后置0使能写/读,写/读后再将HALE先置O后置1。写 一个字节的程序如下: Void WriteAsicByte(uchar—pg,uchar—addr,uchar—Wdat) { if(-pg==DVC—PG0){HCSBl=O;HCSBO=O;>//选择页码 else if(—pg==DVC—PGl){HCSBl=O;HCSB0=1;) else if(-pg==DVC—PG2){HCSBl=1;HCSB0=0;) HDAT=addr: //选择地址 HALE=1;HALE=0; HDAT=wdat: //写入字节 3l 基于删的嵌入式远程视频监控系统的研究与实现 HWRB 2 0; HWRB 2 l; HCSB0=1; HCSBl=1; HDAT= Oxff. ) 4.3.2关键函数 TW2835的初始化可以分解为五个部分:选择PAL瓜TSC制式、系统复位、 视频解码初始化(用函数InitPgO()表示)、视频控制和视频输出初始化(用函数 InitPgl()表示)、OSD特征、鼠标覆盖图初始化(用函数InitP92()表示)。TW2835 的相关视频处理设置都在初始化过程中实现。 InitPgO()主要用来设置输入模拟信号的解码,包括设置四通道PAL/NTSC制式 参数,设置X/Y坐标显示缩放比例和分辨率。 InitP91()主要用来进行视频处理和视频输出,包括取消X坐标分界线,设置Y 坐标方向PIC格式大小,设置X坐标方向画面大小,PB路径显示位置,和输出 控制等。, InitP92()主要用来设置OSD显示,包括字符层,鼠标层、一维边框层和二维 边框层。字符层用来显示字符;鼠标层用来控制鼠标指针,属性包括消隐、位置 等。一维边框可以用来装饰视频或GUI边界,可以设置为平面或三维效果。二维 边框支持4个二维的边框,移动侦测功能非常有用。 4.3.3 OSD字符显示 控制字符显示的过程主要在于控制显示存储器。OSD要显示的字符全部都是 存储在字符存储器中的【3¨。在显示时,只需指出要显示字符的索引即可。 TW2835支持4个不同的字体组,每个字体组包含128个字符。但显示时,某 个时刻只能选中一个字体组。字符的大小可设置为8(10,12,14)幸10(12,14,16), 单位为像素。在TW2835中,是将水平方向上两个像素捆绑在一起,构成点共用 相同的属性。每个点包含两个像素x1视频行,每个点用两个二进制位来表示颜色, 即可以指定为4种颜色中的一种。为了尽量提供大面积的GUI,项目中将字符设为 14·16,即在水平方向每个字符含14个像素,垂直方面上每个字符含16个像素。 将字符(单元格)数据信息从总线写入字符存储器中时,是以行为单位来写入 的。首先将该行数据通过并口传送至TW2835的寄存器中,再来检测TW2835寄存 器FONTj也Q位的状态。当FoNT—REQ为l表示芯片正在将上一次的数据存入字符 存储器中,此时应该等待上一次写操作完成,如果为0则表示空闲。当为0时,则 应将该行的行索引,字符索引,域,页等信息写入相应的寄存器,最后将 FONT REQ置为1表示请求将当前填入寄存器的一行字符数据存入字符存储器 中。当字符设为14奎16时,将这样的操作流程循环进行16次,既可将~个字符的数 32 硕士学位论文 据存入字符存储器的一个字符存储区中。索引为O的字符要保持为空,即字符数据 全为0。 另外,字符存储器只能写入不能读出,这样就无法对其进行查找等操作。显 示新字符时,若字符已存在于字符存储器中,只需修改索引。若不存在,则需要 将字符存入字符存储器中。解决方法是在内存中开辟一块空间作为字符存储器的 缓冲区(映射),当需要检索和判断时,只需对这个缓冲区的内容进行检索和判断 即可。 4.4视频压缩单元 TW2835处理后的模拟视频信号通过芯片AL240进行A/D转换,然后送到 AL9V576进行视频压缩。AL240的相关设置为PAL/NTSC视频制式的选择和视频 参数的定义,其设置由AL9V576通过12C总线提供。 AL9V576用SRAM接口与S3C2440通信,为字符型设备,接口驱动程序包 括驱动程序入口函数的编写、AL9V576的初始化、中断处理及驱动程序的装/卸 载和应用程序。 Linux下驱动程序的基本特点是抽象了对硬件设备的管理,硬件设备被看成 一个普通文件,不同之处在于每个设备都有自己的打开、关闭、控制和读写等操 作接口,应用程序通过这些接口来访问硬件设备【3 21。该模块属于字符型设备,驱 动是通过I/O控制来实现的。在使用时,应用程序打开AL9V576的设备文件,调 用ioctl函数,通过函数参数来完成寄存器读写和API指令的传递。驱动程序则负 责完成相应的具体操作【3 31。 4.4.1 I/O内存映射 设备对应于约定的物理地址,但是在使用I/O内存时CPU并没有预先定义访 问它们的虚拟地址。为了让软件可以访问I/O内存,必须要赋予设备相应的虚拟 地址。 对于SRAM接口,该任务由ioremap函数和iounmap函数完成1341。ioremap 将一个物理内存地址点映射为一个内核指针,被映射数据的长度由size参数设定, 其功能是把SRAM区域二次映射到可以从驱动程序里访问的虚拟地址上。另外, 把ioremap函数返回的那个指针传递到iounm印函数,二次映射的区域就在卸载 模块时解除映射关系和释放【351。 #include<asm/io.h> Void拳ioremap(unsigned long phys—addr,unsigned long size); Void iounmap(Void·addr); 有了ioremap和iounmap,设备驱动程序就可以访问任何I/o内存地址,而不 33 基于ARM的嵌入式远程视频监控系统的研究与实现 管它是否直接映射到虚拟地址空间。 二次映射后,就可以直接对其中的数据进行读写。AL9V576使用的是数据长 度以字节为单位的函数。readb返回从地址处读到的字节,而write把数据写到指 定地址上去。 unsigned木readb(void幸address); unsigned簟writeb(unsigned Value,Void·address) 4.4.2数据结构定义 1、设备定义 AL9V576设备被定义为下面这个结构: typedef struct AL9V576一DeV{ void母幸data; struct AL9V576 Dev+hext; int vmas; int quantum; int qset; size t size; struct semaphore sem; )AL9V576一DeV; 该结构体定义里的data用来保存ioremap函数的返回值;AL9V576_Dev幸next 和semaphore sem是子结构体,用于多个SRAM设备连接时用;vmas是动态映射 的起始地址;quantum是当前分配的SRAM区长度;qset是设置信息数组的长度, size是设置数组的的具体大小最多达32位。用户可以直接调用该结构体对设备的 参变量进行设置。 2、操作管理 用户进程通过设备文件同硬件打交道,对设备文件的操作方式是通过系统调 用实现的,如0pen,read,write,close等,通过疗le~operations数据结构把系统调用 和驱动程序关联起来。结构体如下: struct 6le—operations a19V5 76~fops 2{ llseek:a19V576一llseek, read:a19V576一read, write:a19V576一write, ioctl:a19V576_ioctl, open:a19V576一open, release:a19v576 release, 硕士学位论文 ’; 这个结构的每一个成员的名字都对应着一个系统调用。llseek是修改文件中 的当前读写位置的系统调用。内核中的缺省的实现进行移位通过修改filp一>oos, 这是文件中的当前读写位置。对于llseek系统调用要正确工作,读和写方法必须 通过更新它们收到的偏移量来配合。Ioctl是设备驱动进行各种硬件控制操作的系 统调用。Release用于释放对一个对象的引用。 用户进程利用系统调用在对设备文件进行诸如read/write操作时,系统调用通 过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的 函数指针,接着把控制权交给该函数。 4.4.3关键函数 该SRAM接口驱动具有相对固定的模块,主要包含如下几个模块:设备加载 模块、设备打开模块、数据读写模块、中断服务模块、设备关闭模块和设备卸载 模块。下面结合AL9V576详细讨论各模块的设计。 l、设备加载模块 设备加载模块init—module()是驱动程序的入口点,在加载驱动程序模块的时 候调用该函数。init module()主要的任务有:根据系统中分配的设备数分配指向 设备私有数据结构的指针数组、SRAM设备探测和初始化和向系统注册设备驱动 程序。 init module()实现如下: int init_module(Void) { int result,i; sram—drv—register(&AL9V576一drV—id,NULL); SET—MoDULE—OWNER(&a19V5 76一fops); = · a19V576一deVices kmalloc(a19V576一deVs GFP—KERNEL); sizeof (AL9V576—DeV), if(!a19V5 76一deVices){ result=一ENOMEM: goto fa订一malloc; ) memset(a19V576一deVices,0,a19V576一deVs·sizeof(AL9V576一DeV)); for(i=O;i<a19V576一devs;i++){ a19V576一deVices【i】.quantum=a19v576一quantum; a19V576一deVices【i】.qset 2 a19V5 76一qset; 基于Al王M的嵌入式远程视频监控系统的研究与实现 sema_init(&a19V576一devices【i】.sem,1); ) return 0; ) 应用程序通过设备名(路径名)访问设备。内核则利用主设备号将设备与相应 的驱动程序对应。向系统增加一个驱动就是赋予它一个主设备号。注册驱动程序 的函数原型为: int registeLchrdeV(unsigned int major, const char曩name, struct nle operations 枣fops); 函数register_chrdev()的原型在头文件<linux/fs.h>中说明。name是设备的名 字;结构struct file operations是可以调用的各种文件操作函数;major是所请求的主 设备号,由于某些主设备号已经静态地分配给了一些公用设备,因此,为新设备 选择一个唯一的主设备号是很困难的。Linux提供了动态分配主设备号的机制, 此时要求将major参数设为0,系统会动态分配一个主设备号并作为函数返回值 返回。本设计只有一个SRAM设备,没有利用系统配置,而是指定了设备号。 2、设备打开模块 设备打开模块是驱动程序用来为以后的操作完成初始化的准备工作,应用程 序必须在其他系统调用之前打开设备。本设计中打开设备的函数为 int a19V576一open(struct inode木inode,struct nle·nlp); 在linux系统中,主设备号和驱动程序对应,次设备号用于区分设备。主次 设备号组合构成一个数据类来识别设备。设备号的组合位于结构struc£inode 曩inode的i rdev字段,函数通过inode.>i rdev分解出设备号。 a19v576 open主要完成的任务为分解次设备号;设置设备状态;指针赋值; 计数加1。实现程序如下: int a19V576—6pen(struct inode·inode,struct file枣filp) { int num=MINOR(inode->i_rdeV); AL9V5 76一Dev幸deV; if(num>=a19V5 76一deVs)return—ENODEV; dev=&a19V576一deVices[num】; if((filp一>f-nags&O—ACCMODE)==O—WRONLY){ if(down~interruptible(&deV一>sem))retum—ERESTARTSYS; a19V576.trim(deV); up(&deV·>sem); ) 36 硕士学位论文 filp·>priVate—data=deV; MOD—INC—USE—COUNT; retum O; > 3、硬件初始化模块 设备注册后,要进行相关的硬件初始化设置,使能设备,而后才能对设备进 行相关的操作。 在使能AL9V576之前,需要下载RISC video firmware,audio firmware和默 认参数到AL9V576的外部SDRAM中。RISC video firmware,audio nrmware和 默认参数三个部分包含了AL9V576的所有参数、指令代码的定义和设置。固件 加载后,我们只需要将配置信息调入即可完成设置,具体设置如下: 编码模式:MPEG4格式 输出数据流类型:视频基准流(VES),IP帧格式 视频制式:NTSC,FULL.D1 比特率:2Mbps 视频参数:亮度128,对比度128,饱和度128,色调128 音频比特率:256bps 帧频:20。‘ 初始化时首先设置AL9V576的总线宽度和时钟频率,然后关闭AL9V576的 内部程序(防止出错),接下来初始化SRAM接口设置,加载视音频firmware和默 认参数到SDRAM,最后使能AL9V576的内部程序。具体步骤如图4.4所示: 接口和总线 宽度设定 时钟频率 设定 墓一 下载视频固 件到SDRAM 下载音频固 件到SDRAM 使能 RISC 下载默认参 数到SDRAM 图4.4 AL9V576初始化流程图 4、设备关闭模块 应用程序在结束使用SRAM设备之前,必须调用关闭模块关闭设备。函数原 型为: int a19V576一release(struct inode奎inode,struct file拳行lp); 主要功能为分解次设备号:清空指针filp;模块使用计数减1和设置状态为 37 基于AR M的嵌入式远程视频监控系统的研究与实现 关闭。 5、设备卸载模块 设备卸载模块cleanup—module()是驱动程序的第二个入口点,仅当模块被卸 载时调用。在SRAM设备中,该模块的主要任务是卸载驱动程序,使用的函数原 型为unregisteLchrdev(a19V576_major,’‘a19V576”)。 4.4.4 SRAM接口访问机制 主机通过SRAM接口来访问AL9V576,SRAM接口具有16个地址空间,每 个地址空间2个字节,分割成三个部分,分别是寄存器通道,存储器通道和比特 流FIFO通道【361。详细的地址空间说明见下表。 表2 SRAM地址空间定义 地址空间 3~0 5~4 SRM数据【7:O】 Data【31:O】 Address【15:0】 Bit[4:0】:address[20:16】 Bit【5】:寄存器/sDRAM选择.O:寄存器;l:sDRAM; 6 .Bit【6】:读,写选择.0:读;l:写; 12~7 Bit【7】:命令使能(高电平有效). 比特流FlFo通道 13 BitO:RISC使能位. O:禁止,l:使能 HCI接口包含时序,主机向HCI 接口执行写操作时,片选和写信号必须置高 电平,持续至少两个HCI时钟周期。 读HCI操作时,片选和读信号要置高电平, 持续至少两个HCI时钟周期。 通过HCI接口向AL9V576的寄存器或SDRAM写数据时,将所写数据写到 HCI Address【3:0】中,地址写到HCI Address【5:4】中,并且设置HCI Address【6】的相 关位为写寄存器或SDRAM,即可完成操作。 向SDRAM写一个字符的程序如下: static void MemoryWriteDword(10ng ioaddr,u32 address,u32 data) { u32 taddr=(address>>2)I OxE00000; //设置SDRAM,写信号 writeb((u8)(data&Ox000000FF),ioaddr); writeb((u8)(data>>8&Ox000000FF),ioaddr+1); writeb((u8)(data>>l 6&0x000000FF),ioaddr+2); writeb((u8)(data>>24&Ox000000FF),ioaddr+3); writeb((u8)(taddr&0x000000FF),ioaddr+4); 38 硕士学位论文 writeb((u8)(taddr>>8&Ox000000FF),ioaddr+5); VI,riteb((u8)(taddr>>16&0x000000FF),ioaddr+6); ) 4.4.5 IOCTL系统调用 驱动程序中最主要的硬件控制集中在IOCTL系统调用上,应用程序就是通过 这些IOCTL系统调用和驱动程序进行通讯的,本驱动中ioctl函数的原型为: int a19V576一ioctl (struct inode ·inode, struct file ·filp,unsigned int cmd, unsigned long arg); 该函数定义了函数指针和命令变量,该命令变量即为AL9V576的API命令。 执行函数时首先将指针赋给设备,然后按照相应的命令cmd来执行。 本驱动中主要控制命令有如下几类: 1)AL9V576一IOHCIWRITEADDR、 AL9V576一IOHCIWRITE、 AL9V576一IO— HCIREAD:对主机控制接口(SRAM)相关地址空间进行写地址、写数据、读数据 的操作; 2)AL9V576一10REGREAD、AL9V576一IOREGWRITEADDR、AL9V576一IOR— EGWRITE:对AL9V576相关存储器进行读数据,写地址、写数据的操作; 3)AL9V576 IOSTARTENC:来捕捉视频,该函数主要完成视频和音频的编 码格式、编码类型、比特流等设置和内核态下内存资源的申请和清零工作; 4)AL9V576 IOIMGCONGET、AL9V576 IOIMGGET:获取视频的帧数和数 据; 5)AL9V576-IOSTOPENC:结束编码并释放申请的内存资源。 4.4.6应用程序设计 设备驱动成功的在Linux系统中挂接好之后,我们就可以编写应用程序来处 理视频流了。模块程序流程图如下图4.5所示。 图4。5视频控制解析模块程序流图 本应用程序为前文4.1.2提及的视频控制解析模块。程序首先调用系统调用函 数open打开SRAM设备,而后进入命令选择模式,该命令包括视频流的参数设 39 基于ARM的嵌入式远程视频监控系统的研究与实现 置和视频流的捕捉。按照命令进入相应的ioctl函数进行操作。 程序在处理视频压缩的过程大体有以下几个步骤:(1)调用ioctl函数中的开始 编码命令AL9V576 IOSTAI汀ENC设置视频流的相关参数;(2)建立并打开一个视 频文件;(3)根据视频流的大小为其创建缓存;(4)调用ioctl函数中的捕捉视频帧 数命令AL9V576 IOIMGCONGET和捕捉视频数据命令AL9V576 IOIMGGET来 获取视频数据;(5)等待结束命令AL9V576 IOSTOPENC来结束视频编码并释放 缓存。 视频数据占八个字节,高位在前,地位在后。文件命名采用时间的方式,如 120730 080328.mpg,含义为08年3月28日12点07分30秒所录制的文件。 本程序的捕捉机制分为两种,定时结束和命令结束。设置录制时间为3分钟, 如果3分钟内有中止信号则录制完毕否则录满3分钟。另外视频数据的存储程序 则转入存储单元来处理。 4.5存储单元 本系统采用CF卡在True IDE模式下以l 6位寻址方式访问。用CF卡存储, 最大的优点就是设计小巧,携带方便,但是当主机电源一直接通时,拔插CF卡 将会使其接口方式重新配置成PC Card ATA方式,所以要添加热插拔管理程序。 本单元的程序设计主要由Linux驱动程序和应用程序组成,其中应用程序包含热 插拔管理模块。 CF卡的驱动程序主要是改造Linux中原有的IDE程序,不使用中断事务处 理方式,同时添加一个后台程序来管理CF卡的热插拔事务。图4.6给出了系统中 CF卡的程序结构。 控制器/总线 接口设定 低级 驱动 《 I/0 控制 > 热插拔管理 CF卡驱动程序 G=爿文件系统b==今 应用程序 图4.6 CF卡的程序结构 4.5.1 CF卡驱动 CF卡True IDE模式接口电路的特性和时序与IDE接口完全相同【371,所以True IDE模式下的CF卡驱动与IDE也是一样的。所以我们只需把内核中的IDE驱动稍微 修改一下,添加热拔插部分的I/O控制就可以得到CF卡的驱动程序了。IDE设备驱 动比较复杂,但应用却相当成熟。 在系统中将CF卡作为块设备进行注册。由于DOS文件系统的通用性,采用 VFAT(16位的DOS)文件系统对CF卡上的内容进行组织。驱动为文件系统提供应用 硕士学位论文 接口,即标准的IDE文件操作,包括打开、释放、I/o控制等,它们面向文件系统 对CF卡的数据请求。 Linux内核中注册IDE设备的函数是ide register hw,该函数的定义位置在 drivers,ide/ide.c中,可完成IDE适配器驱动程序的注册及所有想要的工作。与 Linux2.4内核相比,LinuX2.6内核中IDE驱动程序的底层接口基本没有变化,只是 加载方式有所改变,并且取消了ide init default hwifS函数,而使用驱动程序统一 的模块module init来加载IDE设备驱动程序,这使得驱动程序更容易实现模块化 加载和对IDE设备热拔插的软件支持。 4.5.2热拔插管理 在Linux中,系统层和应用层都要对热插拔事件进行处理。在系统层,要探测 CF卡的热插拔事件,分配或释放系统资源,驱动CF卡;另外还要将此事件准确及 时地通知给应用层【l 61。应用层则根据热插拔事件做相应的处理,给用户提供相应 于CF卡的方便、快捷的用户接口。 l、操作系统层 CF卡硬件电路提供了两个用来检测CF卡是否存在的引脚(CDl和CD2)。程 序设计中在操作系统层注册一个字符型设备CF TEST文件,并在文件中定义变 量(如:Cf Insen),用于记录CF卡是否与主机相连。CDl和CD2的有效电平均 为低电平,当主机检测到与其相连的CDl和CD2引脚同时为低电平时,可判断 出CF卡与主机相连,Cf Insen置为1;当主机检测到与其相连的CDl和CD2两 个引脚不同时为低电平,则可判断出CF卡未与主机相连,Cf Insen置为O。 CF TEST管理文件初始化一个等待队列,当系统定时检查出热插拔事件时, 就唤醒该等待队列。内核辨认相应队列,唤醒休眠的任务让它投入运行状态。管 理设备通过一系列文件操作跟应用层通信,如open、release、read、poll、ioctl 等。其中,read用来将要处理的CF卡的热插拔事件传递给应用层,write反馈应 用层处理完的事件,而pon将管理设备的等待信号插入等待队列,以便发生热插 拔事件时唤醒该等待队列,并返回该设备可读的信息。 2、应用层 采用Linux中的Select阻塞机制及时监听CF卡所发生的热插拔事件,并在没有 任何事件发生的情况之下应该停止程序的运行,让出抢占的系统资源,进入阻塞 状态,让程序最小程度地占用CPU资源。 将CF卡系统层的管理设备的文件描述符加入到Select文件描述符集合中,然 后阻塞这些文件描述符。当发生热插拔事件时,系统层唤醒poll力Ⅱ入到等待队列 中的等待信号,并将该设备文件可读的信息传给应用层。应用层通过read函数得 到CF卡的热插拔事件,调用应用层事件处理器,并将该事件通过write反馈到系统 4l 基于ARM的嵌入式远程视频监控系统的研究与实现 层,完成Select循环。 4.5.3存储程序设计 1、存储结构 硬盘和CF卡的true IDE模式在操作上完全一致。硬盘文件系统的物理结构是 指文件在外存储器上如何存放以及与文件逻辑结构的关系。常用的文件的物理结 构有连续文件、串联文件和索引文件三种结构‘381。 连续文件是一种最简单的物理文件结构,一个逻辑上是连续的文件信息存放 到连续的物理块中。串联文件的物理块是不连续的,也不必是顺序排列的,在每个 物理块的尾部设置了一个指针或连接字指向下一个物理块。第一个物理块由文件 说明项中指出,最末一个物理块的连接指针为.1,表示文件存储结束。索引文件 是为文件建立一张索引表,每一个表目指出文件记录所在的物理块号。 索引文件结构既适合随机存取,又方便于动态增长,广泛用于硬盘文件系统 中,本系统也是采用的这种结构。 2、存储方式 视频监控系统中的存储方式大体有五种方式【391:完全存储、流水存储和报警 存储、定时存储、手动存储。 . 为捕捉有用视频,节约存储空间和观看视频的时间,本系统采用的是报警存 储和手动存储相结合的方式。 3、存储格式 为与Pc机格式通用,采用FAT32文件系统格式,FAT32文件系统格式在硬盘 上的存储单位是簇,簇的大小为4K,为了尽可能减少文件存储带来的碎片空间浪 费,考虑到文件内容实际上是一种视频流数据,可以固定每个视频存储文件的大 小为4K的倍数。在硬盘空间使用上考虑到容量限制,系统采用循环存储的策略, 即当存储空间即将耗尽的时候,默认的方式是用最新的文件覆盖最早的文件,当 每个文件大小相同时,采用这种方式可以有效的避免额外硬盘碎片的生成。同时 在硬盘可利用空间小于一定闽值的时候,通过网络报警的方式提醒用户处理硬盘 中的历史数据或采取相关措施。 4、存储衔接设计 在数据存储过程中,视频数据的压缩和存储操作之间的衔接设计是系统保证 传输流量的一个关键的环节。对于嵌入式系统而言,其内存资源有限,采用大缓 冲区的方式常会遇到内存不足的问题。 解决方法是建立一个固定大小的环行缓冲区来实现数据缓存,缓冲区采用先 进先出(FIFO)的调度策略。当数据压缩线程接收到视频压缩芯片发送的数据流后, 首先将其放入环行缓冲区中,判断缓冲区空间使用状况,当剩余空问不足一半的 42 硕士学位论文 时候,向网络传输线程和存储线程分别发送读取信号,其中存储线程启动IDE硬 盘的DMA读取方式来保存数据。 设定环行缓冲区的尺寸要大于视频压缩芯片一次传输过来的数据量的倍数, 以保证不会发生数据溢出的现象,同时也可以使系统不会因为较小的数据量频繁 启动存储线程耗费CPU资源。 将硬盘按文件大小进行分块,通过循环存储的方式来避免对硬盘某些存储区 域进行过于频繁的读写操作,当硬盘空间不足时,最新写入的文件覆盖最早的文 件,即可以避免硬盘空向碎片的产生也可以有效地延长硬盘的使用寿命。 5、文件检索 视频服务器要求具有快速随机检索的功能,并具有较高的访问速度,因此可 以在内存中同时建立了一个索引表,用来记录硬盘使用情况和文件分布情况。其 数据结构定义如下: typedef struct—nleL inf0 { BYTE hard sta: int hard size: //硬盘状态 //硬盘容量 int file size: int nle num: //数据文件大小 //当前数据文件数量 char curremjime【l 6】; //当前时间 char fri吼一丘le_name【20】;//最早的数据文件名,同时是最早录像时间 char fin nle name[20】; //最新的数据文件名,表示最后录像时间 struct folder index幸file folder index;//数据文件检索链表指针 void幸info; //其它信息指针,保留扩展使用 }hard info; 其中nle folder index域指向一个索引顺序表,为文件检索提供分块查找能 力,该索引顺序表通过定时动态刷新的方式进行修改,通过该索引顺序表,系统 可以快速查找到需要时间段内的视频数据文件名,并操作该文件。该数据结构和 索引顺序表同时在硬盘中也通过一个备份文件保存,系统定时对该文件刷新。 对于每个文件也都有一个简单的数据结构保存该文件对应的数据信息,并同 时保存在该文件中,其数据结构定义如下: typedef struct—file—info { int 6le size: //文件大小 int timejen曲t; //文件录像时间长度(单位为秒) char start-time【16】;//录像开始时间 43 基于ARM的嵌入式远程视频监控系统的研究与实现 char endtime[16】: //录像结束时间 char info[20]; //保留扩展使用 } 系统可以通过保存在内存中的硬盘状态和检索表快速完成文件的查找、定位 和操作。 4.6网络传输单元 4.6.1 DM9000驱动 DM9000网络驱动程序是基于中断工作模式下实现的网络驱动程序,主要实 现数据包发送和接收功能,其设计框图如图4.7所示。 I 。M9。。。驱动程序 土 t I骛纛拿篓擘 中断处理 功能模块 上 T I c相嬲器淼曩侗 设备接口层 驱动功能层 硬件设置层 图4.7 DM9000驱动设计框图 数据包的发送是在网络设备驱动程序加载时,通过驱动程序和网络设备接口 之间的有专门定义的数据结构net device结构中的初始化函数指针调用网络设 备的初始化函数,对设备进行初始化;如果操作成功就可以通过net device结构 中的open函数指针调用网络设备的打开函数打开设备,再通过net device结构中 的建立硬件包头函数指针hard header来建立硬件包头信息;最后,通过协议接 口层函数deV.queue xmit 来调用net device结构中的数据包发送函数 dmfe staft xmit的函数指针,完成数据包的发送。该函数将把存放在套接字缓冲 区sk buff中的数据发送到物理设备。 数据包的接收是通过中断机制来完成的【401。当有数据到达时,就产生中断信 号,网络设备驱动功能层就调用中断处理程序,即数据包接收程序来处理数据包 的接收。然后,网络协议接口层调用netif rx函数,把接收到的数据包传输到网 络协议的上层进行处理。 DM9000驱动程序模块设计完毕后,使用模块加载到Linux内核中去运行。 模块的加载由函数int init module(void)实现,当使用者调用insmod命令加载模块 时,系统调用init module()对模块进行初始化和注册。 硕士学位论文 4.6.2流媒体服务器 音视频流从视频服务器端发送,经过网络到达用户端,并随时间连续变化。 由于受网络带宽、计算机处理能力和协议规范等的限制,要想利用网络传输大量 的音视频数据,无论从时间还是存储空间上来讲都比较困难,为了解决这个问题, 可以采用流媒体技术【411。 流媒体服务器以TCP/IP协议栈为基础构建,需要实现I盯P、HTTP、TCP和UDP 等协议,具有IP地址,通过网络可以将设备接入Internet。客户机可以通过RTP与 嵌入式流媒体服务器建立连接,并获得MPEG.4压缩的动态图像码流。本设计选 用UDP协议实现视音频媒体的传输,原理如图4.8所示。 图4。8视频流媒体服务器原理图 1、I玎P和RTCP的传输效率优化 实时传输协议(RTP,Realtime Transport Protoc01)和实时传输控制协议(RTCP, Real time Transport Control Protoc01),是视频流传输所需的最关键的两个流媒体 协议,它们一起提供流量控制和拥塞控制服务【421。 RTP提供点对点网络传输功能,适合通过组播和单播传送实时数据,如视频、 音频和仿真数据【4引。RTP数据分组由固定的RTP数据头,一个可能空的作用资源 表和负荷数据(payload,如实时的音频或视频压缩编码后的数据)组成【4引。RTP被 定义在一对一或一对多的传输情况下工作,其目的是提供信息和实现流同步。RTP 通常使用UDP来传输数据,本身并不能为按照顺序传送数据包提供可靠的传送机 制,也不提供控制或拥塞控制。 RTCP是RTP的控制协议,它用于监视网络的服务质量和数据接发双方传递信 息14 51,它和RTP同时存在并配合使用的服务控制协议,RTP报文头不包括长度和 报文边界的描述,而是通过RTCP控制包为应用程序动态提供网络的当前信息,依 靠RTCP提供可靠的传送机制和流量控制或拥塞控制服务,RTCP协议用于传送实 时信号的质量参数、提供Qos监视机制。 为了达到数字视音频信号的网络传输时延最小的目的,需要在UDP之上利用 RTP/RTCP协议对媒体(视频和音频)流进行封装、打包和同步。应用程序开始一个 45 基于ARM的嵌入式远程视频监控系统的研究与实现 RTP会话将使用两个端口:一个给RTP,另一个给RTCPf4引。在RTP会话期间,各参 与者周期性地传送RTCP包。RTCP包中含有已发送的数据包的数量、丢失的数据 包的数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚 至改变有效载荷类型。RTP和RTCP配合使用,它们能以有效的反馈和最小的开销 使传输效率最佳化。 2、UDP的IP组播 UDP的IP传送方式有单播传送、广播传送、组播传送三种方式【471。IP组播虽 然和广播一样也是一对多的传送方式,但接收端往往不是一个局域网内的所有主 机,而是那些对收发数据报感兴趣的主机,传输端通过一次传输就可以将信息同 时传送到一组接收者;因此,采用IP组播技术可以有效地减轻网络负担,避免网络 资源的浪费【4引。 IP组播要求有底层物理网络硬件的支持。支持IP组播的硬件技术为组播传送 保留了一组硬件地址,组播的每一组从中选取一个作为本组的组播地址,然后对 组内各机器的硬件接口进行配置,使它们能识别该地。IP组播地址即是IP地址中 的D类地址。组播地址范围为:224.0.O.O.239.255.255.255。每一个“主机组”都拥有 一个唯一的组播地址。 TCP/IP网络环境下的应用程序是通过网路系统编程界面套接字Socket实现的 【491。Sockel提供了与任何一个具有Socket接口的计算机通信的端口,应用程序在 网络上发送和接收的信息都通过这个Socket结构来实现。当应用Socket编写代码 时,应用程序通过套接字向网络发送请求或者应答网络请求。 3、服务器的程序流程 该服务器我们主要分成两个线程来完成,第一线程完成服务器套接字的申请, 监听特定端口并创建第二个线程;第二个线程专门处理用户连接,接收用户发来 的数据,根据需求返回适当的视频数据包,如果要返回的是实时数据则触发视频 处理模块,若是存储数据则到CF卡中检索。两个线程的流程如图4.9、图4.10 所示。 I 。嘉H篇羹言卜 创建用户 处理线程 ● 手 图4.9第一线程流程图 硕士学位论文 读取用 户请求 检索CF卡 中数据包 厩请求实时数据 发送视频 中止 数据包 线程 图4.10第二线程流程图 第一线程的部分代码如下: //分析并设定用户输入的参数 if|(parse—args(Video,ar gc,argV)<0)exit(1); //创建套接字,监听指定端口 sockfd=create—and-listen(Video一>o.port); if(sockfd<1)exit(1); //等待用户连接 while((cilentfd=accept(sockfd,(struct sockaddr奎)&remote—addr,&addrjen))>O) { ‘ con=(struct.connection·)malloc(sizeof(stnict connection)); con一>Video=video; con一>socketfd=clientfd; memcpy(&con->remote—addr,&remote—addr,addrlen); //创建线程2,用于处理用户连接 ptherad—create(&pt,NULL,(Void·)handle—connection,(Void·)con); pthread—detach(pt); ) 4.6.3客户端 客户端主要完成两大功能,从局域网中接收组播数据和通过DirectShow模块 将接收的音视频数据播放出来。本系统采用两层结构,即客户机/服务器(C/S)结构 模型来实现客户端的设计。在一个局域网内,嵌入式音视频编解码器向局域网发 送一个组播流,局域网中的PC主机加入到该组播组后,便能接收该组播数据流, 没有加入到该组播组的主机,便接收不到该组播数据流。 客户端软件包括视频数据接收和视频播放两大模块。本设计采用微软公司的 DirectShow技术,借助Directx底层驱动的支持,通过CoM对象和模块化的方法, 把多媒体数据的捕获、传输、处理与渲染从硬件设备的差异、同步、媒体数据格 47 基于ARM的嵌入式远程视频监控系统的研究与实现 式等复杂问题中分离出来,提供统一的API和基类,从而简化了Windows平台下 多媒体应用程序的开发。 l、DirectShow技术 DirectShow是微软公司提供的~套在Windows平台上进行流媒体处理的软件 开发包,DirectShow为多媒体流的捕捉和回放提供了强有力的支持。运用 DirectShow,可以很方便地从网络上捕获数据,并进行相应的后期处理乃至存储 到文件中。DirectShow是一套完全基于COM(Component Object Model,组件对象 模型)的应用系统。 DirectShow使用一种模型Filter Graph来管理整个数据流的处理过程150】。参与 数据处理的各个功能模块叫做Filter;各个Filter在Filter Graph中按一定的顺序连接 成一条“流水线”协同工作。Filter按照功能来分大致分为源过滤器 (SourceFilters)、转换过滤器(TransformFilters)和表现过滤器(RenderingFilters)三 类,分别负责取得数据、数据的格式转换、传输和数据的最终去向。 Filter之间通过Pin来连接,实际上就是Pin之间Media Type(媒体类型)的协商过 程。连接总是从输出Pin指向输入Pin的。当Filter的Pin之间连接完成,则开始为数 据传输做准备,其中最重要的是Pin上的内存分配器的协商,一般也是由输出Pin 发起。’在DirectShow Filter之间,数据是通过一个一个数据包传送的,这个数据包 叫做Sample。Sample本身是一个COM对象,拥有一段内存用以装载数据,Sample 就由内存分配器(A1locator)来统一管理。己成功连接的一对输出、输入Pin使用同 一个内存分配器,数据从输出Pin传送到输入Pin上无需内存拷贝。 在DirectShow系统之上是应用程序(Application)。应用程序要按照一定的意图 建立起相应的Filter Graph,然后通过Filter Graph Manager来控制整个的数据处理 过程,DirectShow能在FiIter Graph运行的时候接收到各种事件,并通过消息的方 式发送到应用程序,这样就实现了应用程序与DirectShow系统之间的交互。 2、程序设计 客户端接收数据时,首先需设置要加入的组播地址和端口,初始化组播套接 字,而后调用ReceiveData()函数接收视频数据,~方面供DirectShow读取,另一 方面写入磁盘文件中。 数据接收后,客户端将数据交给DirectShow进行处理。首先Source Filter引入 数据到过滤器图表中,该数据来源于接收端的套接字端口。通过Stream Splitter把 输入MPEG.4数据分割成视频流和音频流,这两路流分别由相应的解码器来进行 处理,最后通过视频和音频的渲染过滤器提交给外设。 具体实现的模块包括组播套接字的初始化、数据的接收、多窗口的实现和 DirectShow播放。 1)初始化组播套接字 硕士学位论文 客户端的套接口初始化同服务器的套接口初始化有些不同。首先客户端在创 建套接字后,需要将套接字绑定到指定的组播端口及默认的接口;其次为了能接收 组播出来的数据,客户端需要加入到指定的组播组。该部分包含两个重要的函数: Bind()函数和WSAJoinLeaf()函数。Bind()函数把一个本地协议地址赋予一个套接 字。WSAJoinLeaf()函数将已经创建的套接字加入到特定的组播组中。 21)接收模块 Winsock提供了一些I/0模型帮助应用程序以异步方式在一个或者多个套接字 上管理I/0。该I/O模型共有6种:阻塞(blocking)模型、选择(select)模型、 WSAAsyneSelect模型、WSAEventSelect模型、重叠(oVerlapped)模型和完成端口 (completionpon)模型。为了适应windows的消息驱动环境,在组播接收的套接字 上采用了WSAAsyncSelect模型.这个模型允许程序以Windows消息的形式接收网 络事件通知。WSAAsyncSelect函数自动把套接字设为非阻塞模式,并且为套接字 绑定一个窗口句柄,当有网络事件发送时,便向这个窗口发送消息。 3)多窗口实现 客户端可以通过选择不同组播组来接收~路或多路组播数据,采用了多文档 界面(Multi.DocumentInterface,MDI)设计思想,每一路窗口对应一个用户界面线 程,负责一路视频流的接收和实时播放【511。通过菜单命令“组播加入”,可在主框 架窗口类中响应菜单命令,函数代码如下: Void CMainFrame::OnSettingRequesto{ RECTrect; CReVPIayMDIChildWnd幸pReVPlayMDIChildWnd=new CReVPIayMDIChildWnd; GetCIientRect(&rect); if(!pReVPlayMDIChildWnd一>Create(—T(”M9试接OV’),rect,this)) retUm; ) 4’)DirectShow播放模块 DirectShow提供了MPEG解码的所有Filter,包括MPEGS tream Splitter、MPEG Video Decoder和MPEG Audio Decoder。我们需要创建一个能够接收发送端发来的 数据,并提供给Filter Graph其他Filter解码的Source Filter。数据的流动主要通过 MPEGS tream Splitter调用Source Filter的输出管脚上IAsyncReader接口的Read方 法向SourceFilter请求数据,其中Read方法在CMemStream类中有相关定义。 49 基于ARM的嵌入式远程视频监控系统的研究与实现 第5章系统调试及试验结果 5.1调试平台及硬件 调试平台硬件:Pentium(R)4,CPU:3.0GHz,内存:5 12M; 调试平台操作系统:Microsoft Windows XP Professional SP2,在该系统上安 装虚拟机软件Vmware,并在虚拟机上安装Linux RedHat 10.5。 试验硬件为本系统终端电路板,硬件实物如下图5.1所示。 图5.1终端实物图 5.2试验结果 由于本系统采用了性能良好的视频控制芯片TW2835和视频编码芯片 AL9V576,视频采集和压缩的效果有了保障,再者采用嵌入式操作系统Linux使 得设备运行更加稳定,内置了流媒体服务器方便动态浏览,使得基于MPEG.4的 压缩图像在低传输通道传输时得到保证,本系统已经达到了较好的效果。 连接设备终端,烧录Bootloader,用DNW调试工具下载Linux内核和根文件 系统,系统启动正常。下图5.2为运行时的截图。 匿墨翟墨墨E墨毯匿墨墨滋翟麓瀚翳缀鬻爨荔鬟鬓i鬓薹曩 蒯捌 铀fd p。rt u绱P甜t coⅣ嵋}Ⅳ事帅HeIp dO帅lOad. USB host is connected。Uditing a Read chiD id-ec76 Hand flash st3tus a cO ra州isk;口 Set boot para—s—root一,dPv,ntdblock2 initt/linuxrc lDad console-ttyS日C1。115200舶n-65536K deVfs-舯unt displa,-san2“9 L0ad Kernel... Unconpressing L.1.nUX..............................,..................................。.......... ……………………..done.b00tinq the kernel. Linux uPrsion 2.6.'2一h19q矗(t‘DDt癌10calhost.10caldo^ain’(gcc uersion 3.4.1't茸∞ Wed Dec 28 13:S3:D2 CST 2886 cPu:日RH920Tid(加)【4”29209J reuision n‘nR¨u-T' CPU日: D UlUT wite—back cache ePUa: l cache: 16384 bytes.associatiuit,64.32 byte lines.8 sets P¨0:D cache: 1638t bytes. a5sociatiuit9 6q。32 bytP lines,B sets 图5.2设备终端运行Linux截图 50 硕士学位论文 本地显示图像如下图5.3所示: 图5.3本地显示图像 动态效果截图如图5.4所示: 文『牛(E)壹看㈦撬艘(黝工且(D帮助(∞ 图5.4动态效果截图 5l 基于删的嵌入式远程视频监控系统的研究与实现 总 ,必结耋日与—■展厅≮望主 本文的研究成果 本文详细论述了基于S3C2440微处理器和嵌入式Linux操作系统的视频监控 系统设计与实现的整个研究过程。总结起来,本文的主要工作有以下几点: (1)在分析嵌入式系统特点、典型平台设计方案以及视频监控市场需求的基础 上,提出了采用多路视频采集芯片+视频压缩芯片+嵌入式处理芯片的方案来构 架本系统平台。 (2)采用双核结构,在主控芯片S3C2440外,采用另一微处理器C8051F340 在控制视频处理芯片TW2835处理1.4路模拟视频输入、数据优化、画面分割、 叠加环境信息在屏显示(OsD)的同时,采集环境信息,并与主控芯片串口通信来 提供多种触发机制。 (3)优化视频压缩,采用AL9V576芯片进行硬件编码以及成熟的MPEG.4编 码算法,支持CIF、QCIF和Dl等图像格式(必要时可支持4CIF格式),提供了高 质量的视频浏览效果。研究视频压缩芯片的SRAM接口,并设计开发了Linux系 统下的驱动程序,突破了主处理器S3C2440无PCI专用接口的限制,增加了模块 组合的灵活性。 (4)设计了基于CF卡的存储方案,提出了一种在嵌入式视频服务器上的视频 检索和存储方法,支持基于时间的视频检索功能,并且设计了CF卡热拔插管理。 (5)针对视频监控系统的网络传输的特点,设计了嵌入式视频服务器,采用IP 组播的方式传送视频数据,同时视频数据的传送使用了I汀P/I玎CP协议,对系统 的Qos提供了有力的保证;基于PC平台开发了客户端,实现了视频数据的网络 传输。 2.研究工作展望 虽然本系统实现了视频数据的采集、压缩、存储和网络传输等功能,但是本 系统在商业使用价值上,还存在一些不足,需要改进。具体如下: (1)从CPU芯片选择上来说,S3C2440是一款优秀的控制器,但是它对视频的 处理能力不是很强,比如图像的播放,所以最好选择一款带有图形加速器的微处 理器。 (2)就整个系统应用来说,还需要在PC机上有一个完整的客户端软件,用来控 制远程的监控系统和接收图像数据并显示接收到的图片,现在的客户端软件主要 是为了测试监控系统功能而开发的,在稳定性和实用性方面都有很大的不足,不 52 硕士学位论文 能满足商业需要。 (3)该设备没有实现播放功能,如果能在LinuX系统中加入播放器,再添加一个 触摸屏,那么本系统将会非常完善,其商业价值也将大大提高。 基于ARM的嵌入式远程视频监控系统的研究与实现 参考文献 【1】 Schulzrinne H,Casner S,Frederich R,etc.IHP:A Transport Protocol for Real—Time Applicatinons.RFC 1 889,I 996 【2】 梁春雁,谢剑英.智能大厦的视频监控系统设计.测控技 术,1999,18(10):28—30 【31 施裕丰,陈坚,陈启转.网络式多媒体监控系统.计算机工 程,2000,26(3):74.76 【4】 胡永红.智能多路视频监控系统的设计.微机发展,2001,1(2):75.76 【5】 Dapeng Wu,Yiwei Thomasd Hou,Wenwu Zhu,etc.Streaming Video over the Internet:Approaches and Directions.IEEE Transactions on cifcuits and Systems for Video Technology,200l,ll(3):65-67 【6】 谭铁牛.智能视觉监控技术概述.北京:中科院自动化研究所,2002,14.15 【7】 梁修如,严国萍.嵌入式视频监控服务器系统典型方案及其性能分析.电视技 术,2005,1(10):93·96 【8】 肖政宏,韩秋凤,朱丽群.基于ARM和DSP的远程视频监控系统的设计与实 现.计算机工程与科学,2006,28(9):53.55 【9】 刘洁瑜,王黎明,钱培贤.基于MJPEG2000嵌入式网络视频采集压缩系统的 设计与实现.微电子学与计算机,2004,2l(12):168.173 【lO】许峰,赵晓峰,刘岩.OSD技术在点钞机数据监控系统中的应用.自动化技术 与应用,2005,24(7):43—45 【11】张琛,戚文芽.基于TMS320DM642芯片的画面分割和OSD叠加.信息工程大 学学报,2005,1(3):66—68 【12】唐忠平,李晓勇,白英彩.基于TIDM642 VOD系统中OSD功能的设计与实现。 微型电脑应用,2005,2l(1):43.46 【1 3】刘兵,王荣良.车载广告机0SD系统的设计与实现.微型电脑应 用,2005,2l(6):22-24 【l 4】Samsung Electronics Co.,Ltd.S3C2440X 32一BIT CMOS MICROPROCESSOR USER’S MANUAL.www.samsungsemi.com,2005-1 2一06 【15】周立功.LPC2210使用指南.北京:北京航空航天大学出版杜,2004:74.79 【16】阳富民,罗飞,涂刚.嵌入式Linux中CF卡的驱动和管理技术研究.计算机工 程与设计,2004,9(9):1495.1497 【17】戚继忠,王自强.基于ARM7TDM I实现CF卡存储的文件系统设计.微处理 机,2007,l(1):114.115 硕士学位论文 【l 8】CompactFlash Association.CF+&CompactFlash Specification ReVision 2.1. www.compactflash.org,2006-03-2 1 【19】Silicon Laboratories Inc.C805 lF34x F锄ily Datasheet ReVision0.5. www.siUicon.com,2006一08—1 0 【20】 ’I.echwell,Inc.’I’W2835SpecV 1.1.www.techwell.com,2007-04一03 【21】 AVerLogic 1陀chnologies,Corp.AL9V576 MPEG-4/2/l A/V Encoder Datasheets 、krsion 1.0.Ⅵrvvw.aVerlogic.com,2006-08-1 0 【22】 沈连丰,宋铁成,叶芝慧.嵌入式系统及其开发.北京:电子工业出版 社,2005,216.2l 8 [23】 詹荣开.嵌入式系统Bootloader技术内幕.www.1inuxsir.org,2003.12.18 【24】 孙天泽.嵌入式设计及Linux驱动开发指南.北京:电子工业出版 社,2004,207.208 [25】 陈莉君.Linux操作系统内核分析.北京:人民邮电出版社,2000,67.69 【26】 毛德操,胡希明.Linux内核源代码情景分析.杭州:浙江大学出版 社,200l,156.157 【27】 倪继利.Linux内核分析与编程.北京:电子工业出版社,2005,231.235 【28】 刘伟平,毛玉良.在嵌入式Linux上实现JFFS文件系统.微计算机信息,2003, 19(1):46-47 【29】 Vipin Malik.The Linux MTD,JFFS HOWTo.ftp://ftp.1inux.org.uk,2003-06-10 [30】 吴娴.嵌入式Linux文件系统的设计和实现.计算机工程与应 用,2005,1(9):111.112 [31】 范庆辉,阳福民.基于Tw2834的OsD技术研究与实现.计算机工程与设 计,2007,28(1 0):2469—2471 [32】 Alessandro Rubini,Joneathan Corbet.Linux device drivers.2nd Edition.USA: O’REILLY Media Inc,2005,3 l 5—3 1 7 [33】 Daniel VbVet,Marco Cesati.Understanding the Edition.USA:O’REILLY Media Inc,2003,228.230 Linux kernel.2nd [34】 Neil Matthew,Richard Stone.杨晓云,王建桥,杨涛,高文雅译.Linux程序设计. 北京:机械工业出版社,2002,175.180 [35】 王多智.嵌入式Linux下SRAM驱动程序的开发原理及应用.微计算机信 息,2005,21(5):73-74 [36】 AVerLogic Technologies,Corp.AL9V576 Host Control Interface App“cation Notes.www.aVerlogic.com,2006-08-10 [37】 刘淼.嵌入式系统接口设计与Linux驱动程序开发.北京:航空航天大学出版 社,2006,244.245 55 基于ARM的嵌入式远程视频监控系统的研究与实现 【38】周兵,方俊.多路视频监控系统的存储调度策略.计算机工程与应 用,2004,1(18):85.87 ’ 【39】范金刚.智能视频监控系统若干关键技术的研究与实现【电子科技大学硕士 学位论文】.成都:电子科技大学,2006,45.46 [40】韩超,王可人.基于DM9000的嵌入式系统的网络接口设计与实现.工业控制 计算机,2007,20(4):17.18 【41】陆其明.DirectShow开发指南.北京:清华大学出版社,2003,315.318 【42】许华荣,李名世.基于RTP的实时视频传输系统.计算机工程与设 计,2005,26(4):876—878 【43】饶雨泰.流媒体服务器实现中应注意的问题.科学技术与工 程,2005,5(28):1267.1270 【44】陈孝莲.基于IP组播的数字视频传输系统的研究【河海大学硕士学位论文】. 南京:河海大学,2003,60.6l [45】肖磊,陈卓.流媒体技术与应用完全手册.北京:清华大学出版 社,2003,263.264 【46】高旭,沈苏彬.网络多媒体实时传输协议浅析.计算机应用研 ’ 究,2000,l(2):6.8 【47】四维科技.VC++视频/音频开发实用工程案例精选.北京:人民邮电出版 社,2004,334.336 [48】陈庆吉.支持实时多媒体传输的应用层组播系统.计算机工 程,2005,3l(4):136·138 【49】张勇.远程视频监控系统中传输技术的实现【电子科技大学硕士学位论文】. 成都:电子科技大学,2004,35.37 【50】雷刚勇,解梅.基于DirectShow的MPEG.4远程视频监控系统.电视技 术,2005,l(5):91.92 【51】朱晖,陈浩.基于DirectShow的流媒体网上答疑系统.西南民族大学学 报,2006,32(2):361.365 56 硕士学位论文 致谢 首先要感谢我的导师谢胜曙副教授。整个研究生学习期间和论文完成阶段, 谢老师不仅在学业上给予了我谆谆教诲、悉心指导、严格要求,而且在生活上备 加关怀,使我得以顺利完成研究生阶段的学习。谢老师渊博的学识、深厚的学术 造诣、极富启发性的指导令我受益匪浅,严谨的工作作风使我敬佩不己,他那种 平易近人的态度处处表现出他的人格魅力,而他的为人处事的作风将使我终生受 益。 课题研究中,一起工作的潘滟、盖天、张德力都给了我很多热情无私的帮助 和鼓励,在此表示诚挚的谢意。 感谢研究生阶段与我朝夕相处的同学孙磊、张超、祖珍君、伍济开、王晖、 丁厉华和柳笛,他们在学习、生活上的鼓励和帮助,使我得以顺利完成学业。 另外,我还要感谢我的家人,没有他们的全力支持,我无法完成学业,感谢 他们对我的支持、鼓励和帮助。 最后感谢各位专家教授在百忙中对本文的审阅和赐教1 张群 2008年4月 57 基于ARM的嵌入式远程视频监控系统的研究与实现 附录A攻读硕士学位期间所发表的学术论文目录 [1】 张群,谢胜曙,潘滟.基于SRAM接口的多路视频采集压缩模块.微计算机信 息,已录用,待发表,2008 【2】 潘滟,谢胜曙,张群.基于BP神经网络指纹识别的算法.邵阳学院学 报,2007,4(1):54—57 58 硕士学位论文 附录B部分原理图 59 基于ARM的嵌入式远程视频监控系统的研究与实现 蔫涨 0ⅣK K K 懋:《 :“ 臻 'e :芋8 疆 :熹。錾 簇鬟 —占㈨ 够翼 溢嚣潞 盎徽撒 q∞ U山 tn 驾l oooo oo oooo nBEo nwBEo ooMo )i 翁盆 吞各 S§gg v。。。 nBEl nw日E,00¨1 芏竺 兰圣兰三vD T,GPc9 nBE2=nW8E2 00M2 nBE3:nwBE3 DOM3 一一 rfⅢno、8∞一:一—4∞ “r世oa研o:一m∞ nPⅢLoazJoE∞ Hn—%arPz—ua—岔c 840,L_P2|;嚣c 山Ⅲ山叫VO“GPCIO … V03,GPC” r.GCs6 nScso 麓嚣“”*一 鳕托。嚣和钽. 踣鲢两葜蟠醒一。 卜)o《ho∞u墨石∞型 日口“oa—P三Ⅲ;o∞一!墨 8no寻f■z一掣LI蚺o:匠∞ hoB濞r卜三掣王JuE∞ VD4,GPCI2 VD5,GPCI 3 VD8,GPCI{ n8R^S 3CKE 9CLKO SCLKl ALE,GP^18 麓琵pA22”m c。n—nr sOCMD,GPEB SDD^1^O,GPE7 SOD^T^1,GPE8 r…一’, sq 。 o c m x .“ vD7,GPCI5 VDWGPDO VDWGPDl vD'O,GP02 K0雒?^ V011,GP03 v01爿GP04 VDlⅣGPD5 V0{wGP08 VDlⅣGPD7 V01剧GPD8,SPlMl801 VD”,GP09,S PlMOg’ VDl8,GP01甜S创CLK' VDle,GPDl 1 V020,GPDl2 V021,GP01 3 v022,n8S1,GP01d VD2Ⅳn8S0,GPDl5 簌蚰雒雌 菇嚣鲳 ”酣鸳鳇 m筵黯踞醛毪 ∞to女Ju] J麓 mu%击onJ 圣。商r卜z∞、山口zE P∞口卜c YuP 石P oDP ∞{卜 o“o、Dz圳 Puno王Jo> H20、uz>∞王山三J) n芷o、uz}∞)m:《E蚩 tu&o、zuo),S ouJ 叮uno,^山口u当ouJ huⅡo品>Uzu生。芏 ooJ 鬣鬣 拢骓蚝骓 瀚髂 LCDVF' CPU.B 。苫I黜“1f≮。 “。 )m● Fn妇AⅢt'7 2007 bhen 19 d ∞ 硕上学位论文 T201rP T21 TP T26‘rP 1r27 TP T28 TP T29 Tp T3S TP T32 TP e= Ⅲ m e= m伊m作w 伊 C135 “ 2n。。。。0昙篙臻 'EINTl7/GPG9 1 EINTl 8,nCO SO A1 CAMDA A2 A3 ^4 A5 A6 A7 R122 4 7K L一一 2 U27C 暑l置I曼I墨1%巨l霉l≈12k,l,l冕I嚣国是l§I蚤lSig器 il;,;。i:妻 llililll 。 :。;,i。器,:.,,er“z, 12§’§‘§§。7’’。。。。 El E量E∈ 兮9呈宝兮兮 10S 124 123 ’22 12E 14● 121 EINT0,GpFO E}NTl,GPFl EINToGPF2 EfNT3jGPF3 VDDOP VD00P EfNT‘,GPF4 EINT5,GPF5 VDDoP VDDoP EINT8,GPF6 EIN‘盯,GPF7 VODMoP EINTB,GPG0 EINTWGPGl VOOMOP VDOMOP EINTl6,GPG8 黜:22;;激深, 33=2 4 4 0^ VDDMoP V VO DO 0M№oPP CAMPCLJqGPJ8 CAMVSY NC,GPJ9 VDDMoP VSSA ADC CAMHREF,GPJl0 CAMCLKOU T,GPJl 1 VSSI VSSI camP…nte CA『^RESE T,GPJl2 CAMOATA0,GPJ0 rf… CAMOAlAO,GPJl VS辅 VS割 VSSl CAMOATAo,GPJ2、,sSI CAMDAlAO,GPJ3 VSSl CAMDAlA0,GPJ4 CAMOATA0,GPJS VSSA MPLL :船:TA影搿l雏i_l i;§§lllli;l髂8%髂鹕8叫“。 ∞∞∞田∞∞∞ ∞∞们∞∞∞‘J) )>>>>>> ∞∞∞∞∞∞∞价∞∞∞∞∞∞∞ ∞们∞∞∞∞竹∞∞∞∞∞∞∽∞ >>>>>>>>>>))>>> 3。5一 269 87 3 ‘ 27 12 51 119 s,cz··。哩lil蔑l蓉l鼍I:i嚣J=1218l譬1212k1、l。I葛lSl再IiIi £习=工正。, 工::E卫卫r 守 ntIe CPUC …叫船:∥……‘ )ale: Fndav Auuust 1 7 2007 Bheel 20 of 降 30 6l 基十ARM的嵌入式远程视频监控系统的研究与实现 62 硕士学位论文 §口EbP,.nilh: SB‘El^IJ 目Fb●6;l 63 基于ARM的嵌入式远程视频监控系统的研究与实现 作者: 学位授予单位: 张群 湖南大学 相似文献(10条) 1.学位论文 张伟伟 基于ARM的嵌入式视频监控系统设计 2007 本文分析了国内外视频监控系统的发展现状,针对当前省广播监测中心具体要求和工程实际情况,介绍了一种基于ARM的嵌入式视频监控系统。该方 案相比于传统的多媒体监控系统具有体积小、成本低、稳定性高、实时性好等优点,具有很强的实用性价值。论文完成了基本的硬件系统设计和软件开 发。 硬件方面采用USB摄像头与S3C2410处理器组成嵌入式视频采集装置,并通过以太网连接宿主机从而组成视频监控系统。 软件方面分为系统软件的移植和应用软件开发两方面。系统软件方面包含ARM平台的BootLoader和嵌入式Linux的移植;应用软件方面包含前端ARM平 台嵌入式视频采集软件设计,前端TCP视频服务器程序设计,宿主机TCP客户端程序设计和宿主机视频解压显示程序设计四个部分。 论文的最后对系统设计所完成的内容进行了总结,并提出了改进方法。 2.期刊论文 郭波.樊丁.彭凯.GUO Bo.FAN Ding.PENG Kai 基于DaVinci技术的嵌入式视频监控系统设计 -测控技术 2009,28(10) 针对视频监控系统实时性要求高运算量大的特点,提出了基于DaVinci技术的嵌入式视频监控系统设计方案.方案利用基于DaVinci技术的 TMS320DM6467 ARM+DSP双核处理器,提高了系统性能,缩短了开发周期.ARM核植入嵌入式Web服务器,以UDP协议实时传输视频数据,实现控制模块与监控终 端之间的通信.DSP内核视频数据编码算法选用H.264,大大提高了数据编码效率. 3.学位论文 侯树静 基于无线局域网的嵌入式视频监控系统研究 2007 根据目前监控行业的现状及发展趋势,采用最新的嵌入式理念,利用各种网络通信技术,实现视频监控系统的数字化、网络化,已经成为监控领域 发展的主流。 本课题结合常州明景电子有限公司的网络高速球型摄像机开发项目,提出一种新的网络视频监控系统设计方案,将网络视频服务器的功能分散到前 端高速球型摄像机,在前端高速球机中嵌入Web服务器,并通过无线局域网连接到Internet,组成一个基于无线局域网的嵌入式网络视频监控系统,使用 浏览器就可以在用户端进行视频监控。 论文阐述了基于无线局域网的嵌入式视频监控系统的整体构建;将网络高速球作为研究对象,把嵌入式ARM微处理器应用于网络高速球的硬件设计中 ,介绍中央管理模块和网络接入模块的功能实现,组成以PRISM-2芯片组为主体的无线网络模块;论述嵌入式网络高速球的软件设计,完成uClinux操作 系统的嵌入和移植;构建了基于TCP/IP协议的嵌入式Web服务器;通过无线局域网实现了视频数据的无线传输;最后分析和讨论了系统调试过程中遇到的 问题,并提出进一步开发设想。 4.学位论文 胡杰 基于ARM的嵌入式视频监控终端的研究 2008 随着工业技术的不断发展,以及人对安全防范意识的逐渐加强,视频监控系统已经成为人们在生产、生活中必不可少的一个部分。特别是近年来 ,随着计算机技术的发展、宽带的普及、图像处理技术的提高,视频监控在越来越广泛地渗透到教育、娱乐、医疗、运动等各个领域。视频监测系统已 经成为当今可视化领域的一个新的开发热点。许多应用领域对于视频监控系统提出了更高更新的要求,如何经济有效地实现特定环境所需的监控功能 ,给我们提出了新的课题。 本文设计和实现了基于ARM9和Linux操作系统的嵌入式视频监控系统,实现视频图像的采集、压缩和传输。文章结合嵌入式技术、图像压缩技术和网 络技术,设计了一种基于嵌入式的网络视频监控系统。 本文首先研究了视频监控系统的发展现状及今后发展趋势,详细分析了嵌入式监控系统的基本原理和性能要求,提出了系统的设计的总体方案。在 硬件设计方面,系统采用三星公司的S3C2410A作为嵌入式处理器,配合外围硬件电路构成嵌入式核心板。系统采用模块化设计方案,将硬件划分为三大 模块:主控器与储存器模块;电源时钟复位电路模块;外围接口电路模块。在论文中对各个部分进行了详细的介绍。完成了核心板的硬件设计后,接下 来介绍如何构建嵌入式监控系统的软件平台,包括成功的移植Linux操作系统;嵌入式Linux下USB接口摄像头驱动的接口和实现。最后在基于嵌入式 Linux系统的平台上完成应用程序的设计,完成视频图像的采集、压缩、传输,这部分主要完成的工作有:如何使用Video4Linux API库函数实现图像采 集;如何实现视频流的软件压缩;如何保证视频流数据的实时传输。 本文实现了一种体积小、成本低廉、数字化的监控解决方案。该系统可满足监控系统对数据传输可靠性和实时性的要求,具有广泛的应用价值。 5.期刊论文 赵杰.王震洲.Zhao Jie.Wang Zhenzhou 基于网络连接的嵌入式视频监控系统研究 -仪器仪表学报 2006,27(z3) 设计了设计并实现了一种嵌入式网络实时远程视频监控系统.该系统硬件采用DSP和ARM双CPU结构,图像的实时压缩采用H.264算法,并针对DSP的特点 对算法进行了优化,网络传输基于精简的TCP/IP协议,应用层采用RTP/RTCP协议.系统实现了视频图像高速采集、实时压缩和视频数据的远程的网络传输. 6.期刊论文 郭波.樊丁.彭凯 基于DaVinci技术的嵌入式视频监控系统设计 -安防科技2010,""(1) 针对视频监控系统实时性要求高运算量大的特点,提出了基于DaVinci技术的嵌入式视频监控系统设计方案.方案利用基于Davinci技术的 TMS320DM6467 ARM+DSP双核处理器,提高了系统性能,缩短了开发周期.ARM核植入嵌入式Web服务器,以UDP协议实时传输视频数据,实现控制模块与监控终 端之间的通信.DSP内核视频数据编码算法选用H.264,大大提高了数据编码效率. 7.学位论文 蒋毅 嵌入式视频监控服务器传输系统设计 2006 视频监控是安防系统的重要组成部分,目前以计算机技术及视频图像编解码技术为核心的数字视频监控已经获得了广泛应用。而近年来,数字式产 品的微型化趋势越来越明显,以网络为依托的嵌入式视频监控正在逐步取代原有的监控系统。本文基于作者在四川川大智胜软件股份有限公司安防视频 监控研发中的嵌入式视频监控服务器的科研课题,探讨传输系统设计中的关键技术。实际开发出的系统满足基本应用需求,能够较好地与公司现有的成 果衔接,并为进一步研发奠定了基础。 本文首先讲述本系统的总体结构及其在整个视频监控系统中的作用,它负责将前端系统压缩编码的视频流通过局域网传输到客户端。接着对构成系 统硬件核心的基于ARM的微控制器作了介绍。最后简述硬软件框架、开发流程和调试方法。 系统以微控制器作为控制和传输的核心硬件,扩展外围电路,配置了系统必备的资源。特别为方便开发调试考虑,设计了多个与外界通信的接口。 使用物理层网络控制芯片配合微控制器片内集成的EMAC以太网控制器,提供对网络传输的支持。 嵌入式系统的程序引导启动策略需要根据特定硬件资源和具体应用目的而设计。本方案结合此微控制器的片内存储器特点和开发过程中调试更新程 序的需要,以及系统正常运行考虑,设计了二级引导程序,它能够适应两种启动模式,加载下级程序和实现与上位机的通信。本文给出了它的实现细节 ,并对直接加载Linux操作系统的引导程序的编制做了详细说明。 网络设备驱动程序的设计是本系统的软件的重要组成部分。文中对如何以物理层网络芯片和EMAC控制器实现网络传输做了阐释。 8.会议论文 赵杰.王震洲 基于网络连接的嵌入式视频监控系统研究 2006 设计了设计并实现了一种嵌入式网络实时远程视频监控系统.该系统硬件采用DSP和ARM双CPU结构,图像的实时压缩采用H.264算法,并针对DSP的特点 对算法进行了优化,网络传输基于精简的TCP/IP协议,应用层采用RTP/RTCP协议.系统实现了视频图像高速采集、实时压缩和视频数据的远程的网络传输. 9.学位论文 方芳 基于ARM的嵌入式视频监控系统的研究 2008 视频监控以其直观方便、准确、信息内容丰富而广泛应用于许多场合,已经渗透到交通、城市治安、国防等多种领域,甚至家庭安防,在人们的日 常生活中扮演着越来越重要的作用。 由于传统的视频监控系统存在着结构复杂、稳定性可靠性不高、价格昂贵而且传输距离明显受限的缺点。同时,随着近年来计算机、网络、电子与 通信、图像处理等技术的飞速发展,视频监控技术正朝着一体化、视频全面数字化、监控网络化、系统集成化的嵌入式视频监控方向发展。 因此,本系统采用32位ARM处理器和市场上广泛使用的价廉物美的ZC301芯片的USB摄像头,通过GPRS模块,将图像不断的发给远端的管理指挥中心。 本文将介绍这种基于ARM的嵌入式远程视频监控系统的研究。首先,介绍了嵌入式技术的发展趋势及研究现状,几种主要的操作系统以及ARM处理器 的发展情况。然后,分析了嵌入式LINUX的源代码以及内核的组成和运行原理,并论述了如何在ARM硬件平台上进行嵌入式LINUX内核的编译与移植,介绍 了Bootloader的启动原理及运行过程,并对在LINUX操作系统下的USB驱动程序的开发进行了详细的研究。最后,详细论述了如何利用摄像头进行一路或 者多路的静态图像采集,以及利用GPRS协议建立服务器完成了图像的网络传输。 硬件方面采用USB摄像头与S3C2410处理器组成嵌入式视频采集装置,并通过GPRS连接宿主机从而组成视频监控系统。 软件方面分为系统软件的移植和应用软件开发两方面。系统软件方面包含ARM平台的Bootloader和嵌入式Linux的移植;应用软件方面包含前端ARM平 台嵌入式视频采集软件设计,GPRS模块程序设计,客户端监管系统程序设计三个部分。 10.学位论文 蔡士义 基于ARM+DSP嵌入式视频监控系统的设计与研究 2008 随着网络、通信和微电子技术的快速发展和人民物质生活水平的提高,视频监控系统以其直观、方便和信息内容丰富的特点而被广泛的应用。本文 利用ARM+DSP的双核结构,对基于ARM+DSP嵌入式的视频监控系统进行了设计和研究。 本系统大致分成两部分-DSP图像采集处理部分和ARM实时控制应用部分两部分。子系统分别选用TMS320DM642和AT91RM9200作为两部分的主控芯片 ,利用它们各自的优势在系统中发挥不同的功能。 DSP的图像采集处理部分通过CCD摄像头对特定的区域采集视频图像,并由视频解码芯片进行视频解码处理。处理后的数字视频信号放入DSP内通过视 频运动检测算法进行图像处理,以掌握是否有异常的情况发生。如果有异常情况发生,则立刻由DSP向ARM实时控制应用部分施加中断信号,并将识别处 理后的结果全部发送过去。 ARM的实时控制应用部分实现对DSP图像采集处理部分的实时控制,实现支持Linux平台的硬件架构,实现网口、串口和USB等接口用于数据传输,实 现图像的显示和友好的人机界而等等。ARM实时控制应用部分本身不参与图像识别和处理相关的算法实现,而只是配合DSP将图像处理的结果显示出来 ,并在恰当的时机触发外部控制器实现一定的对外控制功能。 基于ARM+DSP架构的视频监控系统的设计思想与实现原理,本系统分为控制模块和视频处理模块,二者独立开发和调试,通过HPI并行方式连接,提 高了软硬件任务的模块化程度,增加了系统的稳定性、可靠性和灵活性,符合嵌入式视频监控的功能要求,可以面对日益复杂的视频应用。本文还介绍 了基于AT91RM9200处理器子系统开发板的底层BootLoader程序的开发和对Linux操作系统移植的过程。最后论文在设计并实现的基础上对系统的改进提出 了一些新的方法和建议。 本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1259973.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); }) })