基于ARM的远程监控系统设计(毕业设计论文).doc_第1页
基于ARM的远程监控系统设计(毕业设计论文).doc_第2页
基于ARM的远程监控系统设计(毕业设计论文).doc_第3页
基于ARM的远程监控系统设计(毕业设计论文).doc_第4页
基于ARM的远程监控系统设计(毕业设计论文).doc_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

(2013 届)届) 本科毕业设计(论文)资料本科毕业设计(论文)资料 题题 目目 名名 称:称: 基于基于 arm 的远程视频监控系统的远程视频监控系统 学学 院(部):院(部): 理理 学学 院院 专专 业:业: 电子信息科学与技术电子信息科学与技术 学学 生生 姓姓 名:名: 班班 级级 学学 号:号: 指导教师姓名:指导教师姓名: 职职 称:称: 副教授副教授 最终评定成绩:最终评定成绩: 2013 届届 基于 arm 的远程视频监控系统 2 本科毕业设计(论文)资料本科毕业设计(论文)资料 第一部分第一部分 毕业论文毕业论文 (2013 届)届) 本科毕业设计(论文)本科毕业设计(论文) 学学 院(部):院(部): 理理 学学 院院 专专 业:业: 电子信息科学与技术电子信息科学与技术 学学 生生 姓姓 名:名: 班班 级:级: 学号:学号: 指导教师姓名:指导教师姓名: 职称:职称: 副教授副教授 最终评定成绩:最终评定成绩: 2013 年 6 月 基于 arm 的远程视频监控系统 4 本科毕业论文(设计)本科毕业论文(设计) 诚信声明诚信声明 本人郑重声明:所呈交的毕业论文(设计) ,题目基于 arm 的远程视频监控系统是本人在指导教师的指导下,进行研究工作 所取得的成果。对本文的研究作出重要贡献的个人和集体,均已在 文章以明确方式注明。除此之外,本论文(设计)不包含任何其他 个人或集体已经发表或撰写过的作品成果。本人完全意识到本声明 应承担的责任。 作者签名: 日期: 湖南工业大学本科毕业设计(论文) i 摘 要 针对网络视频监控设备的实际应用需求,本文设计了一种基于 arm 嵌入 式技术的网络视频监控系统,其结合图像采集压缩编码、嵌入式系统和网络技 术,设计了一套嵌入式网络视频监控系统,用以实现图像视频数据的采集、压 缩与网络传输。该系统基于 s3c2440的 arm920t 芯片和嵌入式 linux 操作系统 ,采用 usb 数码摄像头捕捉视频,经压缩编码,然后直接与网络相连,把采集 到的数据传送到指定 pc 机上。 论文首先阐述了该课题的背景意义,对该设计系统的主要实现过程做了简 介;然后对 arm 硬件平台和 linux 软件平台做了基本介绍,分析了其外围电 路设计以及 linux 系统内核结构;最后,也是本文重点设计部分-视频数据采 集的实现,这部分在基于 video4linux 驱动模块的基础上,主要是用软件实现 对视频数据的实时采集、传递;后面还简单的介绍了视频信号编码的实现以及 网络数据传输的实现。 本文的研究结果具有一定的工程实际意义,对基于 ip 技术的各种视频数据 传输具有一定的参考价值。 关键词: 嵌入式系统;arm;视频监控系统:linux 系统:图像采集与传输 基于 arm 的远程视频监控系统 abstract practical application demand of the network video surveillance equipment, this paper designs a network video monitoring system based on arm embedded technology, the combination of image acquisition compression, embedded systems and network technology, design a set of embedded network video monitoring system, to realize image video data collection, compression and network transmission. the system based on s3c2440 arm920t chip and embedded linux operating system, use usb digital camera to capture video, after compression, and then directly connected to the network, sends the collected data to the specified pc. paper first describes the background significance of the subject, for the main implement process of the design system to do the introduction; then the arm hardware platform and to introduce the basic linux software platform, analyzes its peripheral circuit design as well as the linux kernel structure; finally, and this article focuses on the design part - the implementation of the video data collection, this part based on the video4linux drivers module on the basis of the main is to use the software realization of video data real time acquisition, transfer; behind also simply introduces the realization of video signal coding and the realization of network data transmission. in this paper, the research results have certain practical significance, for all kinds of video data transmission based on ip technology has certain reference value. keywords:embedded system;arm; video monitoring system;the linux system;image acquisition and transmission 湖南工业大学本科毕业设计(论文) i 基于 arm 的远程视频监控系统 目 录 摘 要.i abstract.ii 目 录iv 第 1 章 绪论1 1.1 课题背景1 1.2 选题目的、意义1 1.3 系统设计内容2 1.4 系统方案设计2 第 2 章 基于 s3c2410 的硬件开发平台 .4 2.1 arm 体系结构简介4 2.2 嵌入式系统的选取原则4 2.3 基于 s3c2440a 的开发系统5 2.4 开发平台的硬件模块介绍8 2.5 视频监控系统硬件电路设计11 第 3 章 视频监控系统软件总设计14 3.1 视频监控系统软件总流程图设计14 3.2 视频监控系统软件各模块功能设计15 第 4 章 视频采集系统软件设计16 4.1 视频采集系统的软件平台设计.16 4.1.1 bootloader 的选择.16 4.1.2 嵌入式 linux 的编译.17 4.1.3 建立根文件系统18 4.1.4 加载摄像头驱动程序.19 基于 arm 的远程视频监控系统 4.2 视频采集系统的应用程序设计19 4.2.1 video4linux 设备驱动加载.19 4.2.2 视频采集流程21 4.2.3视频采集程序的实现22 第 5 章 视频编码、传输程序设计25 5.1 视频编码程序设计25 5.2 视频网络传输程序的设计28 第 6 章 视频采集模块的编译与仿真33 6.模块加载33 6.2 程序仿真调试.34 结 论36 参考文献38 致 谢39 附 录40 附录一:设计总流程图.40 附录二:视频采集系统的应用程序设计.41 基于 arm 的远程视频监控系统 0 第 1 章 绪论 1.1 课题背景课题背景 在当今社会是一个快速发展的社会,信息获取方便的能使我们领先一步,创造 巨大的利润,信息也许是我们的一个重要的眼睛。图像在图像的客观事物,传神的 描绘,是直观的和详细的信息表达,是一种重要的信息载体的人类。与科学技术的 迅速发展和提高人民的物质生活水平,视频监控系统,以其直观、方便、信息内容 的特征丰富,越来越受到人们的青睐,并已广泛应用于各行各业。有电梯监控、门 禁、车库监控等等。电信行业有一个基站监控、银行系统和 atm 监控、林业 部门的消防监控,交通监控、交通监视非法等等。 因为摄像机和电视的出现,最初的模拟监控系统出现。经过长时间的发展和 应用,它已经非常成熟,性能非常稳定,但由于模拟图像信息系统为主,对于图像处 理和传输是采用模拟技术,不紧图像质量差,严重浪费系统资源,不容易形成一个 复杂的网络结构,主要是单一功能的一种方式,单向的、集中的网络信息采集、监 控功能可扩展性。所以,虽然系统已经发展到一个很高的水平,没有潜在的可以 发现,和局限性。 近几年来,伴随着计算机技术、通信技术等一系列技术的飞速发展,技术 微型化和专业化逐渐成为信息技术发展的新趋势,而此时嵌入式产品恰好成为 信息产业的主流。由于linux 系统源代码开放、可以随意定制、易于在不同开 发板上移植等一系列优点,使得它在嵌入式系统中获得了越来越广泛的应用。 越来越多的企业和研发机构都目标转向了嵌入式linux的开发和研究上。 1.2 选题目的、意义选题目的、意义 近几年来,在人民生活水平普遍提高、国民经济快速发展的背景下,伴随 着实时传送视频、音频、多媒体动画等数字模拟文件的技术、互联网的普及和 多媒体技术在互联网上的应用成为了热点。与此同时,图像处理技术、计算机 技术、视频压缩等飞速发展,视频监控系统开始广泛的应用于医院、政府、商 场、交通、学校、银行等地方,并且呈现个性化的发展趋势,越来越多的实时 化、网络化、数字化、多功能化等特性。 传统的视频监控系统是伴随着电视机、电脑等电子产品的出现而出现,它 湖南工业大学本科毕业设计(论文) 1 出现后被广泛的应用于超市、银行、安保、学校等公共场所。它一般采用模拟 方式传输,通过视频电缆传送给控制中心,由于模拟技术所限,它具有以下缺 点:通常只限于小范围的区域监控、系统扩展能力差、不利用实习控制等。然 而伴随着互联网的普及、多媒体技术、和在互联网上的应用,实时传输多媒体 动画、视频、音频、等数字媒体文件成为热点。而具有综合性强、低成本、高 可靠性、和的嵌入式系统成为了实现这一目的的最佳载体。嵌入式系统因为具 有实时性好、稳定性强等特点,所以在视频监控中得到快速发展。 本文的主要介绍了数码摄像头采集数据、使用编码软件 ffmeg、利用基于 tcp/ip 协议的网络来传输图像数据。其中使用数码摄像头,能避免对模拟数据 的处理,能节约设计成本和设计时间;使用编码软件 ffmpeg,使图像压缩不需 要依赖硬件实现,可移植性强;利用 tcp/ip 协议传输比传统的 modem 串口传 输速度快,出错率低。 1.3 系统设计内容系统设计内容 该系统主要目的在于实现对远程画面的实时监控,主要研究内容应该包括 以下几方面:视频监控系统硬件平台的选取、视频监控系统软件平台设计、视 频监控系统信号的采集,对采集到的信息进行压缩编码处理处理,把压缩后的 信息通过网络传输给控制台 pc 机,在控制台对接收到的信息进行解码,得到 现场视频监控图像,从而达到远程监控的目的。在本系统中将会着重介绍视频 采集系统的软件模块功能实现。 1.4 系统方案设计系统方案设计 该系统主要设计内容包括视频采集系统的软硬件实现、视频压缩程序、视 频网络传输程序设计,把以上几个模块设计完整后,在基于 arm+linux 的平 台上运行,即可达到远程画面的实时监控。该设计方案的整体结构框图如图 1.4 所示: 数码摄像头(前 端数据采集) arm 硬件平台+linux 软件 操作系统 远程监控端(视 频监控) 视频采集系统 的软硬件实现 视频压缩程序 设计 视频网络传输程 序设计 基于 arm 的远程视频监控系统 2 图 1.4 方案整体结构图 ()视频采集系统的软硬件实现 本设计中视频采集并未采用专用的视频采集卡去实现,而是通过加载 linux 系统支持的 video4linux 驱动程序,通过软件编程来实现对视频数据的采 集,这样做不仅可以节省成本还可以缩短开发周期。并且,本设计中选取了带 usb 接口的数码摄像头来做前期采集设备,可以避免对模拟数据的处理,并且 arm 开发平台可以实现对 usb 接口的兼容。 (2)视频编码系统设计 对于采集到的视频数据,必须对其进行编码处理后再通过网络传输到主控 机上。本文的视频编码部分主要依赖于 linux 操作系统下的 ffpmeg 编码软件 来实现,这样就不需要再使用专用的编码芯片,可以节省成本,并且能实现在 不同开发平台上的移植与再利用。 ()视频网络传输程序设计 嵌入式 linux 系统具有完整的 tcp/ip 协议,因此,在本设计中,采用 socket 编程建立一个基于 tcp/ip 的网络传输程序。本文利用 tcp/ip 协议传输 比传统的 modem 串口传输速度快,出错率低。 湖南工业大学本科毕业设计(论文) 3 第 2 章 基于 s3c2410 的硬件开发平台 2.1 arm 体系结构简介体系结构简介 arm(advanced risc machine)处理器是由总部在英国的一家名为 arm 公司设计的一款微机处理器,其实 arm 公司本身不直接生产,其靠转让设计 许可证来由与其合作的公司生产各具特色的处理器芯片,这使得世界上很多大 半导体生产商直接从 arm 公司购买其设计的微处理器核,然后根据各自不同 的适用范围,加入合适的的外围电路,以此形成自己的独特特色的 arm 微处 理器芯片从而进入消费市场。就现在看来,arm 微处理器的使用十分广泛,其 适用范围涵盖通信系统领域、遍及工业控制领域、消费类电子产品以及现在流 行的智能家居、还有广泛使用的网络系统、无线通信技术系统等各类领域,占 据了 32 位 risc 微处理器的 70%以上的市场份额的 arm 处理器技术正在快速 渗入到我们日常生活的各个方面。其中,arm 处理器有以下特点: (1):大量使用寄存器,这使得指令执行速度更快,系统反应速度快; (2):大多数数据操作都在寄存器中完成,可以加快数据传输速度; (3):寻址方式灵活简单,使得程序的执行效率高。 (4):试用范围广,能在恶劣环境下面使用。 arm 处理器目前有多个系列,主要包括系列、arm9 系列、 arm10 系列、secucore 系列。本文是使用了 arm9 系列的,它主要有以下有 点:提供 1.1mips| mhz 的哈弗结构;采用五级流水线,这使得执行指令的效 率更高;全性能的 mmu,支持 windows ce、linux、palm os 等多种主流嵌 入式操作系统;支持数据 cache 和指令 cache ,具有更高的数据和指令执行能 力,可以拓展多种外围部件。 2.2 嵌入式系统的选取原则嵌入式系统的选取原则 在这个设计中最关键的第一步就是硬件平台和软件平台的选取,因为选取 平台的好坏直接影响着本设计实现阶段的任务完成效率。而硬件和软件的选择 主要包括硬件处理器、硬件外围部件、软件开发工具、软件操作系统、编程软 件、编程语言、硬件调试工具、软件组件等,在这中间最重要的是处理器和操 作系统的选择。 (1)处理器选择 基于 arm 的远程视频监控系统 4 在本设计中选用的是 arm920t 微处理器,由于其具有高执行速度、低功 耗能耗、价格相对较低等优点而在我们日常生活中得到了广泛的应用,它主要 应用于以下领域: 无线通信领域、常用消费电子、智能家居、各种成像设备等产品提供可 运行的复杂操作系统的开放应用平台。 在海量存储、汽车电子电力、大型工业控制和各种网络应用等领域提供 实时嵌入式应用。 (2)操作系统的选择 当系统越来越大、应用越来越多,使用操作系统很有必要。操作系统的作 用有:统一管理系统资源、为用户提供访问硬件的接口、调度多个应用程序、 管理文件系统等。在嵌入式领域可以选择的操作系统很多,比如:嵌入式 linux、vxworks、windows ce 等。 期中 linux 是遵循 gpl 协议的开放源码的操作系统,使用时无需缴纳许可 费用,内核可以任意裁剪,几乎支持所有的 32 位、64 位 cpu;内核支持的硬 件种类繁多,几乎可以从网络上找到所有的硬件驱动程序。这也是本设计中选 择该操作系统的一个主要原因。 2.3 基于基于 s3c2440a 的开发系统的开发系统 三星公司设计出的 16/32 位 risc 微处理器 s3c2440a,为我们常用的手持 设备等小型家用器件提供了价格低、耗能低、性能高的小型微控制器的解决方 案。为了降低整体系统使用成本,s3c2440a 为使用者提供了丰富的内部设备。 s3c2440a 采用了 arm920t 的内核,0.12um 的 cmos 标准宏单元和存储单元。 其低功耗,简单且全静态设计特别适合于对成本和功率敏感型的应用。 s3c2440a 的杰出的特点是其核心处理器(cpu) ,是一个由 advanced risc machines 有限公司设计的 16/32 位 arm920t 的 risc 处理器。 arm920t 实现了 mmu、amba bus 和 harvard 高速缓冲体系结构。这一结构 具有独立的 16kb 指令 cache 和 16kb 数据 cache,每个都是由具有 8 字长的行 组成。通过提供一套完整的通用系统外设,s3c2440a 减少整体系统成本和无 需配置额外的组件。 该芯片的内部结构图如图 2.12.4 所示,并且在图形下面附上芯片引脚相 关说明,如表 2.1-2.4 所示: 湖南工业大学本科毕业设计(论文) 5 图 2.1 芯片的内部结构图一 表 2.1 芯片引脚图一 管脚模块功能简介 uart实现串行口数据的输入输出 jtag支持 arm 标准的嵌入式在线仿真与下载 lcd ctrl控制模块编程 图 2.2 芯片的内部结构图二 表 2.2 芯片引脚图二 管脚模块功能简介 address27 路地址总线,地址总线是专门用来传送地址的,其可寻址空间 227 位 基于 arm 的远程视频监控系统 6 图 2.3 芯片的内部结构图三 表 2.3 芯片引脚图三 管脚模块功能简介 data数据总线,用于实现 arm 板与外界数据信号的传输 图 2.4 芯片的内部结构图四 图 2.4 芯片引脚图四 管脚模块功能简介 vd电源接口,本开发板的电源可选范围较广,并且多出用到开发板电源, 所以电源接口相对较为丰富 gpcpc 端口,输入输出数据传输端口 湖南工业大学本科毕业设计(论文) 7 图 2.5 为本系统开发板的实物图: 图 2.5 系统开发板的实际俯视图 2.4 开发平台的硬件模块介绍 本设计中使用的硬件平台是 samsung 公司的 s3c2440 开发板,其主要包含 如下几个模块:cpu 处理器、sdram 存储器、falsh 存储器、电源系统及接 口、复位系统、网络接口等,接下来就对以上几个模块做简要介绍。 (1)cpu 处理器 本开发板使用的是 samsung 公司的 s3c2440a 处理器,主频 400mhz,最 高可达到 533mhz。s3c2440a 采用了 arm920t 的内核,其功耗低、结构简单, usb本开发板有两个 usb 接口,可以接 usb 摄像头、usb 键盘、usb 鼠 标 基于 arm 的远程视频监控系统 8 且全静态设计,使它特别适用于对成本和功率敏感型的应用。s3c2440a 突 出优点是其核心处理器是由 advanced risc machines 有限公司设计的 16/32 位 arm920t 的 risc 处理器。 (2)电源系统及接口 本开发板的电源系统结构相对比较简单,其直接使用外接的 5v 电源,然 后通过降压芯片来得到所需的 3.3v、1.25v、1.8v 电压。具体电路结构如图 2.6-2.7 所示: 图 2.6 1.8v 电源产生电路 湖南工业大学本科毕业设计(论文) 9 图 2.6 3.3v 电源产生电路 (3)复位系统 在该设计中用到的开发平台其使用的是专用复位芯片 max811,来实 现低电平复位,其电路结构如图 2.5 所示: 图 2.5 复位系统电路结构图 (4)网络接口 本开发板在在设计时,拓展了一个 dm9200 网卡芯片,用以实现对网络的 支持,它可适应 10m/100m 网络,在使用时可以直接用普通的网线连接,即可 实现与开发板的网络连接。拓展 dm9200 网卡电路结构如图 2.6 所示: 图 2.6 拓展 dm9200 网卡电路结构图 基于 arm 的远程视频监控系统 10 2.5 视频监控系统硬件电路设计 本设计系统的硬件架构大致如图 2.7 所示: 图 2.7 系统的硬件架构图 在设计中,主要有用到开发板的 jtag 接口、flash 存储器、sdram 存 储器及 dm9200 网卡部分,下面就对这几个部件做个详细的介绍。 (1)jtag 接口 在本设计中,jtag 的主要功能是用来实现对开发板进行相关程序的调试 与下载。jtag 接口主要包括 4 线,tdi、tdo、tck、tms 等,分被为数据 输入线、数据输出线、时钟线、模式选择。其电路结构简图如图 2.8 所示: 图 2.8 jtag 接口电路结构简图 jtag usb flash cpu s3c2440a 以太网控制器 dm9200 sdram 数码摄像 头 远程客 户端 湖南工业大学本科毕业设计(论文) 11 (2)fslah 在本设计中选用 fslah 型号为 k9f1208,k9f1208 是 samsung 公司生产 的 512 mb(64m8 位)nand flash 存储器。该存储器内部存储结构为块 大小 为(16 kb+512 字节),页大小为 528 字节,528 字节32 页4 09 块,可实现程 序自动擦写、页程序、块擦除、智能的读写和擦除操作一次可以读/写或者擦 除 4 页或者块的内容,内部有命令寄存器。其内部有很多寄存器,可以通过控制 各类寄存器来实现对 k9f1208 的控制。其电路结构图如图 2.9 所示: 图 2.9 fslah 电路结构图 (3)sdram sdram 型号为 hy57v561620bt,hy57v561620b 是一个 268435456 位 cmos 同步 dram,理想情况下适合对于这个主要内存应用哪一个需要大内存密 度和高带宽。hy57v561620b 是提供完全同步 操作引用一个积极边缘的这个时 钟。所有输入和输出同步免疫与这个上升边缘的这个时钟输入。这个数据 路径部流水线到实现非常高带宽。所有输入和输出电压水平是兼容与 lvttl。 其电路结构如图 2.10 所示: 基于 arm 的远程视频监控系统 12 图 2.10 sdram 电路结构图 (4)dm9200 网卡功能介绍 dm9200 是一款由 davicom 公司生产的高度集成、低功耗的快速以太网 控制器,该芯片配有一个标准的 10m/100m 网络适应功能,物理层支持以太网 数据接口。为达到低功耗目的,其支持 3.3v 供电,根据具体需求可以提供八位、 十六位、三十二位三种不同的连接方式,从而支持多种型号的机器。 dm9200 的主要寄存器包括数据读写寄存器、dm9200 状态寄存器、 dm9200 状态存储器等。其中数据读写寄存器主要用来控制数据的读写、 dm9200 状态寄存器主要是用来表征 dm9200 的工作状态、dm9200 状态存储 器存储这个时候 dm9200 工作状态等。下面给出设计中拓展的的 dm9200 芯片 的结构图 2.11。 图 2.11 dm9200 芯片的引脚结构图 湖南工业大学本科毕业设计(论文) 13 第 3 章 视频监控系统软件总设计 3.1 视频监控系统软件总流程图设计视频监控系统软件总流程图设计 视频监控系统软件总流程图如图 3.1 所示: 图 3.1 视频监控系统软件总流程图 视频监控系统 软件平台设计 烧写 bootloader 内核移植 建立根文件系 统 加载摄像头驱 动程序 视频采集系 统的应用程 序设计 视频编码程 序设计 视频网络 传输程序 的设计 video4linux 设备驱动加载 视频采集程序 的实现(流程 图以及源程序 设计) 视频编码 流程图 视频编码模块软 件实现 视频网络传 输流程图 视频网络传 输软件实现 基于 arm 的远程视频监控系统 14 3.2 视频监控系统软件各模块功能设计视频监控系统软件各模块功能设计 (1) 视频监控系统软件平台设计 本文设计的是一个基于 arm+linux 平台下的远程视频监控系统,在这个 过程中合理的去选择软件平台十分重要,这个软件平台也为后续程序的运行提 供一个保障。linux 操作系统由于其适用平台广泛、源代码开放(用户可任意 修改) 、可移植性强等优点而被选作我们软件平台,并且后面将要介绍的视频采 集以及视频编码、视频传输都将依赖 linux 操作系统的存在。 要实现 linux 操作系统在 arm 开发板上的移植就必须向 arm 开发板烧写 bootloader 引导程序,在 bootloader 程序的引导下,可实现 linux 操作系统的移 植,最后还需为嵌入式 linux 添加根文件系统。 (2)视频采集系统的应用程序设计 该模块主要功能是实现对视频采集端数据的采集、存储本文在这一块弱化 了对硬件的需求,没有选择专用的视频采集卡,而是通过 linux 系统支持的 video4linux 驱动,用编程软件来实现整个功能。 (3)视频编码程序设计 视频编码是视频图像处理的一个重要研究领域,其最重要的目的是在保证 图像质量的前提下尽可能少的表征视频信息。在这个设计中,采用的是 mpeg- 4 编码器,mpeg-4 是一套广泛用于视频、音频的图像编码软件,其中支持 mpeg-4 编码标准的编码软件重要有 ffmpeg、opendivx、xvidcore 等,在本 研究中使用的是基于 linux 操作系统的 ffmpeg 编码器。 ffmpeg 编码器是一个基于 linux 操作系统的开源免费软件,其包含了非常 先进的音频/视频编码库 libavformat 和 libavcodec,前者采用常用的音/视频格 式文件的生成和解析,后者包含了所有的编码解析函数。 (4)视频网络传输程序设计 经过采集、处理后的数据,最终需想办法传输到控制机端,本文没有采取 传统串行传输,而是采用了内建视频流媒体服务器,从而将视频信号传递给远 端用户,它以 tcp/ip 协议栈为基础构建,需要实现 tcp 和 udp 等协议,有 ip 地址,使任何一个客户机都能访问这些数据信息。 湖南工业大学本科毕业设计(论文) 15 第 4 章 视频采集系统软件设计 4.1 视频采集系统的软件平台设计视频采集系统的软件平台设计 视频采集系统软件平台设计主要包括 bootloader 的选择,嵌入式 linux 的 编译,建立根文件系统,加载摄像头驱动。 4.1.1 bootloader 的选择的选择 本设计中使用的是韩国 mizi 公司专门为三星 s3c2440a 芯片设计的一款 bootloader,作为一款专门针对特定芯片开发的 bootloader,vivi 有着其自身的局 限性,下面介绍如何将 u-boot 在 s3c2440a 芯片上移植: (1)在 board 目录下创建 smdk2440 目录,主要包括 smdk2440.c、flash.c、memsetup.s、u-boot.lds 和 config.mk 等; (2)在 cpu 目录下创建 arm920t 目录,主要包括 start.s、interrupts.c、cpu.c、serial.c 和 speed.c 等文件; (3)在 include/configs 目录下添加 smdk2440.h,它定义了宏定义; (4)修改 u-boot 根目录下的 makefile 文件; (5)运行 make. 如果没有错误,就可以开始进行与硬件相关的代码移植工作了。连接开发 板后,就可以得到如下界面图 4.1: 图 4.1 连接开发板后的界面图 基于 arm 的远程视频监控系统 16 4.1.2 嵌入式嵌入式 linux 的编译的编译 本文选择的是 linux2.4.20 版本内核,其编译过程主要如下所示: 1、拷贝 linux.2.4.20 内核压缩包到 fedora 14 虚拟操作系统中,在命令窗口 中执行如下命令: :# cd desktop # tar xvzf linux.2.4.20.tgz -c/ 待解压成功后,进入 linux2.4.20 内核包中,找到 makefile 文件,对 makefile 进行如下修改: arch?= $(subarch) 修改为 arch ?=arm cross_compile ?= 修改为 cross_compile ?=arm-linux-gcc 2、编译内核代码 # cd linux.2.4.20 # make clean # make s3c2410dk_defconfig 3、以菜单形式配置源代码,主要包括对个驱动程序的添加于卸除,执行如 下命令 # make menuconfig 4、内核最终编译 # make uimage 最终得到的 uimage 文件就是我们最终用来下载到开发板上的内核代码。下 载成功后,给开发板上电,linux 编译成功,即可得到如下界面 4.2: 图 4.2 编译成功界面图 湖南工业大学本科毕业设计(论文) 17 4.1.3 建立根文件系统建立根文件系统 linux 内核在系统启动时的最后操作是加载根文件系统,根文件系统里面 装载有很多我们需要的应用程序、和其它一些用得到的库函数、服务等。对于 嵌入式 linux 来说,它绝大部分的文件都保存在 flash 中,所以本设计中将建立 一个与 flash 相对应的 jffs2 文件,过程如下: 1、开辟一个文件系统并挂载 # dd if=/dev/zero of=fs bs=1024 count=6000 # mount -o loop fs ramfs 2、 文件系统制作 挂载后,拷贝 busybox 生成的_install 下面的所有命令到挂载点,并且在挂 载 点下新建文件夹: # mkdir bin home lib proc tmp root user tools usr etc 构建根文件系统的目的是为了使不同的文件能够存储在不同的目录下。根 文件系统编译通过后,下载到开发板指定内存,这样重启开发板,就可在终端 机上显示如下信息,如图 4.3,标示着根文件系统加载成功。 图 4.3 终端机上显示图 基于 arm 的远程视频监控系统 18 4.1.4 加载摄像头驱动程序加载摄像头驱动程序 前面在选择数码摄像头时提到本系统使用的是 ov511+芯片,因为 linux.2.4.20 对采用 ov511+芯片的摄像头能够提供良好的驱动支持,我们在使 用时,只需在内核编译阶段添加数码摄像头驱动程序,就可以实现对数码摄像 头的各种操作。并且在这个阶段,应该添加能够支持主机的 usb 控制器 ohci,以及内核中 video4linux 的支持,在编译内核时,只需添加对这些内核 的选项支持。 4.2 视频采集系统的应用程序设计视频采集系统的应用程序设计 4.2.1 video4linux 设备驱动加载设备驱动加载 video4linux,是 linux 中的内核驱动,主要是关于视频设备的,视频设备的 正常使用很大程度上依赖于对 video4linux 模块的支持,它是 linux 系统中关 于视频设备的内核驱动,它为所用到的 usb 芯片摄像头提供统一的编程接口。 在使用时,我们只需在内核编译初期阶段添加对 video4linux 设备驱动的支持, 配置过程过下所示: 在终端使用 make menuconfig 命令打开 linux 内核编译的 main menu 窗口, 并进入“multimedia devices -”菜单选项,然后将 video for linux 配置为 模块,配置 ov511 驱动,如图 4.4 所示: 图 4.4 配置图 湖南工业大学本科毕业设计(论文) 19 返回主菜单(main menu) ,再进入“usb support -” 菜单选项,然将 usb ov511camera support 设置为模块,如图 4.5 所示。 图 4.5 模块设置 设置成功后,video4linux 驱动选取成功,在后面的采集过程中,可以直接 调用视频采集的相关函数。 基于 arm 的远程视频监控系统 20 4.2.2 视频采集流程视频采集流程 视频采集流程图如图 4.6 所示 n y 图 4.6 视频采集流程图 开始视频采 集 设备相关数据初始化( 设置采集窗口、幁状态、图像参数等信息) ) 视频设备、视频采集窗口初始化 设定采集方式 是否停止采集 视频设备被关闭 结束视频采集 湖南工业大学本科毕业设计(论文) 21 4.2.3 视频采集程序的实现视频采集程序的实现 (1)视频采集系统参数的初始化 视频点阵格式和大小的设置:主要是对 v4l2_format 结构体的设置,其主 要包括一个 enum 和一个 type 的设置,来构成视频当前的数据格式和行为。设 置程序如下: struct v4l2_format *f = (struct v4l2_format *)arg; enum v4l2_buf_type type=f-type; /* fixme: should be one dump per type */ dbgarg (cmd, “type=%sn“, prt_names(type, v4l2_type_names_fixme); memset( /*设置图形格式*/ f-type=type; 视频采集窗口属性设置:视频采集窗口设置主要是指对图像采集窗口大 小的设置,使取景限定在一个范围内,主要是对结构体 v4l2_crop 的设置,处理 程序如下所示: scrn.rgb.width = scrn.width; /窗口长宽高的设置 scrn.rgb.bpp = scrn.bpp; scrn.rgb.pitch = scrn.width * 4; scrn.rgb.height = scrn.height; scrn.rgb.bmask = 0x00ff00ff; / scrn.rgb.gmask = 0x000000ff; scrn.rgb.rmask = 0x00ff0000; scrn.rgb.amask = 0x000000ff; scrn.rgb.pixels = (unsigned char *)malloc(scrn.rgb.pixels_num); /图像分辨率设置 scrn.rgb.pixels_num=scrn.width*scrn.height*4; scrn.rgb.surface=sdl_creatergbsurfacefrom(scrn.rgb.pixels, scrn.rgb.width,scrn.rgb.height,scrn.rgb.bpp, 基于 arm 的远程视频监控系统 22 scrn.rgb.pitch,scrn.rgb.rmask); memset(scrn.rgb.pixels, 0, scrn.rgb.pixels_num); (2)视频采集系统的初始化 首先打开视频采集系统,摄像头在系统中对应的设备文件为/dev/video(),具 体实现如下所示: int vd_open(char *vddev,vd_device * vds) if(!vddev) vddev=”/dev/video0”; /*给设备文件命名*/ if(vds-fd=open(vddev,o_rdwr),0) perror(“vd_open is not avaliable”); /*如何设备不能被 打开,则输出 vd_open is not avaliable*/ return -1; /*退出主程序,视频设备文件打开失败*/ if(vd_vcbs(vddev) /*读取摄像头相关信息*/ return -1; if(vd_vdpic(vddev) /*设置视频参数以及窗口参数*/ retuen -1; return 0; /*摄像头相关信息的读取*/ int vd_vcbs(vd_device * vds) if(ioctl(vds-fd,videcgcap, avframe *pframe; avcodeccontext *codetx; int size; avcodec_init(); /用于初始化 avcodec 库的一些静态数据 register_avcodec( /注册编码器 mpeg4 pcodec=avcodec_find_encoder(codetx-pcodec_id); /获取编码器编号 if(pcodec=null) 图像数据输入 保存图像 ffmpeg 初始化 相关参数设置 图像格式转换 视频数据填充 ffmpeg 视频编码 保存视频文件 压缩后的图像数 据输出 基于 arm 的远程视频监控系统 26 printf(“wrong codec number”); /如果获取的编码器编号错误, 则推出主程序 return -1; codetx=avcodec_alloc_context(); /为编码器上下文分配空间 if(av_find_stream_info(codetx)width=400; /设置图像宽度 codetx-bit_rate=500000; /设置传输率 codetx-frame_rate=55; /设置每秒 55 帧的压缩速率 codetx-height=300; /设置图像高度 if(avcodec_open(codetx, pcodec)width*codetx-height; photo_buf=malloc(size*4)/3); /输出图像大小 /图像数据的采集 while(getnextframe(pformatctx, codetx, videostream, pframe) img_convert(avpicture *)pframergb, pix_fmt_rgb24, (avpicture*)pframe; pcodecctx-pix_fmt, codetx-width, codetx-height); dosomethingwiththeimage(pframergb); output_size=avcodec_encode_video(codd,output_buffer,output_bufsize,pframe); /采集完毕后,关闭相关设备 湖南工业大学本科毕业设计(论文) 27 av_free_pcodec( av_free(output_buffer); av_free(pframe); avcodec_close(codectx); av_close_input_file(pformatctx); return 0; 5.2 视频网络传输程序的设计视频网络传输程序的设计 经过采集、处理后的数据,最终需想办法传输到控制机端,本文没有采取 传统串行传输,而是采用了内建视频流媒体服务器,从而将视频信号传递给远 端用户,它以 tcp/ip 协议栈为基础构建,需要实现 tcp 和 udp 等协议,有 ip 地址,使任何一个客户机都能访问这些数据信息。 tcp/ip 是“transmission control protocol/internet protocol”的简写,中文意 思是传输控制协议/网络协议,linux 系统下的 tcp/ip 网络协议栈各层之间通过 一系列互相连接的软件来实现,调用顺序和结构层次如图 5.3 所示。 图 5.3 linux 系统中网络协议栈层次 在该设计中,能方便的使用 tcp/ip 网络传输的一个原因是 s3c2440a 有网 卡接口,s3c2440a 拓展了一个 dm9200 网卡,在使用该协议前,需要先添加 网络应用 bsd 套接口层 inet 套接口层 tcp udp tcp/ip 协议 ethernet slip plip 基于 arm 的远程视频监控系统 28 对 dm9200 网卡的驱动支持,驱动的具体支持和前面讲到了摄像头驱动加载类 似,在对 linux 进行编译时添加对 dm9200 网卡的支持。dm9200 芯片的主要 寄存器分数据读写端寄存器、dm9200 状态寄存器和 dm9200 状态存储器,这 些寄存器主要用于发送和接收数据包时对 dm9200 芯片内部的处理。在内核编 译时,添加 dm9200 网卡的驱动支持,具体操作如下: 首先进入菜单栏,选择 networking support 回车进去,出现一个子菜单, 选择 networking options 并进入,选中 dm9200 网卡支持,结果如图 5.4 所示: 图 5.4 选择 dm9200 网卡支持图 湖南工业大学本科毕业设计(论文) 29 选中 dm9200 网卡驱动支持后,就开始编写网络传输程序模块。tcp/ip 网 络数据传输具体实现流程如图 5.5 所示: n 图 5.5 数据传输具体实现流程图 整个程序代码如下所示: #include #include #include #include #include #include #include #define server_p

温馨提示

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

评论

0/150

提交评论