毕业设计(论文)-基于ARM-Linux的运动部件监控系统.docx_第1页
毕业设计(论文)-基于ARM-Linux的运动部件监控系统.docx_第2页
毕业设计(论文)-基于ARM-Linux的运动部件监控系统.docx_第3页
毕业设计(论文)-基于ARM-Linux的运动部件监控系统.docx_第4页
毕业设计(论文)-基于ARM-Linux的运动部件监控系统.docx_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

西南科技大学本科生毕业论文论文题目:基于arm linux的运动部件监控系统专业:过程装备与控制工程学生:指导老师:摘要移动物体检测是在视频监控范畴中的一个比较基本的计算机视觉技术。广泛应用于工业生产、交通、公安、银行和智能办公大楼等场合。而本题目的拟定则是针对于工业生产中一些比较危险、人类不可直接观察或不易观察到的场合。比如过程装备与控制工程专业,工作条件基本都是高温高压的环境下,当这些装备运行起来后,对人类来说十分危险。本设计是一种基于arm和嵌入式linux系统的移动物体检测系统,处理器使用三星公司生产的s3c2440以及ov7740摄像头捕捉移动图像,同时移植一个小型嵌入式web服务器作为查看终端,达到了当今时期对电子类产品的一个常规要求:在相对耗费人力物力资源较少的情况下,达到移动检测的目的。本系统最终的功能为:当检测系统检测到摄像头前方有移动的物体后,将其抓拍下来,然后保存图像视频数据,同时实现利用嵌入式播放器播放报警声音,然后可以通过登入web查看抓拍下来的图像或视频的功能。关键字:移动物体;监控;嵌入式;s3c2440;服务器;移植subject :design of monitoring system based on arm linuxspecialty:process equipment(s) and control engineeringname:zhou juninstructor: zhang jieabstractmotiondetectionin the category of video surveillance is a basic and importantcomputer vision technology, which isused in industrial production, transportation, public security, banks, and intelligent office building, etc.the subject purpose proposed is for industrial production in some more dangerous, human beings cannot be directly observed or not easily observed.such as it is under the environment of high temperature and high pressure working conditionsin the work related with the pece. at the same time, it is very dangerous for human beings,when the equipment to run.this design is motion detectionsystem based on arm and embedded linux system.usingsamsungs s3c2440 toprocessor and ov7740 camera to capture images, and transplanting a small embedded web server as a view terminals. the system has achieved thegoal of motion detectionin the case of relatively less manpower resource, and reached the current period a regular requirements for electronic product.the final function of this system: when the detection system to detect the motionfrom camera, it snapped down, and then save the video and image data, and play alarm sound.then you can login in web server and view images or videos.key words :motion, detect, monitoring, embedded, s3c2440, server, transplantation目录第1章绪论71.1视频监控中移动检测技术意义71.2视频监控中移动检测技术现状与发展81.3嵌入式系统介绍和定义91.3.1嵌入式系统特点91.3.2嵌入式系统发展历史101.4本文研究内容的重要性111.5系统总体设计方案111.6本文主要内容及组织方式121.7本章小结13第2章宿主机平台搭建142.1系统开发环境搭建142.1.1硬件环境构建142.1.2软件环境构建152.1.3 ubuntu中各种工具服务器的安装212.1.4嵌入式交叉编译环境搭建232.2 windows下相关工具介绍242.2.1 securecrt242.2.2 source insight242.3对本文相关知识的说明252.4本章小结25第3章基础系统环境移植263.1嵌入式操作系统的选择263.2嵌入式系统启动流程273.3 bootloader移植273.3.1 bootloader的stage1283.3.2 bootloader的stage2283.3.3移植bootloader283.4 linux内核的移植313.4.1简单修改内核支持s3c2440313.4.2设置mtd分区323.4.3移植yaffs2文件系统333.5根文件系统制作333.5.1根文件系统目录结构333.5.2移植busybox343.5.3安装glibc库363.5.4构建根文件系统其它目录373.5.5制作yaffs2文件系统映象383.6本章小结39第4章系统驱动部分设计与实现404.1目标板外围驱动模块404.1.1嵌入式linux设备驱动开发简介404.1.2本系统需要实现的驱动模块414.2视频采集子系统474.2.1视频采集子系统(v4l)概述484.2.2 v4l2的框架484.2.3 usb摄像头514.2.4 cmos摄像头524.2.5子系统测试与最终方案选择554.3声音报警子系统554.3.1声音报警子系统概述564.3.2 alsa驱动架构(alsa-driver)564.3.3 asoc驱动(uda1341)实现594.3.4声音报警子系统运行测试624.4本章小结63第5章移动物体提取645.1引言645.2图像检测基本方法及分析655.2.1帧差法655.2.2背景减除655.2.3光流法665.3移动物体检测程序实现665.4 motion移动物体检测软件移植675.5本章小结71第6章嵌入式web服务器移植726.1嵌入式web服务器概述726.2 web服务器boa移植736.2.1嵌入式web服务器boa移植736.2.2服务器配置文件的设置746.3移动物体监控系统cgi程序开发756.4本章小结78第7章系统整合、测试807.1手动运行系统进行测试807.2编写mdev脚本使系统自动运行827.2.1系统配置文件修改827.2.2测试系统的自动运行847.3本章小结86第8章总结与展望878.1总结878.2展望88致谢89参考文献90第1章 绪论1.1 视频监控中移动检测技术意义社会在不断发展,科学也在不断进步,如今许许多多的智能化设备已经进入到我们生活的各个方面。在科技发达的今天,仍然不忘进步与创新。正因为此,所以才有了现代的生活方式。随着以后技术的发展,人们以前许许多多的生活方式将会被改变,都会朝着生活简单、智能化、节能等方向奋斗。目前对于视频监控方面的技术,在很大程度上已经趋于成熟,并且其应用非常广泛的穿插在我们生活的方方面面。过去人们在进行视频监控时,要求一定要不间断的盯着监控屏幕看,不然在发生某些特殊情况时不能及时处理。可是对于人类来说,长久地看着许许多多的监视器是一项极重的任务。眼睛的疲劳和长时间的工作导致头脑反应慢,以至于忽视某些监控画面的有效判断等问题时有发生。同时这对人们的身体健康会造成不可忽视的影响。所以当前的问题就是在能够解决实际监控问题的基础上,能够很好的节省各种资源的浪费,比如人的体力、脑力等。于是,嵌入式系统开发技术的出现,给许多类似的问题提供了有效的硬件上的帮助。因此,嵌入式系统开发技术未来在许多行业的需求比现在还要多。嵌入式系统开发技术融合了多门学科的知识,包括电子技术、只能控制、计算机软件编程等。这给嵌入式系统的开发提高了一个档次。嵌入式的概念早在80年代就开始出现,就像在我们学习阶段学习的8051单片机。现在这些微处理器在系统性能,如功耗、价格等方面有了飞速的变化。即使有了这种超大范围的变化,8位、16位微处理器到现在为止仍然使用广泛,比如小型工控装置,玩具,甚至某些只能设备等,由此可以看出,嵌入式到今天为止早已进入到了我们生活的方方面面。嵌入式系统在硬件方面与我们常用的pc机几乎一模一样。因此,在理解pc机硬件工作环境下再来学习嵌入式系统开发技术将会达到事半功倍的效果。本文设计的系统旨在设计一款支持linux操作系统的移动图像监控设备,目标是摄像头前面的移动物体(无论是什么在移动),输出对移动物体抓拍的图片或者视频信息同时在捕捉到移动物体是发出报警。本系统主要构成部分:1、 输入设备:专门用于采集图像数据的摄像头,也是本系统的主要;2、 soc(嵌入式处理器):s3c2440,由三星公司生产,arm920t内核。这个处理器上集成有mmu,因此能够更好的支持linux操作系统。3、 由于本系统需要进行报警处理,因此喇叭(扬声器)也属于本系统的构成部分。其中在嵌入式单板上已经包含了声卡。1.2 视频监控中移动检测技术现状与发展监控系统按照数据传输的方式依次分为模拟监控时段、半数字化时段和完全数字化时段。1、 模拟监控时段在这个阶段的视频监控中信息的传递完全使用模拟信号的方式进行。这种方式的监控主要特点是设备庞大,而且摄像机到显示器的实时传输信号不稳定。这个阶段是监控技术的起步阶段,因此缺点难度非常多。2、 半数字化时段随着相关技术人员的不断研究开发,在录像机和显示器之间加装一些设备,让录像机产生的信号变为电信号。电信号的传递比在第一个时期的模拟信号传递更为稳定,并且慢慢的采用计算方式进行信号的处理。这时期的监控技术已经在向数字化迈进了。3、数字化时段经过长时间的发展,一些技术人员开发出了数字摄像头,用于代替之间庞大笨重的摄像机。摄像头信号的输出为电信号,因此可以直接传输到电脑上进行处理并显示。这个时候的监控设备已经完全数字化了。目前,摄像头与显示器之间的信号大多任然为有线传输,不过当前市面上已经出现了无线监控技术。所以以后监控系统的发展将会从有线逐渐发展到无线,这样一来就不需要在两设备之间如何接线而纠结了。在网络、计算机完全数字化的今天,计算机的数字图像处理被用在各大智能电子产品上。比如机器人对各种物体的检测与识别等。对于基本的视频监控设备基本没有搭载移动物体识别的功能。这对于在某些特定的监控场合需要保存视频的时候,比如在记录工业机器人的工作状态时需要非常大的存储容量空间。而且在查看视频的时候大部分视频也是无用的。因此,本文在这个基础上设计出了一款只对运动物体进行监控的监控系统。主要是对移动物体的检测,同时在检测到物体移动的时候将其信息抓拍保存下来,包括图片和视频。1.3 嵌入式系统介绍和定义就仅仅对“嵌入式系统”这个词汇而言,嵌入式系统是指嵌入到其他物体中的系统。比如对于一辆汽车而言,其中嵌入式系统多达几百个,而每一个几乎都独立运行并控制某一个功能、确保某一个功能的正常运行。而对于一个汽车来讲,我们也可以称整个汽车为一个大的设备。所以在此我对嵌入式系统的定义为:以整个设备的正常运行为中心,嵌入到设备中某一部分并实现对该部分的精确控制的小型系统,包括硬件和软件系统。当然现在嵌入式系统以及深入到我们生活的方方面面,比如我们的手机就是一个纯嵌入式设备,而我的定义对其不再实用。在许多嵌入式系统相关的书上对嵌入式系统的定义为:“以应用为中心、以计算机技术为基础、软硬件可裁剪、适用于应用系统,对功能、成本、体积、功耗严格要求的专用计算机系统。”发展到现在,含有嵌入式系统的设备在生活中随处可见:只能电子手表、google开发的基于android系统的只能手机、汽车、以及各种只能电子设备等。按照本人的观点,所有的出了pc意外的计算机系统都可以称之为嵌入式系统。1.3.1 嵌入式系统特点嵌入式系统经常用于某些“特定”的场合,与我们通用的pc相比具备如下特点:1、软硬件可裁剪。如果有条件拆开市面上销售的笔记本电脑,发现它们清一色的都包含:cpu、内存、硬盘、显卡、键盘等设备。对于cpu而言就来自两家公司amd和inter。对于操作系统来说几乎都为windows。相反,对于嵌入式设备,比如手机而言。会发现虽然其功能相似,但芯片各不相同,操作系统也千其白样。并且这些设备的软件、硬件都可以按照所需功能进行适当添加,而不是像普通pc机那样必须固定包含那几样硬件。2、性能优越。举个简单的例子:对于目前最新的iphone6s手机来说,电池电量为1715mah,正常使用来说能够满足正常使用一天多一点;不过现在市面上的很多其他android手机,电量是iphone6s的两倍,正常使用时也只能用一天。这个例子说明了在嵌入式开发中,有很多软硬件供选择,并不是几个一成不变的芯片。而且各种芯片各有优势,只有经验丰富的开发者才能将硬件与软件有机结合,使其发挥出最大潜能。1.3.2 嵌入式系统发展历史早在几十年前,个人pc和嵌入式计算机都已经走上了不同的两条道路。pc一般要求的是要有强大的计算能力,处理速度尽可能提升,磁盘存储容量尽可能扩大等;而嵌入式系统技术则要求尽量使设备智能化,完成对设备的智能化控制,最好使嵌入式性能、控制能力与控制的可靠性得到很好的保障。1、 初期嵌入式在最初阶段,为了满足一些小型智能化电子设备的开发。一些厂家在某一个芯片上同时集成了cpu、内存、rom、定时器、i/o接口等。目的是降低开发产品的难度。这个时期的嵌入式系统只能完成一些基本的、简单的控制运算。基本没有在上面运行操作系统的概念。2、 中期在小型智能化电子产品迅速占领市场后,生成芯片的厂家发现这是目前市场形势的重要的商机。于是在处理器上大花功夫,不断升级单片微型计算机(scm)的运算能力。其中一个重要的突破点就是cpu主频和访问总线的宽度的提升。于是在这个时候为了更好的给加强了的单片机命名,出现了微控制器(mcu)这一革命性的名称。这一时代的嵌入式处理器经历从8位到32位的变化。其主要应用领域还是控制方面,某些高运算的mcu还可以运行操作系统。比如8051可以运行小型的rtx51实时操作系统。3、现在在前面两个时期中的处理器有时候统称为单片机。随着科学制造技术和超大规模集成电路的成熟,soc(system on chip)即片上系统已经得到了普及。这一时期的处理器主要特点总结如下:1) 实现复杂系统的vlsi;2) 采用超深亚微米工艺技术;3) 芯片可编程;4) 主要采用三方ip设计。5) 集成mmu,以允许大型操作系统。由上面可以看出,能称之为soc的确实包含了一个完整的计算机硬件系统。对于本文使用的socs3c2440芯片而言,他内部集成了mmu和诸多外设控制器。因此可以在上面直接运行linux操作系统,并且按照需求实现嵌入式应用。伴随嵌入式处理器处理速度越来越高,各种电子技术在嵌入式系统的集成和成熟。使得很多计算机专业人员迈入嵌入式系统开发的大门。在嵌入式设备上移植了操作系统后,基于操作系统,以网络、通信为主的“非嵌入式底层”应用软件的开发以及与pc机上普通软件的开发没有多少差别。实际上,许许多多的嵌入式应用程序都是在pc上开发并验证,最后才移植到嵌入式设备的。1.4 本文研究内容的重要性在视频监控系统中,图像的自动识别跟踪,以及在识别到物体后报警不仅可以替代监控人员的部分工作,也能提高检测系统的自动化水平,在一定程度上也能减少由于人的自身因素所带来的错误,提高监控存储的效率。移动物体检测技术,在平时监视人员可以不必理会监控图像,当系统检测到有非法物体后发出警报来通知监控人员。本系统的实现意味着监控人员有更多的休息时间,因此可以更好、更清楚的判断异常情况的发生。存储所有监控视频资料对于某些只需要记录运动状况的环境、或者物体来说,记录大多数没有运动的图像数据是完全没有必要的,同时还占用了大量的存储空间,从而失去了存储的意义。因此,移动物体监控系统的设计、研究、开发对于数字监控领域来说有较为强大的使用价值。1.5 系统总体设计方案由前面小结知道,目前的嵌入式系统开发以及在很大程度上降低了难度,许多成熟的核心部件以及由各行各业的专家开发完成。就连处理器制造商也是在拿到其他公司的ip后才开始开发的。因此,本文所设计开发的系统产品完全是站在巨人的肩膀上完成的。在有了前人的经验和成果的基础上再来开发我们的产品,相对而言就要简单得多。所以由此不难设计出本系统的整体框架。对于移动物体监控系统,就其主要功能而言是比较简单的:系统从摄像头采集数据,由s3c2440主控芯片负责对收到的数据进行处理以识别出移动的物体,当识别出物体后保存含有该物体的图片,并且将抓拍到的所有图片录制成一个视频文件。然后通过内置的web服务器供外部监控人员查看。整体系统框图如下图所示:图11系统整体框图其中主要包括负责图像采集的摄像头,在收到数据后负责由移植在s3c2440内部的web服务器处理数据。终端(显示器)通过登录web服务器查看监控图像,当系统检测到有移动的物体后再由报警设备(喇叭)发出警报。1.6 本文主要内容及组织方式本文旨在设计开发一个基于嵌入式arm linux系统的用于视频监控领域的一个移动物体监控系统,对于由摄像头传来的连续图像序列进行自动识别、自动检测运动物体。其主要内容在于开发整个移动物体检测系统,包含如下内容:1、 搭建嵌入式系统开发环境。要想开发嵌入式产品,开发环境必不可少,开发环境的搭建使得我们对嵌入式系统开发有了一个较为新的起点。2、 基础软件搭建。对于一个操作系统来说,bios、系统内核、文件系统是最基本的模块。对应于嵌入式系统开发中为bootloader、kernel、filesystem的编译与移植。3、 本系统除了需要用到嵌入式处理器的片上资源外,还需要用到摄像头、lcd等外设,因此对这些设备的linux驱动程序开发必不可少。4、 对连续视频图像中移动物体的检测的关键技术进行了讨论,并对各个算法进行深入分析与比较,然后实现适合本系统的算法。5、 测试整个系统运行的运行情况。一旦检测到移动物体,系统会对移动的物体进行抓拍,并记录下一系列图片和视频,方便之后查看。本文的结构安排如下:第1章为绪论。对视频监控的总体概述以及视频监控和移动物体检测技术的意义分析,发展状况等。同时对嵌入式系统开发作了一个简单介绍。第章主要内容为搭建开发嵌入式系统的pc环境。第章开始讲会从裸板开始一步一步移植bootloader,linuxkernel以及制作rootfilesystem等。为实现最终系统打下基础。第4章对本系统所涉及到的硬件部分编写驱动程序,因为采用linux操作系统,因此要按照linux设备驱动的编写方法进行驱动程序的开发。第5章分析各个移动物体检测算法的优缺点,并选取适合本系统的算法实现移动物体检测系统主程序的移植。第6章web服务器。在系统里移植一个web服务器,监控人员通过登入开发板可以查看抓拍下来的图像以及视频。第7章系统整合和测试。系统开发完成后,要对整个系统进行调试,修正由前面工作所带来的各种问题,以及优化整个系统。第8章对整个系统开发进行总结。同时提出进一步的研究设想。1.7 本章小结本章对视频监控以及移动物体监控技术的概念进行了详细阐述,对本文将要设计实现的系统做了一个简单的设想。同时阐述了该系统对社会的影响,以及对未来视频监控技术的展望。本章的最后,给出了本系统的主要框图,以及在本文我们实现的系统需要做的工作等。第2章 宿主机平台搭建嵌入式系统的开发阶段中只有最后一个“下载程序到目标板中运行测试”这个步骤需要使用到开发板。其他包括程序的编写,编译,语法改错等相关步骤全部是在pc上完成的。这种开发模式也叫“cross compile”,因此在开发嵌入式应用时,有必要介绍嵌入式开发在pc上的环境搭建。2.1 系统开发环境搭建在嵌入式开发领域中,开发环境的搭建对整个嵌入式系统开发起着至关重要的作用。因为涉及到移植arm-linux操作系统,那么对于熟悉在windows下各种操作的开发人员来说有较高难度。在实际的嵌入式开发中,往往由许多人共同使用一台linux服务器,通过samba或者ftp服务上传程序文件,然后通过远程登录工具登录到linux系统进行系统程序的编译工作。而对于本次系统开发,只能使用自己的笔记本电脑进行开发,所以在虚拟机中安装linux操作系统和安装交叉编译环境成了本次开发嵌入式系统的第一个步骤。2.1.1 硬件环境构建对我们本次嵌入式系统开发,硬件环境主要包含两部分,第一就是对宿主机的硬件要求;第二就是对本系统的硬件系统搭建。1、宿主机。本次开发是利用在windows环境下安装的vmware软件安装的linux系统作为服务器来编译所有的程序。许多公司开发了基于windows系统的代码阅读和编辑工具,因此直接在自己电脑上安装linux会造成诸多不便。因此选择用虚拟机方式来安装服务器。2、嵌入式硬件系统。本次所使用的嵌入式目标板是广州某公司的tq2440开发板。其板载资源如下:1)、存储器:64mbram、256mb的nand flash。2)、网络接口。板载dm9000网卡,用于网络连接、调试、下载驱动程序等。3)、音频接口。uda1341音频codec,本文从此来播放报警声音。4)、lcd接口。支持多种不同分辨率的tft lcd,可接vga转接板。本文实现了uboot和内核的lcd驱动,可以用于下载更新系统固件。5)、camera。引出s3c2440摄像头接口,外接cmos摄像头。本文未使用,而是使用的usb摄像头。其中还有时钟源,norflash,jtag、复位电路、电源接口、ad功能、iic总线设备等各种丰富外设。硬件环境在整个开发中的逻辑连接图如下图所示:图21硬件逻辑连接图pc与开发板的通讯方式为串口,开发板所有的输入、输出信息都都通过pc机上的串口接收和发送。在开发嵌入式系统的时候我们可能要不断调试程序和下载内核,因此实现了用tftp或者nfs协议下载程序或者内核,以此来提高开发效率。为了开发板能够直接从宿主机(pc机)中的linux系统里下载程序,在安装系统的时候网络必须采用桥接方式,以便路由器分配一个新的ip给linux服务器,这使得pc、linux、开发板三者的ip都处于同一网段,来达到各种协议互通的目的。2.1.2 软件环境构建本文将在虚拟机上安装ubuntu12.04作为嵌入式linux开发的服务器,请自行在网上下载该系统映像文件。本文在linux中主要使用3个分区:5gb的swap、10gb的root、25gb的work。本文将在work分区中配置、编译开发嵌入式系统应用。在安装好虚拟机(vmware)后,按照以下步骤进行安装linux操作:1、启动vmware,一般只需要双击在桌面上自动生成的快捷方式即可。图22启动vmware2、创建新的虚拟机:按照界面提示依次填写好所安装的linux系统版本后单击下一步,看到如下图界面:图23虚拟机处理器配置处理器数量根据自己电脑作相应选择,由于我的电脑是64位,i7四核,所以我的选择如上图所示。选择好后单击下一步;内存根据自己电脑酌情选择,我的电脑内存为8gb,所以定为2g。3、网络选择。配置完处理器和内存后,出现如下图所示的网络类型。图24网络类型选择为了方便我们后期源码的上传,和开发板对编译成功的程序下载。为了让pc、服务器、开发板的ip处于同一网段,应该把网络模式设置为桥接模式。目的是让服务器从路由器处独立获得一个ip,如图2-5所示。4、指定磁盘容量。因为swap空间5gb,root分区10gb,work分区25gb。因此分配的磁盘空间大小为40gb,如下图2-6,单击下一步,指定好磁盘文件存放的位置后就可以完成虚拟机的创建了。图25指定磁盘容量5、安装linux。虚拟机创建完成后,单击设备栏中cd/dvd(sata)选项,出现虚拟机设置界面,如下图所示,选择右方“使用iso映像文件”,然后浏览到下载的ubuntu12.04操作系统的iso文件,点击确定即可。图26虚拟机设置界面 6、单击状态栏下方的启动虚拟机按钮,则vmware就会开始安装linux系统,一直等待,直至出现如下画面,单击install ubuntu。图27安装ubuntu界面7、分区操作。单击install ubuntu后进入安装提示界面,直接点击continue;把installation type选择为something else,如下图所示:图28安装ubuntu-installation type接着在出现的对话框中单击new partition table,选择continue:图29分区操作开始选中free space,单击下方add按钮,输入swap分区的大小为5120mb,选择use as为swap area,然后单击ok则成功创建swap分区。然后根据上述操作依次创建,注意最后一个分区挂载点应该设置为“/work/”。效果如下:图210完成创建分区单击install now,提示选择对话框时选择默认选项,依次输入计算机名称,用户名,以及登录密码后,开始漫长的安装系统过程。8、重启系统,即可正常进入操作系统桌面。ubuntu操作系统默认会禁止root用户登录。为了以后开发使用方便,需要开启root用户登录。使用如下命令开启:(your user name)$ sudo passwd rootenter new unix password:retype new unix password:passwd: passwd updated successfully(your user name)$ supassword:root(your user name)#为方便,本文出现的以“#”开头的命令均在root账户下输入,具有root权限,且省略了“root(your user name)”等字符。安装完成了ubuntu后,系统可能对pc机硬件支持不太好,vm提供了一个硬件支持工具vmware tools。在将vmtools工具挂载到虚拟机上后,安装步骤如下:# mkdir /work/tools# mount /dev/cdrom /mnt/# cd /work/tools# cp /mnt/vmwaretools-10.0.1-3160059.tar.gz .# umount /mnt/# tar xzf vmwaretools-10.0.1-3160059.tar.gz# cd vmware-tools-distrib/# ./vmware-install.pl然后一路回车就可以完成vmtools的安装,安装完成后需要重新启动虚拟机。9、配置软件源。为了方便安装各种服务器,以及开发需要使用的相关软件,ubuntu提供了一个在线下载安装这些软件的工具apt-get。用户只需要在终端中敲入apt-get,加上要安装的包的名称,ubuntu机会自动在线搜索下载并完成软件的安装(路由器需要连接到互联网),非常方便。在使用apt-get工具之前需要先配置软件源。单击ubuntu的软件中心,以此单击edit-software sources,然后在弹出的对话框中单击“main server”下拉选框,单击“other”,单击“select best server”,ubuntu就会自动搜索并设置当前最好的软件源,设置完成后保存退出。图211 ubuntu配置软件源2.1.3 ubuntu中各种工具服务器的安装1、安装samba服务器。samba服务器是大型企业或者公司在文件共享方面用得最多的工具之一。使用如下命令安装:# apt-get update# apt-get install samba# apt-get install smbclient安装完了后系统会自动启动samba服务器,只需要将建立好的目录信息设置到samba的配置文件中,位于/etc/samba/目录中的smb.conf文件。本文所用的系统需要将“/work”目录共享到windows中,以便两系统之间的文件传输。修改/etc/samba/smb.conf:root comment = root directories browseable = yes path = /work/ writable = yes create mask = 0777 browseable = yes valid users = root保存退出后,使用以下命令重启:#/etc/init.d/smbd restart重新启动后在windows的资源管理其中输入ubuntu的ip地址“02root”,即可进入linux的work工作目录,并可以实现文件传输。如下图所示:图212 samba服务器2、安装nfs服务。在开发驱动程序时,需要挂载nfs文件系统。其是利用文件共享的方式挂在linux某一个目录下的文件系统,这样只需要把编译好的模块放到linux某个目录,就会同步传输到开发板的文件系统中。当开发周期结束后,再将此目录制作成适合在开发板上运行的文件系统,发布最后的产品。这样一来大大缩短了开发时间,使得开发人员有更多的时间来思考驱动上面的问题,而不是花大量时间在拷贝驱动模块上。通过执行如下命令安装nfs服务器:# apt-get install nfs-kernel-server安装好后同样会自动启动该服务,然后创建共享目录,把目录设置到nfs的配置文件中,这样一来开发板就可以直接通过nfs挂在网络根文件系统了。# mkdir p /work/filesystem/zj_fs_mini_mdev然后在配置文件“/etc/exports”中增加下面一行:/work/filesystem/zj_fs_mini_mdev *(rw,sync,no_root_squash)其中各个参数的意义请参阅相关资料。修改好配置文件后,保存,退出,然后用下面命令重启nfs服务器,以后就可以使用了。# /etc/init.d/nfs-kernel-server restart3、安装tftp服务。在uboot中,tftp主要用于从服务器上下载内核映像到开发板的ram之中。安装tftp服务的命令如下:# apt-get install tftp-hpa tftpd-hpa# mkdir /tftpboot# chmod 777 r /tftpboot/# vim /etc/default/tftpd-hpatftp_username=tftptftp_directory=/tftpboottftp_address=:69tftp_options=-l -c -s以上命令安装并配置了tftp服务,其中目录项“/tftpboot”是指通过tftp服务下载的时候在哪个文件夹中寻找要下载的文件,并赋给了此目录所有权,同时指定tftp服务端口号为69。4、安装open-ssh服务器。在工作中,直接在虚拟机中操作linux系统,会带来诸多不便,比如窗格过大,调试不便等问题。考虑到在实际工作中,只有一台linux服务器,而所有的开发人员都会通过安装在自己电脑上的远程登录工具登录到linux服务器,然后进行自己的开发。所以我们也需要配置这样的服务器:# apt-get install openssh-server等到安装完成后,ubuntu会自启ssh服务,这样我们就可以远程登录到ubuntu了。2.1.4 嵌入式交叉编译环境搭建因为在嵌入式linux开发中采用的是交叉编译的模式,所以交叉编译工具链是必不可少的。交叉编译工具在使用时跟在pc上的编译工具使用方法是一样的,只是在运行的时候由交叉编译工具编译出来的程序需要传送到嵌入式硬件平台上进行运行,在pc机上是无法运行的。安装交叉编译工具链实际上是需要通过pc机上的编译工具自行编译出来,然后再将其配置到pc机的环境变量中进行使用的。但是此过程较为复杂,而且在网络上有已经已经编译好了的工具链。所以我们只需要下载这些工具链,然后在自己的pc上解压,然后再添加环境变量就可以了。本次开发使用的编译工具为arm-linux-gcc-4.4.3.tar.gz,安装配置步骤为:# tar xzf arm-linux-gcc-4.4.3.tar.gz -c /usr/local/arm/然后修改环境变量:# vim /etc/environment在打开的文件中添加:/usr/local/arm/4.4.3/bin即可。至此交叉编译环境建立完毕,检查安装效果只需要在终端中输入如下命令:# arm-linux-gcc v最后出现:thread model: posixgcc version 4.4.3 (ctng-1.6.1)说明交叉编译工具安装成功。2.2 windows下相关工具介绍对于程序开发来说,在windows下有很多比较优秀的工具,并且也符合我们日常的使用习惯,虽然在linux下也有不少的开发工具,但可能并不适合一些初级开发人员。对于开发而言,在windows下主要有以下两个工具在本文中使用频繁。2.2.1 securecrtsecurecrt是一个专门用于远程登录的工具,支持许多种协议。本文使用它来远程登录linux服务器和登录开发板的串口控制台。其界面如下:图213 securecrt远程登录linux2.2.2 source insightsource insight是在windows系统上阅读内核代码的最方便的工具,它能够生成符号表,很容在多个函数之间任意跳转。并且对于不同的变量类型有不同的颜色显示,非常方便。基于这些功能,在windows下阅读linux内核源代码这类庞大的软件时,使用source insight有助于理清各类错综复杂的变量、函数之间的关系。当新建一个source insight工程并加入linux内核代码后,如下图所示:图214 source insight的使用2.3 对本文相关知识的说明本文旨在设计开发出一款产品,注重整个流程的进行,而对于各部分的详细知识可能不会太过深入。比如本章中出现的对各个软件的介绍,这些内容需要读者自行参阅相关资料了解并学习。限于篇幅,本文将不会对细节方面的知识作过多的讲解。2.4 本章小结本章的主要工作是搭建开发嵌入式系统应用的pc环境。包括简单介绍了linux安装,以及在linux上的各种工具软件的配置安装等。最后安装了交叉编译工具链,为之后的工作奠定了软件上的基础。第3章 基础系统环境移植在前一章中,对嵌入式开发的宿主机环境进行了介绍和搭建,当然,在实际工作中这些工作可能并不需要我们来做,我们要做的就是跟最后产品相关的部分。比如bootloader、和内核的移植、移动物体检测软件的开发等等。3.1 嵌入式操作系统的选择嵌入式操作系统主要是指具有专用性质的操作系统,与通用计算机的操作系统在许多方面都有所不同。比如通用计算机要求必须要有一台显示器,要有键盘鼠标等输入设备;而嵌入式系统是针对某特定应用而言的系统,具有比通用操作系统硬件要求更小,可裁剪,易移植等优点。同时嵌入式系统还有强调实时性能、内核精简、抢占式多任务处理、可配置、高可靠等特点。嵌入式行业发展至今市面上已经有许许多多优秀的嵌入式操作系统。目前,流行的嵌入式操作系统以及多达几十个,现在介绍部分典型嵌入式操作系统: tinyos是主要“用于无线传感器网络的操作系统1”。其是美国加州大学伯克利分校开发的开源的操作系统,属于深度轻量级操作系统。它的主要特点是“轻线程、主动消息、事件驱动和组件化编程3”。任务以先进先出方式进行调度。 vxworks4系统的性能非常优秀,它是美国wrs公司推出的一实时操作系统。但是不开源,价格贵。 windows ce是微软公司专业嵌入式设备开发的一款大型操作系统5。支持市面上许多架构的cpu,并且支持的硬件资源非常丰富,也可以根据实际需要适当裁剪以压缩系统体积。可是它的源码不完全开放(目前开放了一小部分),并且整个系统在运行起来极为耗费内存资源,整个系统太过庞大,对于硬件资源相对较少的嵌入式设备而言完全无法接受。 uc/os-ii/iii操作系统为了增强可移植行,此系统在很大程度上都用ansi c进行编写开发,现已经移植到了许多种嵌入式设备上。它开放源代码,如果仅仅为了学习它是免费的。不过它不能用于商业用途,uc/os-ii只是一个微内核,硬件驱动要由开发人员自行编写,要是要用到文件系统,也要通过自己编写代码来实现。 嵌入式linux是一个对全世界的人们都开源的操作系统(gpl协议)。它是普通linux操作系统移植到嵌入式硬件平台上的版本。开发所用到的所有开发工具也都是免费的,并且功能强大,不存在黑箱技术。现在差不多新出来的硬件linux都会率先支持。linux系统在使用的时候不需要向任何人缴纳任何费用,而且开发linux的技术人员分布于全世界,遇到什么问题几乎都能在网上免费解决,是开发的首要选择。它属于大型操作系统。linux在超级计算机、pc机、网络服务器以及嵌入式系统的各种硬件平台上都能够良好的运行,并且都有广泛的应用案例。正是因为这些诸多的优点,嵌入式linux操作系统才嵌入式开发中成了首选的操作系统。因此本文同样是利用嵌入式linux操作系统实现最终的移动物体监控系统。3.2 嵌入式系统启动流程嵌入式系统流程跟pc机的启动流程基本相差不大,只是所用软件较pc机而言变得简单了些。典型嵌入系统启动流程概括如下:(1)、在打开开发板电源后,bootloader跟pc的bios一样会对计算机本身硬件做一个检查,同时初始化单板上的一些主要硬件。(2)、bootloader将os内核映像文件从flash中复制到sdram中,并将控制权交给os(跳转到os的启动函数中开始执行)。(3)、进入到操作系统后,操作系统也会初始化一系列的硬件,然后创建操作系统需要的文件。然后进入执行用户程序的模式。在一般情况下,处理器在刚刚通电的时候,会固定转到某一个地址中去开始执行程序(指令)。比如对于s3c2440来说,复位的时候会从零地址开始执行程序。在零地址处一般存放的就是uboot。3.3 bootloader移植一般情况下,嵌入式设备中的内核映像和可执行程序拷贝到内存中才能够被执行。因为固化程序的flash相对cpu来说是独立编址的,不能够直接在flash中运行(注意:norflash可以片上执行,不过现在多数嵌入式处理器已经没有了norflash,因为其价格高、容量小),而且在ram中运行速度会加快很多。booloader的实现依赖于cpu的架构。目前市面的出现的启动应道程序在一般情况下都分成了两个部分stage1和stage2。在第一个部分中,主要代码功能是初始化cpu以及其他外围硬件,最主要的是要初始化内存。而第二个阶段的程序,一般会用高级语言编写(如c语言),这样不仅可以增强程序的可阅读性能,也能实现一些相当复杂的工作。3.3.1 bootloader的stage1基本的硬件初始化,为stage2的运行做好准备。前面我们提到,在cpu上电时运行的第一条程序是固化在flash中的某段代码被映射到ram上的。stage1的代码基本就是运行的这部分代码,因为cpu映射的代码大小有限,比如本文所用的处理器s3c2440,上点只会把nand flash的前4kb的代码映射到0地址处,那么这前4k的代码就属于bootloader的stage1部分。所以这部分代码最后还需要将剩下的bootloader代码拷贝到ram中。然后跳转带stage2的c语言入口处继续执行。3.3.2 bootloader的stage2这部分通常又被拆分成两种模式。启动模式,它的工作方式是加载固化在flash中的内核映像文件到ram,然后启动并运行内核。这种模式是在嵌入式产品呈现给用户的最终形态。另外一种模式为下载模式,它的工作方式是在初始化各种硬件后等待用户输入下载内核的指令,若用户没有任何输入将会直接进入启动模式。这种模式主要是在调试阶段下载内核使用,或者升级内核时使用。当系统出现问题

温馨提示

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

评论

0/150

提交评论