1、 1 绪 论1.1 前 言嵌入式系统(embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电机工程师协会的定义,嵌入式系统为控制、监视或辅助设备、机器或用于运作的设备1。随着网络技术和集成电路技术的高速发展,嵌入式系统已经成为IT的一个焦点。嵌入式图像采集系统大量的应用于自动控制、工业生产、军事技术和家用消费电子等各个领域。传统的图像采集方法是采用CCD摄像机获得视频信息,这种方法易于实现,但成本较高。随着ARM系列处理器应用的越来越广泛和基于linux的嵌入式技术的迅速发展,利用linux自身带有的TCP/IP协议来实现远程监控和图像传
2、输已经成为可能。开发具有自主知识产权的嵌入式处理器,嵌入式操作系统和嵌入式高端产品,对我国的民族工业来讲,将有十分重要的战略意义。1.2 课题研究背景与意义1.2.1课题研究背景随着计算机技术的不断发展,人类步入网络时代以来,以“信息采集、处理、监控”为核心的视频监控系统越来越广泛地应用于电视会议、可视电话、远程监控、智能交通、智能小区等远程图像传输系统中。传统的视频监控系统一般基于PC机和视频采集卡的形式,传统系统采集的图像品质不高、抗干扰能力差、系统体积大、成本高、携带不便,在远距离通讯、多系统控制中很难实现。而采用基于DSP结合FPGA方式又需投入大量的人力和资金,成本高2。在这种背景下
3、,设计一种轻便小巧的系统来采集传输图像成为市场所需。嵌入式linux操作系统具有可移植性好、网络功能强、有优秀的GUN编译工具支持等优点,linux的开放源代码和免费的优点也使成本大大降低,嵌入式系统把微处理器与其专用软件平台相结合,大大提高了操作系统的效率,采用USB接口的摄像头在一定程度上突出了采样速率高、图像质量高、通用性好的特点。基于上述原因,本文设计了一种新的视频采集处理系统基于ARM和linux的嵌入式视频监控系统。1.2.2课题研究意义本课题研究的是基于嵌入式linux的视频图像采集,利用市场上很常见的中星微系列的USB摄像头来得到现场的图像数据,利用linux内核中的video
4、4linux编程接口函数采集,在PC机上和LCD屏上实现了图像的实时显示。此类视频采集系统对于各个领域都有重要的意义。例如,在日常生活中,视频监控,智能交通和智能小区的发展,生物医学中的X射线成像、染色体分类技术等,卫星遥感图像识别,办公自动化中的门禁系统、手写识别、票据以及人民币的识别,以及工业视觉,虚拟现实等等领域,图像采集都有着极其重要的应用3。 在军用方面。图像采集收集的情报通过无线传输到监控指挥中心,为战场行动提供了重要的情报依据,在强大空中侦察下,我军能够及时掌握敌方的大规模行动,其部署和移动很容易暴露,灵活、机动、可靠的情报搜集,战时能起到很好的侦察保障功能,为决策人缘提供有力的
5、决策依据。 在不就的将来,也许我们能体验到,当我们在各种需要身份验证和识别时,需要的不再是钥匙、密码,而仅仅是一个摄像头而已。试想,这项技术的发展将会给我们的生活带来多么深远的影响。因此,研究图像采集及其处理有着重大的意义。1.2.3国内外研究现状视频监控系统是安全防范系统的重要组成部分. 目前在国内外市场上,主要有模拟视频监控和数字视频监控类产品. 传统的模拟监控系统技术已非常成熟,性能稳定、应用广泛,但已不能满足人们日益增长的需要. 模拟视频信号的传输工具主要是同轴电缆,通常只适合于小范围的区域监控;系统的扩展能力差,新的设备也很难添加到原有的系统之中;由于各部分独立运作,相互之间的控制协
6、议很难互通,无法形成有效的报警联动,联动只能在有限的范围内进行4。近年来,随着计算机、网络、图像处理以及传输技术的飞速发展,视频监控制技术也有长足的进步,前端一体化、视频数字化、监控网络化、系统集成化是视频监控系统公认的发展方向。本文基于这种发展趋势,提出了1 种性能高效、价格低廉解决方案. 本方案采用PC机、高性能嵌入式设备以及先进的图像处理技术,通过Internet传输图像. 本系统的优点在于:数字监控系统可以在Internet上传输图像数据,基本上不受距离限制,信号不易受干扰,可大幅度提高图像品质和稳定性;使数字化存储成为可能,经过压缩的视频数据可存储在磁盘阵列中或保存在光盘中,查询十分
7、简便快捷;基于嵌入式技术,系统硬件和操作系统捆绑较为紧密,功能专一,因此性能上更稳定,且便于安装、维护,易于实现系统的模块化设计,便于管理3。2 嵌入式系统的选择2.1.1嵌入式系统的分类目前嵌入式操作系统种类繁多,有深嵌入系统,也有浅嵌入式系统;有多任务,也有单任务系统;有实时系统,也有分时系统。其实,嵌入式操作系统是与应用环境密切相关的,从应用范围角度来看,大致可以分为通用型的嵌入式操作系统如WindowsCE、VxWorks、嵌入式Linux等和专用型的嵌入式操作系统如Palm0S、sysbian,SmartPhone等。从实时性的角度看,又可以分为两类。一类是面向控制、通信等领域的实时
8、操作系统,如Microsoft公司得windows CE、WindRiver公司的VxWorks、ISI的pSOS、QNX系统软件公司的QNX、ATI的Nucleus等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(PDA)、移动电话、机顶盒、电子书、WebPhone等,如现在非常流行的Mierosoft公司的SmartPhone操作系统等等。20世纪80年代,商业化的嵌入式操作系统开始得到蓬勃发展6。目前国内外已有几十种商业操作系统可供选择。目前比较流行的嵌入式操作系统比较多,对其中几类进行介绍如下7:(1)Palm0SPalm0S是一种32位的嵌入式操作系统。Palm
9、OS提供了串行通信接口和红外线传输接口,利用它可以方便地与其它外部设备通信;拥有开放的0S应用程序接口,开发商可根据需要自行开发所需的应用程序。在个人数字助理(PDA)市场上,PalmOS是全球知名、使用人数最多的PDA操作系统。PalmOS是一套具有极强开放性的系统,现在有大约数千种专门为PalmOS编写的应用程序。PalmOS操作系统的一个最大的特点就是省电以及系统资源开销较少,而且第三方应用程序非常丰富。由于PalmOS采用开放式架构,有很多PalmOS的使用者都投入到软件开发工作中,这也是PalmOS操作系统成功的一个重要原因。(2)VxWorksVxWorks操作系统是美国WindR
10、iver公司于1983年设计开发的一种嵌入式实时操作系统。它的良好的持续发展能力、高性能的内核以及友好的用户开发环境,使其在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精度技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。VxWorks具有可靠性,良好的实时性,高度灵活的可裁减性等突出特点。(3)uC/OS uC/OS 是美国人Jean Labrosse在1992年开发的一个嵌入式操作系统,并于1998年推出它的升级版本uC/OS 。uC/OS 是一种免费、开放源代码、结构小巧、基于可抢占优先级调度的实时操
11、作系统,其内核提供任务调度与管理、时间管理、任务同步和通信、内存管理和中断服务等功能。uC/OS 主要面向中小型嵌入式系统,具有执行效率高、占用空间小、结构简洁、实时性能优良和可扩展性强等特点,最小内核可编译至2KB,一般情况下占用10KB数量级。它的内核本身并不支持文件系统,但它具有良好的扩展性能,如果需要的话可以自行加入。由于免费、源码开放、规模较小,uC/OS 不仅在众多的商业领域中获得了广泛的应用,而且被很多大学所接纳,作为教学用的嵌入式实时操作系统。(4)嵌入式LinuxLinux现在已经是最为流行的一款开放源代码的操作系统。Linux是1991年由芬兰人Linus Torvalds
12、发明的,从诞生到现在的短短十几年的时间,Linux已经发展成为一个功能强大、设计完善的操作系统,不仅在通用操作系统领域与Windows等商业系统分庭抗争,而且在新兴的嵌入式操作系统领域也获得了飞速的发展。由于Linux系统本身是开放源码的,又是一种多任务、稳定性高、内核可裁减的操作系统,它在嵌入式系统方面大放光芒。在各种嵌入式LinuxOS迅速发展的状况下,Linux在嵌入式系统方面的发展速度和影响是任何一种操作系统不能比的。嵌入式Linux是在标准Linux的基础上针对嵌入式系统进行内核裁减和优化后形成的,使其体积更小、性能更高,同时,由于它是免费的,没有其它商业性嵌入式操作系统需要的许可证
13、费用,所以具有很强的市场竞争力。当前国家对研制自主操作系统大力支持,为源码开放的Linux的推广提供了广阔的发展前景。(5)Windows CEWindows CE是微软公司在嵌入式操作系统市场上的一个重要产品。它最早于1996年开始发行,但是最初并没有取得成功,直到Windows CE 3.0以后他才真正被人们所接受。目前的最新版本为Windows CE.NET。Windows CE是一个32位的多线程、多任务的嵌入式操作系统,它经过压缩,可以移植,能够开发多种企业和客户设备,其操作界面来源于Windows,但Windows CE是基于Win32API重新开发的、新型的信息设备平台。Wind
14、ows CE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点,适用于各种嵌入系统和产品。它的模块化设计方式使得系统开发人员和应用开发人员能够为多种多样的产品来定制它。若开发者熟悉Windows开发环境,可以基于Windows CE开发出更好的应用程序。随着嵌入式系统逐渐深入生活,越来越多的嵌入式设备都应用WinCE系统8。2.1.2嵌入式系统的选择多种嵌入式系统各有千秋,但是本课题研究选择了嵌入式Linux系统,因为它在嵌入式领域具有独特的优点。嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继
15、承了Interlnet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_Linux Hardhat Linux 等嵌入式Linux支持,实时性能稳定性好安全性好9。Linux做嵌入式的优势,首先,Linux是开放源代码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;其次,Linux的内核小、效率高,内核的更新
16、嵌入式linux速度很快,linux是可以定制的,其系统内核最小只有约134KB。第三,Linux是免费的OS,在价格上极具竞争力。 Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台,是一个跨平台的系统。到目前为止,它可以支持二三十种CPU。而且性能稳定,裁剪性很好,开发和使用都很容易。很多CPU包括家电业芯片,都开始做Linux的平台移植工作。移植的速度远远超过Java的开发环境。也就是说,如果今天用Linux环境开发产品,那么将来换CPU就不会遇到困扰。同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的TCP/IP
17、协议有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Toker ring(令牌环网)、光纤甚至卫星的支持。所以Linux很适于做信息家电的开发10。 3 软件平台的设计与实现3.1 Bootloader移植3.1.1 Bootloader介绍系统引导程序通常称为Boot Loader,是在系统复位后执行的第一段软件代码,相当于PC机上的BIOS。通常固化在硬件的某个固态存储结构中,上电后自启动。通过bootloader这段代码,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。Bootload
18、er是严重地依赖于硬件而实现的。每种不同体系结构的处理器都有不同的bootloader.不过bootloader的发展也趋于支持多种体系结构,现在比较成熟的有一下几种:(1)vivivivi是由韩国Mizi公司专门针对基于ARM处理器的嵌入式系统开发的一种Boot Loader,因为VIVI 目前只支持使用串口和主机通信,所以必须使用一条串口电缆来连接目标板和主机。VIVI一般有如下作用。 1)把内核(kernel)从Flash复制到RAM,然后启动它; 2)初始化硬件; 3)下载程序并写入Flash; 4)检测目标板。(2)RedBootRedBoot也称红帽子嵌入式调试引导程序。RedBo
19、ot 是一个专门为嵌入式系统定制的引导启动工具,最初由Redhat开发,它是基于eCos(Embedded Configurable Operating System)的硬件抽象层,同时它继承了eCos的高可靠性、简洁性、可配置性和可移植性等特点。RedBoot集Bootloader、调试、 Flash烧写于一体,支持串口、网络下载,执行嵌入式应用程序。既可以用在产品的开发阶段(调试功能),也可以用在最终的产品上(Flash更新、网络启动)。RedBoot支持下载和调试应用程序,开发板可以通过BOOTP/DHCP协议动态配置IP地址,支持跨网段访问。用户可以通过tftp协议下载应用程序和ima
20、ge,或者通过串口用x-modem/y-modem下载。RedBoot支持用GDB(the GNU debugger)通过串口或者网卡调试嵌入式程序,可对gcc编译的程序进行源代码级的调试。相比于简易jtag调试器,它可靠、高速(CPU的 cache打开后,通过网卡tftp下载能达到1Mbps,GDB下载的速度能达到2Mbps)、稳定,用户可通过串口或网卡,以命令行的形式管理 Flash上的image,下载image到Flash。动态配置RedBoot启动的各种参数、启动脚本,上电后RedBoot可自动从Flash或 tftp服务器上下载应用程序执行。(3)U-BootU- Boot是德国DE
21、NX小组开发的用于多种嵌入式CPU的BootLoader程序,它可以运行在基于PowerPC、ARM、MIPS等多种嵌入式开发板上。本linux系统的启动代码用的是U-Boot。3.1.2 U-Boot移植要移植U-Boot到嵌入式产品中,首先要在宿主机上编译配置U-Boot,将U-Boot源代码编译成为可以在ARM上执行的二进制文件,并烧写到实验箱上才能执行。本实验系统采用将U-Boot烧写到Nand Flash(SMC卡)中进行启动。移植过程如下:(1)在工作目录下解压UBoot输入命令:tar -xjvf u-boot-1.3.1.tar.bz2 (2)进入U-Boot目录,修改Make
22、file输入以下命令:cd u-boot-1.3.1Vim Makefile为tekkaman2440建立编译项:sbc2410x_config: unconfig $(MKCONFIG) $(:_config=) arm arm920t sbc2410x NULL s3c24x0tekkaman2440_config:unconfig_config=) arm arm920t tekkaman2440 tekkaman s3c24x0各项的意思如下:arm: CPU的架构(ARCH)arm926EJ: CPU的类型(CPU),其对应于cpu/arm926EJ子目录。tekkaman2440:
23、 开发板的型号,对应于board/tekkaman/tekkaman2440目录。tekkaman: 开发者/或经销商(vender)。s3c24x0: 片上系统(SOC)。同时在“ifndef CROSS_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-
24、9tdmi-linux-gnu-(3)在/board子目录中建立自己的开发板tekkaman2440目录由于我在上一步板子的开发者/或经销商(vender)中填了 tekkaman ,所以开发板tekkaman2440目录一定要建在/board子目录中的tekkaman目录下 ,否则编译会出错。tekkamanninjaARM9-Host u-boot-1.3.1$ cd boardtekkamanninjaARM9-Host board$ mkdir tekkaman tekkaman/tekkaman2440tekkamanninjaARM9-Host board$ cp -arf sbc
25、2410x/* tekkaman/tekkaman2440/tekkamanninjaARM9-Host board$ cd tekkaman/tekkaman2440/tekkamanninjaARM9-Host tekkaman2440$ mv sbc2410x.c tekkaman2440.c还要修改自己的开发板tekkaman2440目录下的Makefile文件,不然编译时会出错:tekkamanninjaARM9-Host tekkaman2440$ kwrite MakefileCOBJS := tekkaman2440.o flash.o在include/configs/中建立配
26、置头文件tekkamanninjaARM9-Host tekkaman2440$ cd ././.tekkamanninjaARM9-Host u-boot-1.3.1$ cp include/configs/sbc2410x.h include/configs/tekkaman2440.h(4)测试编译能否成功1)配置tekkamanninjaARM9-Host u-boot-1.3.1$ make tekkaman2440_configConfiguring for tekkaman2440 board.2)测试编译tekkamanninjaARM9-Host u-boot-1.3.1$m
27、ake测试通过后进行下一步3.2 内核移植3.2.1 移植环境交叉编译器:arm-linux-gcc 3.4.1安装交叉编译器3.2.2 内核移植过程(1)下载压缩包:utu-linux_for_s3c2440_V1.5.3-2007-11-5.tar.bz2(2)解压:tar xjvf utu-linux_for_s3c2440_V1.5.3-2007-11-5.tar.bz2(3)配置及编译内核make menuconfig:提供基于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),完成内核配置后,执行如下命令:#make ulmage:创建内核镜像文件ulmage,再下载到TFTP中。 在超级终端中执行以下命令即可:run insta
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2