基于嵌入式的网络视频监控系统研究.doc_第1页
基于嵌入式的网络视频监控系统研究.doc_第2页
基于嵌入式的网络视频监控系统研究.doc_第3页
基于嵌入式的网络视频监控系统研究.doc_第4页
基于嵌入式的网络视频监控系统研究.doc_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

摘要 近年来,视频监控系统已经在生产管理、安全防盗和远程教学等领域得到了广泛的应用。随着网络技术,图像压缩技术和嵌入式技术的快速发展,视频监控系统正在向着网络化,数字化和小型化的方向发展,目前基于嵌入式的网络视频监控系统已经成为监控系统研究的热点。 考虑到稳定性、可靠性和扩展性的要求,特别是实用性的要求,本文设计了一种新型的基于嵌入式linux的网络视频监控系统的实现方案。该方案是以嵌入式linux系统和嵌入式控制器s3c2410为核心平台,通过嵌入式平台建立web服务器boa和视频服务器。利用tcp/ip协议技术实现了网络通信,把usb数字摄像头采集到的图像进行jpeg压缩,然后通过网络传输到远程计算机的客户端。客户端方采用java applet技术实现图像的接收并完成显示功能。客户端的用户可以通过具有java插件的浏览器实现监控的目的。实验证明了该方案取得了较好的实验效果。针对该方案所涉及到的关键技术进行了深入的分析和研究,取得了以下主要研究成果。 在嵌入式linux系统移植方面,深入的分析了嵌入式linux系统的运行机理,并比较了linux2.4和linux2.6内核的区别,选用最新的linux2.6.11 内核作为移植的目标。完成了linux系统在arm平台nand flash的启动代码设计,接着主要针对arm平台完成bootloder的移植,linux内核的配置,yas文件系统的移植,根文件系统的设计与实现。 在视频采集方面,深入分析了usb驱动和v4l视频设备驱动原理,并向linux内核加载了usb驱动。比较了视频采集的两种方式的优缺点,舍弃了原始的read直接从内核缓冲区来读取数据的方式,而采用mmap共享内存的方式将设备映像到内存,使得进程从共享内存中获取视频数据,提高了通信的速度和效率。 在网络监控方面,比较当前流行的几种web服务器,选择移植了面向嵌入式领域的boa服务器,并采用c语言设计实现了用户验证的cgi程序。网络通信服务器的设计是采用面向连接的可靠的tcp通信方式,客户端的设计是利用java applet完成的,使用新的swing类集合完成窗口界面的设计,并设计实现了japplet完成与服务器的通信,达到远程网络监控的目的。 关键词:嵌入式linux;web服务器;视频监控;tcp/ip;java applet第一章 绪论1.1 课题的背景和意义 视频监控系统以其能够实时、形象、真实地反映被监视控制对象的特性广泛应用于生产管理、银行监控和交通安防等重要领域。特别当今社会生活水平的不断提高以及计算机的普及,家庭小型监控系统的需求量也越来越大。传统的模拟信号监控系统存在着诸多局限性:模拟图像信息容易受损,图像质量不高;布线工程大,传输距离受限;数据存储量大,查询不便。虽然数字监控系统克服了上述缺点,但本身也存在一些问题:稳定性可靠性不高,视频前端采集复杂,图像压缩传输不便等。 随着网络技术、图像压缩技术和数字信息技术的不断发展,监控系统也在快速变化和发展中。目前这几种技术结合嵌入式技术催生了全新的基于嵌入式技术的网络视频监控系统。该监控系统是把摄像机输出的模拟视频信号通过嵌入式视频编码器直接转换成ip数字信号。嵌入式视频编码器具备视频编码处理、网络通信、自动控制等强大功能,直接支持网络视频传输和网络管理,使得监控范围达到前所未有的广度。 基于嵌入式技术的网络视频监控系统克服了传统的模拟信号监控系统和数字监控系统的缺点,这种系统的硬件是一个同嵌入式处理器和操作系统捆绑较为紧密、功能专一、专门设计的独立的设备,不像插卡系统那样受通用计算机系统中其它软件硬件的影响,因此性能上更稳定,且便于安装、维护,易于实现系统的模块化设计,便于管理、维护。该监控系统是目前研究的主要方向。本课题是基于这种背景下建立的,其目的是设计实现一套基于嵌入式linux的网络视频监控系统,针对网络视频监控系统的各项关键技术展开研究,包括嵌入式linux技术、网络视频的压缩传输和用于客户端的java applet技术等。该系统充分利用了网络资源,不需要为监控系统增加额外设备,轻而易举地实现远程视频监控功能,具有良好的扩展性和灵活性,成本低,且便于安装、维护和管理。该系统不仅适用于智能小区、银行、校园和重点实验室的监控,还可用于医疗设备的维护管理、工业生产过程的实时监控、环境与安保集中监控以及水利系统的监控和电力系统的监控等。其设计成本也将随着技术的发展和网络的普及而大大降低,具有较强的实际应用价值和借鉴意义。1.2 国内外发展现状和发展趋势 国外监控系统起步较早,它几乎是随着黑白电视机的诞生就出现。近年来,随着半导体工艺、视频压缩技术、网络传输技术的突飞猛进,监控系统得到了飞速的发展,出现了一大批生产监控系统的专业公司以及附带提供监控产品的公司。如美国的digital semiconductor公司、mediacybernetics公司、加拿大picpo公司、coreco公司和德国mir公司等等。其产品多为单路的图像采集卡或压缩卡。其中的digital semicon-ductor的21230编解码系统由于其较高的性价比和灵活性(支持h.261和mpeg-1),己被广泛用于监控领域。一些厂家己开始研制多路监控系统,典型的代表是韩国l.g公司的ldvr2000/3000系列监控系统。该系统有4-6个通道,压缩格式为m-jpeg,由于采用主机软件压缩,所以效率不高。另外如美国sensormatic公司型号为intellep的监控系统,它有16个通道,由于采用模拟视频合成,存储仍采用录像带的方式,因而在系统性能以及灵活性上受到限制。 国内在监控领域起步较晚,九十年代前期采用国外的进口矩阵控制主机,为了适应当时计算机普及化的需求,监控公司纷纷开发利用计算机对矩阵主机进行系统控制的软件,实现电脑对监控系统图像切换、音频切换、报警处理、图像抓拍等多媒体控制。此时的计算机多媒体监控实际上仅仅作为监控系统的一个辅助控制键盘使用,可以说是中国数字化监控开始的雏形。 九十年代中、后期是图像处理技术、计算机技术、网络技术飞速发展的时期。中国国内公司在完成矩阵主机、解码器、多媒体控制系统、云台等外部设备产业化生产后,发现台湾地区和国外监控公司开始将他们基于传统电子制造业的监控生产线转移到中国进行生产,这促进了监控系统的在中国的普及应用。 2000年以后,随着图像压缩技术的进步,特别是mpeg-i、mpeg-ii图像压缩芯片的大量推广应用,2000年至今,数字监控产品进入了一个快速发展时期。伴随着中国国内监控系统数字化、网络化需求日益增大,使许多传统的it企业、网络企业、家电企业纷纷看好这一市场,投入资金、人力、开发数字监控产品,数字监控市场在中国呈现空前繁荣的景象。如北京的微视公司。其主要视频监控产品如mv9920实时压缩卡、mv99-g海量硬盘录像智能监控系统、smartvideo解码系统、以及代销的美国av-8专业视频压缩卡,但其性能与国外的大公司相比还有相当的差距。 视频监控系统的发展经历了三个不同阶段1234:模拟视频监控,数字化图像监控,基于嵌入式视频服务器的网络化数字视频监控。模拟监控系统发展较早,目前常称为第一代监控系统,系统特点:视频、音频信号的采集、传输、存储均为模拟形式,质量最高经过几十年的发展,技术成熟,系统功能强大、完善。存在的问题是:只适用于较小的地理范围与信息系统无法交换数据监控仅限于监控中心,应用的灵活性较差不易扩展。随着计算机存储和计算能力的不断增强,图像监控迎来了一场技术革命。慢慢从过去的模拟处理方式转向数字处理方式,开始使用pc处理图像信号。利用计算机的数据处理能力与显示器的高清晰度,将视频信号通过视频采集卡采集到计算机中,在显示器上显示,大大提高了图像的画质,但是控制与切换仍采用传统的方式,只是计算机串口与之相连,完成控制工作。尽管它有良好的人机界面和较好的稳定性,但它不能称为真正的数字图像监控系统。其根本原因在于系统设计的出发点不是基于计算机,而是基于传统模式。只是在原有的基础上加以改进,大部分时间里,计算机只是充当一个外部监视器的角色。通信协议的多样化与专用化很难统一,导致己有的计算机资源远远满足不了多种设备的要求。 随着信息处理技术的不断发展,基于嵌入式视频服务器的网络化数字视频监控近几年异军突起。全数字化网络监控系统以网络为平台,采用全新的设计理念,集成当今最先进的网络技术、计算机技术以及数字处理技术。全数字化网络监控系统以ip地址来识别所有的监控设备,采用tcp/ip协议来进行图像、声音和数据采集传输能够实现:更广阔地理远距的布局;无限的可扩展能力;庞大的网络监控。前端一体化、视频数字化、监控网络化、系统集成化是视频监控系统公认的发展方向,而数字化是网络化的前提,网络化又是系统集成化的基础,所以,视频监控发展的最大两个特点就是数字化和网络化也是监控系统发展的必然趋势。网络数字视频监控系统与上述第一、二代系统相比具有明显的优势:利用现有的网络资源,轻而易举地实现远程视频监控;系统扩展能力强,只要有网络的地方增加监控点设备就可扩展新的监控点;维护费用低,网络维护由网络提供商维护,前端设备是即插即用、免维护系统系统功能强大、利用灵活、全数字化录像方便于保存和检索;网络中的任意一台计算机,只要安装了客户端的软件,给予相应的权限就可成为监控工作站。1.3 嵌入式系统概述1.3.1 嵌入式系统的定义嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统5。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。嵌入式系统具有软件代码少、高度自动化、响应速度快等特点,特别适合于要求实时和多任务处理的情况。与通用型计算机系统相比,嵌入式系统功耗低、可靠性高;功能强大、性能价格比高、实时性强,支持多任务;占用空间小,效率高;面向特定应用,可根据需要灵活定制。1.3.2 嵌入式系统特点嵌入式系统是将先进的计算机技术、半导体技术以及电子技术与各个行业的具体应用相结合的产物,与通用的计算机系统相比有如下特点678:(1)技术密集、资金密集、高度分散、不断创新的知识集成系统。通用计算机行业中,占整个计算机行业百分之90的个人电脑产业,绝大部分采用的是intel的x86体系结构,而芯片厂商则集中在intel,amd,cyrix等几家公司,操作系统方面更是被微软占居垄断地位。但这样的情况却不会在嵌入式系统领域出现。这是一个分散的,充满竞争、机遇与创新的工业,没有哪个公司的操作系统和处理器能够垄断市场。(2)嵌入式系统通常是面向用户、面向产品、面向特定应用的。嵌入式系统中的cpu与通用型cpu的最大不同就是前者大多工作在为特定用户群设计的系统中。通常,嵌入式系统cpu都具有低功耗、体积小、集成度高等特点,能够把通用cpu中许多由板卡完成的任务集成在芯片内部,从而有利于整个系统设计趋于小型化。在对嵌入式系统的硬件和软件进行设计时必须重视效率,去除冗余,针对用户的具体需求,对系统进行合理配置,才能达到理想性能。与此同时,系统设计还受市场供求关系的影响。嵌入式处理器的发展也体现出稳定性,一个体系一般要存在8 10年的时间。一个体系结构及相关的片上外设、开发工具、库函数、嵌入式应用产品合在一起,可以构成一套复杂的知识系统。 (3)嵌入式系统和具体应用有机地结合在一起,其升级换代也是和具体产品同步进行的。因此嵌入式系统产品一旦进入市场,就具有较长的生命周期。 (4)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机中,而不是存贮于磁盘等载体中。由于嵌入式系统的运算速度和存储容量仍然存在一定程度的限制,另外,由于大部分嵌入式系统必须具有较高的实时性,因此对程序的质量,特别是可靠性,有着较高的要求。 (5)嵌入式系统本身并不具备在其上进行进一步开发的能力。在设计完成以后,用户如果需要修改其中的程序功能,也必须借助于一套开发工具和环境。 (6)通用计算机的开发人员通常是计算机科学或者计算机工程方面的专业人士,而嵌入式系统开发人员却往往是各个应用领域中的专家,这就要求嵌入式系统所支持的开发工具易学、易用、可靠、高效。1.3.3 嵌入式系统发展历程与趋势 嵌入式系统的出现至今已经有30 多年的历史, 近几年来, 计算机、通信、消费电子的一体化趋势日益明显, 嵌入式技术已成为一个研究热点。纵观嵌入式技术的发展过程, 大致经历四个阶段。嵌入式技术的发展,大致经历了四个阶段9: 第一阶段是以单芯片为核心的可编程控制器形式的系统,同时具有与监测,伺服,指示设备相配合的功能.这种系统大部分应用于一些专业性极强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。 第二阶段是以嵌入式cpu 为基础,以简单操作系统为核心的嵌入式系统.这一阶段的操作系统具有一定的兼容性和扩展性,但用户界面不够友好。 第三阶段是以嵌入式操作系统为标志的嵌入式系统.这一阶段系统的主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核精小,效率高,并且具有高度的模块化和扩展性;具备文件和目录管理,设备支持,多任务,网络支持,图形窗口以及用户界面等功能;具有大量的应用程序接口(api),开发应用程序简单;嵌入式应用软件丰富。 第四阶段是以基于internet 为标志的嵌入式系统, 这是一个正在迅速发展的阶段.目前大多数嵌入式系统还孤立于internet 之外,但随着internet 的发展以及internet 技术与信息家电,工业控制技术等结合日益密切, 嵌入式设备与internet 的结合将代表着嵌入式技术的真正未来。嵌入式系统的发展对嵌入式操作系统提出了更高的要求.因此,对嵌入式操作系统的结构,设计,用户界面等诸多方面进行深入研究,将有助于嵌入式系统的应用和发展。其发展的趋势如下81011: (1)低功耗的嵌入式系统。为满足高可靠性要求, 低功耗的系统将应运而生。 (2)java 虚拟机与嵌入式java开发的嵌入式系统希望有一个方便的、跨平台的语言与工具,java正是用java 虚拟机实现java 程序独立于各机种的平台。一个支持嵌入式系统开发的、足够小、足够快、又有足够确定性的嵌入式java程序包已经出现, java虚拟机与嵌入式java 将成为开发嵌入式系统的有力工具。 (3)嵌入式系统的多媒体化和网络化。随着多媒体技术的发展, 视频、音频信息的处理水平越来越高, 为嵌入式系统的多媒体化创造了良好的条件, 嵌入式系统的多媒体化将变成现实。它在网络环境中的应用已是不可抗拒的潮流, 并将占领网络接入设备的主导地位。(4)嵌入式系统的智能化。嵌入式系统与人工智能、模式识别技术的结合, 将开发出各种更具人性化、智能化的嵌入式系统。1.3.4 嵌入式linux系统开发的优势 linux系统作为一个嵌入式操作系统具有许多的优点,如系统稳定、功能强大、支持多种硬件平台、应用软件多、简单易用。以下几点就具体说明了本系统选择嵌入式linux 作为操作系统的原因12,所有的这些,都是现有的嵌入式操作系统所无法比拟的。 (1)使用成本低。几乎所有的商业用操作系统如microsoft 公司的windows 98/nt server/nt workstation 系列,都需要为每一个拷贝支付相当数量的费用,在其下的应用软件每一个都需要大量的支出来获得。商用操作系统下建立了一个开发工具链,用户除了要为操作系统本身付费之外,还要为组成工具链的应用软件工具包支付大量的费用。但是linux 是免费软件,只要遵守gpl 的规定,就可以免费获得拷贝。linux下有同样遵循gpl 规定的c、c+、java 等等一系列的软件工具开发包,从功能角度上看并不亚于商用开发包,同时可以极大的降低开发成本。(2)源码公开。linux 可以随意地配置不需要任何的许可证或商家的合作关系,任何人可以修改并在gpl 下发行。开发人员可以对操作系统进行定制,由于有gpl的控制,大家开发的东西大都相互兼容,不会走向分裂之路。linux 用户遇到问题时可以通过internet 向网上成千上万的linux 开发者请教,即使最困难的问题也有办法解决。linux 带有unix 用户熟悉的完善的开发工具,几乎所有的unix系统的应用软件都已移植到了linux 上。其强大的语言编译器gcc、g+等也可以很容易得到,不但成熟完善,而且使用方便。(3) 支持多种硬件平台。linux 因为有了一个大的支持者群体,其中许多人都编写驱动程序和其它的更新程序并且免费的通过internet 网络进行分发,这意味着对新硬件的linux 驱动程序甚至比用于其它的unix 系统的驱动程序还来得及时。现在linux 已经被移植到多种硬件平台,支持包括x86、mips、powerpc、arm等现有的绝大部分微处理器体系结构。这对受开销、时间限制的研究与开发项目是很有吸引力的,原型可以在标准平台上开发然后移植到具体的硬件上,加快了软件与硬件的开发过程。 (4)文档技术支持完善。linux 有非常多的文档支持,从为初学者准备的各种教程到非常详细的联机帮助文档。linux 是互联网充分发展的产物,许多关于linux 的文档都可以在internet 上找到和下载。linux document project 是为linux 提供系统化的文档支持的项目,在世界上许多程序员和用户的帮助下,它已经收集了非常详细的系统文档和使用文档。而且,各种关于linux 的书籍和杂志正如雨后春笋般地出现,大量的英文资料也正在翻译成中文,方便中文使用者。用户还可以通过linux 新闻组得到很好的支持。对linux 的支持绝大部分是通过用户团体在usenet 新闻组上提供的。这上面广泛收集有大量的faq,其内容包括linux 安装、配置和故障定位的方方面面。 (5)强大的网络功能。linux 操作系统突出的是网络部分,基本上所有的网络协议和网络接口都可以在linux 上找到,linux 内核比标准的unix 更加高效地处理网络协议,系统的网络吞吐性能非常好,这也是为什么linux 在网络服务器市场上占据越来越大市场份额的一个原因。 (6)微内核模块化体系结构。linux 操作系统本身的微内核体系结构相当简单,网络和文件系统以模块形式置于微内核的上层,驱动程序和其它部件可在运行时作为可加载模块编译到或者是添加到内核,这为构造定制的嵌入系统提供了高度模块化的构件方法,使添加部件非常容易。 (7)系统小巧。一个功能完备的linux 内核要求大约1m 内存。而linux 微内核只占用其中很小一部分内存,包括虚拟内存和所有核心的操作系统功能在内,只需占用系统的100k 内存。只要有50ok 的内存,一个有网络协议栈和基本实用程序的完全的linux 系统就可以在一台8 位总线(sx)的intel 386 微处理器上运行的很好了。由于内存要求常常是根据需要的应用所决定的,linux 系统甚至可以仅使用256kb rom和512kb ram 进行工作,完全适合于资源有限的嵌入式硬件平台。1.4 论文的主要工作和内容安排 本文在广泛了解视频监控的发展现状和发展趋势的基础上,结合嵌入式系统、网络数据传输技术,数字图像压缩技术,提出一种基于嵌入式linux的网络视频监控系统设计方案。重点介绍了系统软件设计环境的搭建和系统软件的实现过程。整个论文的结构安排如下: 第一章主要介绍课题的背景和意义和视频监控系统的国内外发展现状和发展趋势。嵌入式系统的定义,嵌入式系统的特点以及嵌入式发展历程与趋势,引出本系统选择嵌入式linux系统作为系统平台的原因所在。最后引出本论文设计的主要工作和内容安排。 第二章介绍网络视频监控系统的软件设计环境的搭建,首先给出了系统的总体结构设计,接着说明本系统的硬件平台选择arm开发板的原因,以及简单介绍arm9开发板s3c2410的硬件资源,最后给出主机开发环境的搭建。 第三章主要涉及到一些移植工作,首先给出了整个系统的启动过程,然后对各个启动的各个环节进行分析,并把这些环节移植到arm平台上。这些移植的环节包括bootload的移植,linux内核的移植,yaffs文件系统的移植和用busybox1.5.1版本制作根文件系统。 第四章涉及到网络视频监控终端软件的设计。首先给出图像采集的一些知识,包括驱动的加载和设计,基于video4linux的图像采集的实现过程。然后涉及到图像的网络传输设计,包括web服务器的构建,cgi用户验证,视频服务器端设计和客户端javaapplet的设计以及html网页的设计等。第五章给出系统设计方案的实验测试,并对研究工作进行了总结,给出了论文的不足之处和对下一步的研究工作提出了展望。第二章 系统开发环境的建立2.1 系统总体结构设计本文本着稳定性、可靠性和实用性以及性价比高的原则,运用当前的网络技术、视频压缩技术和嵌入式技术等设计的基于嵌入式linux系统的网络视频监控系统。该系统是以嵌入式linux系统和嵌入式控制器s3c2410为核心平台,在这个平台上建立web服务器和视频服务器。利用tcp/ip协议技术实现了网络通信,把usb数字摄像头采集到的图像进行jpeg压缩,然后通过网络传输到远程计算机的客户端。客户端方采用javaapplet技术实现图像的接收并完成显示功能。客户端的用户可以通过具有java插件的浏览器实现监控的目的。如图2.1所示的系统总体结构图。图2.1 系统整体结构图整个系统分为以下四个部分: 图像采集部分。该部分利用usb摄像头完成视频图像的采集的工作,usb摄像头使用的是中星微的zc301p芯片的高清晰摄像头,该芯片具有jpeg视频图像的硬件压缩功能。嵌入式平台部分。嵌入式平台包括嵌入式arm处理器和移植到arm的linux操作系统。并移植web服务器到该平台,利于超文本文档传输。网络传输部分。该部分负责把采集到的图像通过网络传输到客户端,包括视频服务器程序设计等。客户端浏览部分。该部分主要把接收的图像显示到浏览器上,便于监控。利用javaapplet完成客户端的程序设计。下面就是针对提出的方案做具体的设计工作。2.2 系统硬件的选型本系统使用的硬件平台是由广州友善之臂科技有限公司开发的一款基于arm9的开发板sbc2410,其中央处理器采用韩国三星电子公司生产的s3c2410x。这是一款基于arm920t内核的16/32位risc嵌入式微处理器,带有mmu功能,其主频可以达到203mhz,同时采用了amba的新型总线结构,实现了mmu、amba bus、harvard的高速缓冲体系结构,同时支持thumb16位压缩指令集,从而能以较小的存储空间要求获得32位的系统性能。2.2.1 s3c2410x处理器简介s3c2410x处理器131415提供了丰富的资源:16kb指令cache和16kb数据cache,以及mmu虚拟内存管理;lcd控制器;支持nand flash系统引导;sdram控制器;3通道的uart;4通道的pwm定时器;i/o端口;8通道的10位adc和触摸屏接口;iic总线接口;iis总线接口;usb主机和usb设备控制器;sd和mmc卡接口;2通道的spi;处理器还集成了rtc功能和具有pll的芯片时钟发生器。s3c2410x支持从nand flash启动,nand flash具有容量大,价格低等优点。系统采用nand flash与sdram组合,可以获得很高的性价比。处理器采用1.8v/2.0v内核供电,3.3v存储供电,3.3v外部i/o供电,fbga封装,共274个引脚。处理器还支持大小端模式存储字数据,其寻址空间可以达到1g,每个bank为128mb,对于外部i/o设备的数据宽度,可以是8/16/32位,所有的存储器bank都具有可编程的操作周期,而且支持各种rom引导方式,其结构框图如2.2所示。图2.2 s3c2410x结构功能框图2.2.2 核心模块介绍1s3c2410内存控制器s3c2410内存控制器提供了对外部存储器访问的一些机制。如图2.3所示,将其外部寻址空间划分为8个区,其中6个区用于挂载rom,sram等,其余两个区用于挂载rom,sram,sdram等。从图中可以看出每个区的最大寻址空间为128m。对应启动方式的不同内存布局也是不一样的,从nor flash启动的内存布局如图2.3(2)所示,而图2.3(1)为从nand flash启动的内存分布图。值得注意的是s3c2410内部集成了4ksram,当从nand flash启动的时候,其被映射到0x00000000-0x00001000地址空间,从nor flash启动时,其映射的地址段为:0x40000000-0x40001000。这个4k的sram空间对于注册和建立中断服务历程(isr)是非常有用的,中断向量表位于0x00000000-0x00000020空间内。系统上电或从新启动时可以将bootloader从flash内部拷贝到该4k空间内,从而可以执行中断服务历程程序段,当控制权转到嵌入式操作系统,系统就可以很容易的改变中断服务历程函数,原因在于sram为内部内存,其读写速度较外部内存有极大的优势,并且不会改变flash内部存储的中断服务历程设置代码。核心板使用的存储器有以下几种:amd公司的am29lv8000b(nor flash,1mb),还有sumsung公司的k9f1208u0b(nand flash,64mb),以及不是太经常使用的现代公司的hy57v561620ctp(sdram,32*2mb)。nor flash是挂载在bank0上的,其连线方式与s3c2410a手册的16bit线宽连线方式一致。s3c2410内部集成了nand flash控制器,所以其不挂载在任何一个区,其读写功能均由控制器完成。按照bank6和bank7两个区必须挂载相同内存大小的ram的规定,分别将两个32m的sdram挂载在两个区,其硬件连接方式可以参考s3c2410手册16,其寻址空间为0x30000000-0x37ffffff。图2.3 s3c2410x内存映射图2 nand flash控制器flash存储器技术可以说是eprom和eeprom非易失性存储器技术的综合,但是它们又有区别,比如:flash存储器可以按块进行擦除操作,而eeprom只能按位擦除,显然flash存储器在擦除速度方面有优势。flash存储器是一个成熟的技术,其相对其它非易失性存储器如eprom和eeprom有很多优势,因此在嵌入式系统用常常使用flash存储器代替eprom和eeprom,市场上大部分嵌入式产品都是使用flash存储器作为固化存储器。flash存储器通常有nor flash和nand flash两种,在核心板上两者均有使用,由于价格因素nor flash容量采用1m,而nand flash 使用了64m,鉴于nand flash容量较大,此次采用的嵌入式系统启动方案为nand flash启动。为支持nand flash启动,在s3c2410内部集成了4k内部sram缓冲区(称为steppingstone),当目标板上电或被复位重新启动时,nand flash最前4kb内容将会被拷贝至sram中执行。此部分程序运行后,将会把nand flash中其它编译过的程序,如linux内核和根文件系统拷贝到sdram(bank6和bank7 扩展的外部内存)运行。由于nand flash本身的缺陷,这些拷贝的数据均要经过数据有效检查(ecc)。图2.4展示nand flash控制器的主要功能模块及其模块之间的联系。图2.4 nand flash控制器图2.5 nand flash操作模式从图2.5我们可以看出,对于nand flash控制器,当嵌入式系统从nand flash, 启动时有两种操作模式:一种是自动启动模式(auto boot mode) ,另外一种是nand flash模式(nand flash mode)。自动启动模式是在嵌入式系统对nand flash进行读写前自动由其相关寄存器(sfr)将nand flash前面4kb代码自动拷贝至内部sram(steppingstone)然后自动运行,在启动启动模式中,是按照以下四个步骤进行的16.1)重新启动完成。2)当自动启动模式被使能,nand flash最前4kb数据被拷贝到内部sram缓冲区中。3)内部sram缓冲区被映射到bank0区,地址为0x00000000-000000020。4)cpu执行内部sram中的代码。值得注意的是:在自动启动模式中,ecc功能被禁止,为此nand flash存储器的最开始的4kbyte空间必须是连续没有坏块的。2.2.3 sbc2410硬件资源sbc2410开发板是基于三星公司的arm处理器s3c2410x,采用6层板设计。开发板集成了64m sdram、64m nand flash、1m boot flash、rj-45网卡、音频输入与输出、usb host、usb slave、标准串口、sd卡插座、用户按键和一些用户灯等设备接口,并且引出cpu的大部分信号引脚。核心板上同时具有nor flash和nand flash,可以通过调线boot sel选择启动方式(nor fl ash启动或nand fl ash启动),对应的硬件资源8如表2.1所示。表2.1 sbc2410硬件资源表2.3 主机开发环境的搭建进行嵌入式开发,首先要搭建一套完善的开发环境,这套开发环境包括操作系统以及连接器、编译器和调试器在内的软件开发工具。由于在嵌入式开发板上资源有限,不能在开发板上运行开发工具和调试工具,因而采用一种交叉编译调试环境,即在宿主机(通常是pc主机)上建立交叉编译调试环境,生成可执行文件,然后下载到目标板上运行。系统开发环境的搭建方法如图2.6所示:图2.6 系统开发环境搭建图图中宿主机是指x86结构的计算机,在宿主机上安装的操作系统有redhat enter-prise linux as4和windows xp。嵌入式目标板就是友善之臂sbc2410开发板,宿主机与目标板的通信方式有jtag并口通信、串口通信、usb接口通信和通过网线通信的方式。jtag口主要下载vivi可执行代码到目标板,串口主要用来控制vivi命令和调试系统,有时也用来下载vivi可执行代码。linux内核映像和根文件系统映像是由串口控制的通过usb接口下载的,网口主要负责把应用程序的可执行代码下载到标板。2.3.1 串口环境的搭建串口环境的搭建是通过设置超级终端参数建立的,主要设置可用串口,波特率等。xp系统下串口环境的设置相对来说很简单,只需要打开超级终端设置可用串口为com1,波特率为115200就行了。linux环境下的串口的设置是通过设置minicom实现的,minicom是linux下常用的终端仿真程序,它类似windows下的超级终端。设置如下图2.7所示:图2.7 minicom设置minicom窗口的打开是通过命令minicom -s实现的,图中/dev/ttys0表示使用的是串口1。exit退出后,设置文件就保存到/etc/minirc.df1文件中。设置完毕,打开目标板上上的电源开关,就可以看到vivi的启动信息了。2.3.2 usb接口环境的搭建usb接口环境的搭建是在windows环境下建立的,usb接口主要负责linux内核映像文件和根文件系统映像文件的下载到开发板上,这种下载的速度快,节约了开发时间。这种下载方式与超级终端协作完成。首先打开超级终端进入vivi指令,然后按照vivi的命令下载。内核映像的下载命令:vivi load flash kernel u根文件系统的下载命令:vivi loadyaffs -e root u然后出现usb host is connected. waiting a download提示符,打开usb下载界面,选择要下载的映像文件。串口打印出下载的过程,如下所示下载根文件系统串口的打印过程:now, downloading address:30000000h,total:38162266downloaded file at 0x30000000, size = 38162256 bytesflash params: oobsize = 16, oobblock = 512, erasesize = 16384,partition size =64667648erasing and programming nand with yaffs image blockerasing(addr/count) - block bad(addr/count) - all count-0x01348000/01086 0x00ef0000/00001 010872.3.3 nfs环境的搭建网络文件系统nfs最早是sun开发的一种文件系统。nfs允许一个系统在网络上共享目录和文件。通过使用nfs,用户和程序可以像访问本地文件一样访问远端系统的文件。linux系统支持nfs,使用nfs的这种功能,就能很轻松地将宿主机上地文件挂载到嵌入式开发系统上去,这样不仅方便了嵌入式开发板对主机上文件地访问,而且极大地提高了嵌入式开发系统中应用程序地开发和调试效率。配置nfs,需要添加/etc/exports文件。/etc/exports文件格式以及说明如下:#共享目录主机名称1(参数1,参数2) 主机名2(参数3,参数4)共享目录:是宿主机上要向外输出的以后目录主机名称:是允许按照指定的权限访问这个共享目录的远程主机参数:是定义了各种港问权限exports配置文件参数说明如表2.2所示:在我的开发板上exports配置如下:表2.2 exports配置文件参数说明/friendlyarm/root *(rw,sync,no_root_squash)这种配置表示输出共享/friendlyarm/root目录,并且所有的ip都可以访问。在完成/etc/exports这个配置文件后就可以启动nfs服务了,用service命令启动。#service portmap start#service nfs start#service iptables stop开发板要共享宿主机上的文件/friendlyarm/root,只需要运行文件的挂载命令就可以了。和挂载本地文件系统时唯一不同的地方在于要挂载的文件系统的描述前加上远程文件系统的主机名或ip地址。挂载语法如下:#mount -t nfs 202.193.74.220:/friendlyarm/root /mnt挂载成功后,就可以把要调试的应用程序拷贝到宿主机/friendlyarm/root下进行挂载调试,调试成功后就可以下载到开发板上永久保存。2.3.4 交叉编译工具的搭建交叉编译工具的搭建是整个系统很关键的一个步骤,这种工具的搭建是在宿主机linux系统下完成的,主要给交叉编译工具指定路径,使其在编译代码时能够工作。本系统针对arm平台的,现在有不少站点可以免费下载到针对arm体系结构的交叉编译器。当前交叉编译器有多种版本,本系统使用的交叉编译工具3.3.2版本的arm-linux-gcc,为了使用方便把这些工具路径加入到环境变量path中,只需要修改/etc/profile文件,修改如下:# path manipulationif id -u = 0 ; thenpathmunge /sbinpathmunge /usr/sbinpathmunge /usr/local/sbinpathmunge /usr/local/arm/3.3.2/bin最后一行使把编译器路径加入到path,还有在系统中使用了2.95.3和3.4.1版本的交叉编译工具,2.95.3版本主要用来编译vivi源代码,而本系统使用的linux内核版本使linux2.6.11的,需要高版本的3.4.1交叉编译器,3.3.2主要用于编译busybox1.4以上版本的而设置的,其他版本的编译器在编译busybox的时不通过。交叉编译工具的搭建完毕就可以针对arm平台进行本系统的移植工作,包括vivi的移植,linux内核的移植,根文件系统的制作等。2.4 本章小结本章主要完成了系统的整体设计方案,针对这个方案的需求完成硬件的选型,并简单的介绍了硬件的资源和结构。重点介绍了主机开发环境的搭建,包括串口,usb接口、网络接口和交叉编译工具的搭建,这是系统开发所必需的,随后的移植工作和用户应用程序的开发都是在这个环境下设计并完成的。第三章 嵌入式linux操作系统的移植嵌入式linux操作系统能够有效的管理复杂的系统资源,同时提供了库函数、驱动程序、工具集和基本的应用程序,为设计工作带来诸多方便。为了能使用linux自带的资源还需要把linux操作系统移植到本系统使用的arm开发平台上。目标板上linux系统的运行需要经过几个步骤才能出现系统提示符或运行用户应用程序。系统加电后。首先从0x00地址开始取的boot loader 程序,然后判断系统是否要启动linux内核映像,如果不启动则进入boot loader命令操作,如果启动内核,则载入内核映像,内核对各种硬件设备进行初始化,挂载根文件系统,执行init进程,并从/etc/inittab取得配置文件,最后提示用户登陆或执行用户应用程序。目标板上linux系统的启动过程如图3.1所示。图3.1 目标板上linux系统的启动流程嵌入式linux系统从软件的角度看通常可以分为4个层次17(1)引导加载程序。包括固化在固件(rmware)中的启动代码和boot loader两大部分。(2)内核。特定于嵌入式板子的定制内核以及控制内核引导系统的参数。(3)文件系统。文件系统包括根文件系统和建立于flash内核设备上的文件系统。通常用ramdisk作为根文件系统。它是提供管理系统的各种配置文件以及系统执行应用程序的良好环境的载体。(4)用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核之间可能还会包括一个嵌入式图形用户界面。从软件分层的角度来看,本系统完成的主要工作有:boot loader的移植,这里移植的是vivi;linux内核的移植,这里采用的是linux2.6.11.1;文件系统的移植,这里移植的是yaffs文件系统;根文件系统的建立,这里用busybox1.5定制系统运行的基本应用程序。用户应用程序的设计在下一章完成。下面就从这个角度展开具体的移植工作。3.1 boot loader移植实现3.1.1 boot loader的简介boot loader (引导加载程序)是系统加电后运行的第一段代码。一般它只在系统启动时运行非常短的时间,对嵌入式来说,这是一个非常重要的系统组成部分。整个系统的加载启动任务由boot loader来完成。在一个基于arm的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的boot loader,通过这段小程序可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。图3.2就是一个同时装有boot loader、内核启动参数、内核映像和根文件系统的典型固态存储设备的空间分配结构示意图。图3.2 空间分配结构图大多数boot loader 都包含两种不同的操作模式:启动加载模式和下载模式18。启动加载模式是从目标机上的某个固态存储设备上将操作系统加载到ram 中运行。在下载模式下,目标机上的boot loader 将通过串口连接或网络连接等通信手段从主机(host)下载文件。boot loader是严重依赖于硬件而实现的,每种不同的体系结构的处理器都有不同的boot loader。不过boot loader的发展也趋于支持多种体系结构。比如u-boot从最初支持powerpc到目前同时支持powerpc,arm,mips,x86等多种体系结构。除了依赖处理器体系结构外,boot loader实际上也依赖于具体的嵌入式板级设备的配置,也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种处理器而构建的,要想让其运行在一块板子上的boot loader也运行在另一块板子上,通常都需要对bootloader进行移植工作。所以在嵌入式世界里要想建立一个通用的boot loader几乎不可能,于是出现了多种引导加载程序,如blob、red boot、vivi、u-boot等。本节要做的工作就是移植适合自己板上的boot loader,即vivi的移植。3.1.2 vivi的启动分析vivi 是由mizi 公司为arm 处理器系列设计的一个boot loader,可用于arm9处理器的引导。vivi利用串行通信为用户提供接口,为连接vivi,首先利用串口电缆连接宿主机和目标板,然后在主机上通过串口通信程序,并在目标板上正确设置vivi以支持串口。vivi也有前面说过的两种工作

温馨提示

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

评论

0/150

提交评论