嵌入式DVR系统设计毕业设计论文Word文档下载推荐.docx
《嵌入式DVR系统设计毕业设计论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《嵌入式DVR系统设计毕业设计论文Word文档下载推荐.docx(34页珍藏版)》请在冰点文库上搜索。
![嵌入式DVR系统设计毕业设计论文Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/ab5edce0-3896-4a0d-aca2-261fc56136a0/ab5edce0-3896-4a0d-aca2-261fc56136a01.gif)
1绪论
1.1前言
嵌入式系统(embeddedsystem),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电机工程师协会的定义,嵌入式系统为控制、监视或辅助设备、机器或用于运作的设备[1]。
随着网络技术和集成电路技术的高速发展,嵌入式系统已经成为IT的一个焦点。
嵌入式图像采集系统大量的应用于自动控制、工业生产、军事技术和家用消费电子等各个领域。
传统的图像采集方法是采用CCD摄像机获得视频信息,这种方法易于实现,但成本较高。
随着ARM系列处理器应用的越来越广泛和基于linux的嵌入式技术的迅速发展,利用linux自身带有的TCP/IP协议来实现远程监控和图像传输已经成为可能。
开发具有自主知识产权的嵌入式处理器,嵌入式操作系统和嵌入式高端产品,对我国的民族工业来讲,将有十分重要的战略意义。
1.2课题研究背景与意义
1.2.1课题研究背景
随着计算机技术的不断发展,人类步入网络时代以来,以“信息采集、处理、监控”为核心的视频监控系统越来越广泛地应用于电视会议、可视电话、远程监控、智能交通、智能小区等远程图像传输系统中。
传统的视频监控系统一般基于PC机和视频采集卡的形式,传统系统采集的图像品质不高、抗干扰能力差、系统体积大、成本高、携带不便,在远距离通讯、多系统控制中很难实现。
而采用基于DSP结合FPGA方式又需投入大量的人力和资金,成本高[2]。
在这种背景下,设计一种轻便小巧的系统来采集传输图像成为市场所需。
嵌入式linux操作系统具有可移植性好、网络功能强、有优秀的GUN编译工具支持等优点,linux的开放源代码和免费的优点也使成本大大降低,嵌入式系统把微处理器与其专用软件平台相结合,大大提高了操作系统的效率,采用USB接口的摄像头在一定程度上突出了采样速率高、图像质量高、通用性好的特点。
基于上述原因,本文设计了一种新的视频采集处理系统——基于ARM和linux的嵌入式视频监控系统。
1.2.2课题研究意义
本课题研究的是基于嵌入式linux的视频图像采集,利用市场上很常见的中星微系列的USB摄像头来得到现场的图像数据,利用linux内核中的video4linux编程接口函数采集,在PC机上和LCD屏上实现了图像的实时显示。
此类视频采集系统对于各个领域都有重要的意义。
例如,在日常生活中,视频监控,智能交通和智能小区的发展,生物医学中的X射线成像、染色体分类技术等,卫星遥感图像识别,办公自动化中的门禁系统、手写识别、票据以及人民币的识别,以及工业视觉,虚拟现实等等领域,图像采集都有着极其重要的应用[3]。
在军用方面。
图像采集收集的情报通过无线传输到监控指挥中心,为战场行动提供了重要的情报依据,在强大空中侦察下,我军能够及时掌握敌方的大规模行动,其部署和移动很容易暴露,灵活、机动、可靠的情报搜集,战时能起到很好的侦察保障功能,为决策人缘提供有力的决策依据。
在不就的将来,也许我们能体验到,当我们在各种需要身份验证和识别时,需要的不再是钥匙、密码,而仅仅是一个摄像头而已。
试想,这项技术的发展将会给我们的生活带来多么深远的影响。
因此,研究图像采集及其处理有着重大的意义。
1.2.3国内外研究现状
视频监控系统是安全防范系统的重要组成部分.目前在国内外市场上,主要有模拟视频监控和数字视频监控类产品.传统的模拟监控系统技术已非常成熟,性能稳定、应用广泛,但已不能满足人们日益增长的需要.模拟视频信号的传输工具主要是同轴电缆,通常只适合于小范围的区域监控;
系统的扩展能力差,新的设备也很难添加到原有的系统之中;
由于各部分独立运作,相互之间的控制协议很难互通,无法形成有效的报警联动,联动只能在有限的范围内进行[4]。
近年来,随着计算机、网络、图像处理以及传输技术的飞速发展,视频监控制技术也有长足的进步,前端一体化、视频数字化、监控网络化、系统集成化是视频监控系统公认的发展方向。
本文基于这种发展趋势,提出了1种性能高效、价格低廉解决方案.本方案采用PC机、高性能嵌入式设备以及先进的图像处理技术,通过Internet传输图像.本系统的优点在于:
数字监控系统可以在Internet上传输图像数据,基本上不受距离限制,信号不易受干扰,可大幅度提高图像品质和稳定性;
使数字化存储成为可能,经过压缩的视频数据可存储在磁盘阵列中或保存在光盘中,查询十分简便快捷;
基于嵌入式技术,系统硬件和操作系统捆绑较为紧密,功能专一,因此性能上更稳定,且便于安装、维护,易于实现系统的模块化设计,便于管理[3]。
2嵌入式系统的选择
2.1.1嵌入式系统的分类
目前嵌入式操作系统种类繁多,有深嵌入系统,也有浅嵌入式系统;
有多任务,也有单任务系统;
有实时系统,也有分时系统。
其实,嵌入式操作系统是与应用环境密切相关的,从应用范围角度来看,大致可以分为通用型的嵌入式操作系统如WindowsCE、VxWorks、嵌入式Linux等和专用型的嵌入式操作系统如Palm0S、sysbian,SmartPhone等。
从实时性的角度看,又可以分为两类。
一类是面向控制、通信等领域的实时操作系统,如Microsoft公司得windowsCE、WindRiver公司的VxWorks、ISI的pSOS、QNX系统软件公司的QNX、ATI的Nucleus等;
另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(PDA)、移动电话、机顶盒、电子书、WebPhone等,如现在非常流行的Mierosoft公司的SmartPhone操作系统等等。
20世纪80年代,商业化的嵌入式操作系统开始得到蓬勃发展[6]。
目前国内外已有几十种商业操作系统可供选择。
目前比较流行的嵌入式操作系统比较多,对其中几类进行介绍如下[7]:
(1)Palm0S
Palm0S是一种32位的嵌入式操作系统。
PalmOS提供了串行通信接口和红外线传输接口,利用它可以方便地与其它外部设备通信;
拥有开放的0S应用程序接口,开发商可根据需要自行开发所需的应用程序。
在个人数字助理(PDA)市场上,PalmOS是全球知名、使用人数最多的PDA操作系统。
PalmOS是一套具有极强开放性的系统,现在有大约数千种专门为PalmOS编写的应用程序。
PalmOS操作系统的一个最大的特点就是省电以及系统资源开销较少,而且第三方应用程序非常丰富。
由于PalmOS采用开放式架构,有很多PalmOS的使用者都投入到软件开发工作中,这也是PalmOS操作系统成功的一个重要原因。
(2)VxWorks
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统。
它的良好的持续发展能力、高性能的内核以及友好的用户开发环境,使其在嵌入式实时操作系统领域占据一席之地。
它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精度技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
VxWorks具有可靠性,良好的实时性,高度灵活的可裁减性等突出特点。
(3)uC/OSⅡ
uC/OSⅡ是美国人JeanLabrosse在1992年开发的一个嵌入式操作系统,并于1998年推出它的升级版本uC/OSⅡ。
uC/OSⅡ是一种免费、开放源代码、结构小巧、基于可抢占优先级调度的实时操作系统,其内核提供任务调度与管理、时间管理、任务同步和通信、内存管理和中断服务等功能。
uC/OSⅡ主要面向中小型嵌入式系统,具有执行效率高、占用空间小、结构简洁、实时性能优良和可扩展性强等特点,最小内核可编译至2KB,一般情况下占用10KB数量级。
它的内核本身并不支持文件系统,但它具有良好的扩展性能,如果需要的话可以自行加入。
由于免费、源码开放、规模较小,uC/OSⅡ不仅在众多的商业领域中获得了广泛的应用,而且被很多大学所接纳,作为教学用的嵌入式实时操作系统。
(4)嵌入式Linux
Linux现在已经是最为流行的一款开放源代码的操作系统。
Linux是1991年由芬兰人LinusTorvalds发明的,从诞生到现在的短短十几年的时间,Linux已经发展成为一个功能强大、设计完善的操作系统,不仅在通用操作系统领域与Windows等商业系统分庭抗争,而且在新兴的嵌入式操作系统领域也获得了飞速的发展。
由于Linux系统本身是开放源码的,又是一种多任务、稳定性高、内核可裁减的操作系统,它在嵌入式系统方面大放光芒。
在各种嵌入式LinuxOS迅速发展的状况下,Linux在嵌入式系统方面的发展速度和影响是任何一种操作系统不能比的。
嵌入式Linux是在标准Linux的基础上针对嵌入式系统进行内核裁减和优化后形成的,使其体积更小、性能更高,同时,由于它是免费的,没有其它商业性嵌入式操作系统需要的许可证费用,所以具有很强的市场竞争力。
当前国家对研制自主操作系统大力支持,为源码开放的Linux的推广提供了广阔的发展前景。
(5)WindowsCE
WindowsCE是微软公司在嵌入式操作系统市场上的一个重要产品。
它最早于1996年开始发行,但是最初并没有取得成功,直到WindowsCE3.0以后他才真正被人们所接受。
目前的最新版本为WindowsCE.NET。
WindowsCE是一个32位的多线程、多任务的嵌入式操作系统,它经过压缩,可以移植,能够开发多种企业和客户设备,其操作界面来源于Windows,但WindowsCE是基于Win32API重新开发的、新型的信息设备平台。
WindowsCE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点,适用于各种嵌入系统和产品。
它的模块化设计方式使得系统开发人员和应用开发人员能够为多种多样的产品来定制它。
若开发者熟悉Windows开发环境,可以基于WindowsCE开发出更好的应用程序。
随着嵌入式系统逐渐深入生活,越来越多的嵌入式设备都应用WinCE系统[8]。
2.1.2嵌入式系统的选择
多种嵌入式系统各有千秋,但是本课题研究选择了嵌入式Linux系统,因为它在嵌入式领域具有独特的优点。
嵌入式linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。
嵌入式linux既继承了Interlnet上无限的开放源代码资源,又具有嵌入式操作系统的特性。
嵌入式Linux的特点是版权费免费;
购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_LinuxHardhatLinux等嵌入式Linux支持,实时性能稳定性好安全性好[9]。
Linux做嵌入式的优势,首先,Linux是开放源代码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;
其次,Linux的内核小、效率高,内核的更新嵌入式linux速度很快,linux是可以定制的,其系统内核最小只有约134KB。
第三,Linux是免费的OS,在价格上极具竞争力。
Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台,是一个跨平台的系统。
到目前为止,它可以支持二三十种CPU。
而且性能稳定,裁剪性很好,开发和使用都很容易。
很多CPU包括家电业芯片,都开始做Linux的平台移植工作。
移植的速度远远超过Java的开发环境。
也就是说,如果今天用Linux环境开发产品,那么将来换CPU就不会遇到困扰。
同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。
提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Tokerring(令牌环网)、光纤甚至卫星的支持。
所以Linux很适于做信息家电的开发[10]。
3软件平台的设计与实现
3.1Bootloader移植
3.1.1Bootloader介绍
系统引导程序通常称为BootLoader,是在系统复位后执行的第一段软件代码,相当于PC机上的BIOS。
通常固化在硬件的某个固态存储结构中,上电后自启动。
通过bootloader这段代码,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
Bootloader是严重地依赖于硬件而实现的。
每种不同体系结构的处理器都有不同的bootloader.不过bootloader的发展也趋于支持多种体系结构,现在比较成熟的有一下几种:
(1)vivi
vivi是由韩国Mizi公司专门针对基于ARM处理器的嵌入式系统开发的一种BootLoader,因为VIVI目前只支持使用串口和主机通信,所以必须使用一条串口电缆来连接目标板和主机。
VIVI一般有如下作用。
1)把内核(kernel)从Flash复制到RAM,然后启动它;
2)初始化硬件;
3)下载程序并写入Flash;
4)检测目标板。
(2)RedBoot
RedBoot也称红帽子嵌入式调试引导程序。
RedBoot是一个专门为嵌入式系统定制的引导启动工具,最初由Redhat开发,它是基于eCos(EmbeddedConfigurableOperatingSystem)的硬件抽象层,同时它继承了eCos的高可靠性、简洁性、可配置性和可移植性等特点。
RedBoot集Bootloader、调试、Flash烧写于一体,支持串口、网络下载,执行嵌入式应用程序。
既可以用在产品的开发阶段(调试功能),也可以用在最终的产品上(Flash更新、网络启动)。
RedBoot支持下载和调试应用程序,开发板可以通过BOOTP/DHCP协议动态配置IP地址,支持跨网段访问。
用户可以通过tftp协议下载应用程序和image,或者通过串口用x-modem/y-modem下载。
RedBoot支持用GDB(theGNUdebugger)通过串口或者网卡调试嵌入式程序,可对gcc编译的程序进行源代码级的调试。
相比于简易jtag调试器,它可靠、高速(CPU的cache打开后,通过网卡tftp下载能达到1Mbps,GDB下载的速度能达到2Mbps)、稳定,用户可通过串口或网卡,以命令行的形式管理Flash上的image,下载image到Flash。
动态配置RedBoot启动的各种参数、启动脚本,上电后RedBoot可自动从Flash或tftp服务器上下载应用程序执行。
(3)U-Boot
U-Boot是德国DENX小组开发的用于多种嵌入式CPU的BootLoader程序,它可以运行在基于PowerPC、ARM、MIPS等多种嵌入式开发板上。
本linux系统的启动代码用的是U-Boot。
3.1.2U-Boot移植
要移植U-Boot到嵌入式产品中,首先要在宿主机上编译配置U-Boot,将U-Boot源代码编译成为可以在ARM上执行的二进制文件,并烧写到实验箱上才能执行。
本实验系统采用将U-Boot烧写到NandFlash(SMC卡)中进行启动。
移植过程如下:
(1)在工作目录下解压U-Boot
输入命令:
tar-xjvfu-boot-1.3.1.tar.bz2
(2)进入U-Boot目录,修改Makefile
输入以下命令:
cdu-boot-1.3.1
VimMakefile
为tekkaman2440建立编译项:
sbc2410x_config:
unconfig
@$(MKCONFIG)$(@:
_config=)armarm920tsbc2410xNULLs3c24x0
tekkaman2440_config:
unconfig
_config=)armarm920ttekkaman2440tekkamans3c24x0
各项的意思如下:
arm:
CPU的架构(ARCH)
arm926EJ:
CPU的类型(CPU),其对应于cpu/arm926EJ子目录。
tekkaman2440:
开发板的型号,对应于board/tekkaman/tekkaman2440目录。
tekkaman:
开发者/或经销商(vender)。
s3c24x0:
片上系统(SOC)。
同时在“ifndefCROSS_COMPILE”之前加上自己交叉编译器的路径,比如我使用crosstool-0.43制作的基于2.6.24内核和gcc-4.1.1-glibc-2.3.2的ARM9TDMI交叉编译器,则:
CROSS_COMPILE=/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-
(3)在/board子目录中建立自己的开发板tekkaman2440目录
由于我在上一步板子的开发者/或经销商(vender)中填了tekkaman,所以开发板tekkaman2440目录一定要建在/board子目录中的tekkaman目录下,否则编译会出错。
[tekkamanninja@ARM9-Hostu-boot-1.3.1]$cdboard
[tekkamanninja@ARM9-Hostboard]$mkdirtekkamantekkaman/tekkaman2440
[tekkamanninja@ARM9-Hostboard]$cp-arfsbc2410x/*tekkaman/tekkaman2440/
[tekkamanninja@ARM9-Hostboard]$cdtekkaman/tekkaman2440/
[tekkamanninja@ARM9-Hosttekkaman2440]$mvsbc2410x.ctekkaman2440.c
还要修改自己的开发板tekkaman2440目录下的Makefile文件,不然编译时会出错:
[tekkamanninja@ARM9-Hosttekkaman2440]$kwriteMakefile
COBJS:
=tekkaman2440.oflash.o
在include/configs/中建立配置头文件
[tekkamanninja@ARM9-Hosttekkaman2440]$cd../../..
[tekkamanninja@ARM9-Hostu-boot-1.3.1]$cpinclude/configs/sbc2410x.hinclude/configs/tekkaman2440.h
(4)测试编译能否成功
1)配置
[tekkamanninja@ARM9-Hostu-boot-1.3.1]$maketekkaman2440_config
Configuringfortekkaman2440board...
2)测试编译
[tekkamanninja@ARM9-Hostu-boot-1.3.1]$make
测试通过后进行下一步
3.2内核移植
3.2.1移植环境
交叉编译器:
arm-linux-gcc3.4.1
安装交叉编译器
3.2.2内核移植过程
(1)下载压缩包:
utu-linux_for_s3c2440_V1.5.3-2007-11-5.tar.bz2
(2)解压:
tar–xjvfutu-linux_for_s3c2440_V1.5.3-2007-11-5.tar.bz2
(3)配置及编译内核
makemenuconfig:
提供基于Ncurses图形界面的用户配置界面是字符的图形界面,出现如图所示的界面.
(4)修改屏幕偏移
由于视频监控系统还设计到LCD屏的显示,所以要修改一下屏幕的偏移:
打开:
/home/utu-linux_for_s3c2440_V1.5.3/arch/arm/mach-s3c2410/mach-utu2440.c
将寄存器3做如下修改即可:
.lcdcon3=S3C2410_LCDCON3_HBPD(55)|\
S3C2410_LCDCON3_HOZVAL(319)|\
S3C2410_LCDCON3_HFPD(5),
完成内核配置后,执行如下命令:
#makeulmage:
创建内核镜像文件ulmage,再下载到TFTP中。
在超级终端中执行以下命令即可:
runinsta