毕业设计(论文)-基于嵌入式器件的图像处理系统设计.doc_第1页
毕业设计(论文)-基于嵌入式器件的图像处理系统设计.doc_第2页
毕业设计(论文)-基于嵌入式器件的图像处理系统设计.doc_第3页
毕业设计(论文)-基于嵌入式器件的图像处理系统设计.doc_第4页
毕业设计(论文)-基于嵌入式器件的图像处理系统设计.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

工业学院毕 业 设 计设计题目:基于嵌入式器件的图像处理系统设计姓 名 学 号 院 (系) 电气与电子工程学院 专 业 电子信息科学与技术 指导教师 2012年6月1日目 录摘要IAbstractII1 绪论11.1 嵌入式系统概述11.1.1 嵌入式系统发展历程11.1.2 嵌入式系统的构成和特点21.1.3 嵌入式系统的现状和发展趋势31.2 嵌入式操作系统41.2.1 嵌入式操作系统概述41.2.2 嵌入式Linux操作系统51.3 嵌入式图像处理系统概述51.3.1 数字图像处理技术概述51.3.2嵌入式环境对于图像处理系统的要求61.3.3嵌入式图像处理系统的特点71.4 课题研究的主要内容72 系统硬件平台架构92.1 系统的总体设计92.2 系统硬件平台总体设计102.3 嵌入式系统硬件102.3.1 基于ARM处理器的S3C2410微处理器102.3.2 FLASH存储器122.3.3 串行通讯口122.3.4 USB接口122.3.5 系统电源122.3.6 触摸屏122.3.7 LCD显示模块133 软件开发平台设计143.1 嵌入式Linux操作系统平台143.2 嵌入式Linux操作系统的移植143.2.1 Linux内核源码的修改153.2.2 Linux内核的定制163.2.3 Linux内核的编译163.3 嵌入式Linux下的程序开发163.4 MiniGUI开发环境的建立173.4.1 MiniGUI概述173.4.2 MiniGUI在嵌入式Linux系统上的移植184 基于MiniGUI的应用程序开发194.1应用程序总体设计194.2 图像文件的读取194.3 图像处理程序的实现214.3.1 图像平滑214.3.2 图像锐化234.3.3 边缘检测24结束语27谢 辞28参考文献30摘要随着计算机、电子技术的快速发展,计算机已经迈入到了一个充满挑战和机遇的PC时代。人们开始越来越多的接触到一个新的概念嵌入式系统。嵌入式系统是一种具有特定功能的计算机系统,它与通信技术和网络技术相结合,极大的增强了设备的灵活性和智能性。利用嵌入式系统进行图像处理,能够很好的满足图像处理实时性与小型化的要求,已经在经济、社会各个方面都得到了广泛的应用。本文研究了一种基于嵌入式器件的图像处理系统的设计与实现方法。根据基于ARM嵌入式系统的特点,设计出了具有较强通用性的硬件平台架构,并以嵌入式Linux操作系统为平台,将其移植到基于ARM920T处理器的硬件平台上,构建了嵌入式Linux的交叉开发环境,完成了软件开发平台的搭建。在此之上,采用MiniGUl图形用户接口,设计出用户界面,实现了图像平滑,锐化,边缘检测等基本图像处理功能。本系统通过测试运行比较稳定,即能够作为基础平台研究数字图像处理领域的一些算法,也可用于更为广泛的嵌入式操作系统研究。关键词:ARM;嵌入式;Linux嵌入式系统;图像处理AbstractWith the development of the computer and electric technology, the computer has stepped into a PC era full of challenges and opportunities. More and more people has paid attentions to a new concept-Embedded System. The Embedded System is a kind of system with specific functions. When it is integrated with communication and network technology, it will greatly enhance the flexibility and intelligence of the devices. Make use of Embedded Systems for image processing, which could meet the requirements of image real-time processing and miniaturization, and it has been widely used in all kinds of aspects such as economy and society.The paper aims to study a design and implementation of the image processing based on the embedded devices. Based on the characteristics of the ARM embedded system, we designed the strong universal hardware platform architecture, and use the Embedded Linux operating system as a platform to transplant the code to hardware platform based on ARM920T processor, build the Embedded Linux cross-development environment, and complete the structure of software development platform. Top of this, use MiniGUI to design user interface, achieved the basic image processing functions of smoothing, harping, edge detection.This system has been tested running stably, which are applied not only in basic platform to research some arithmetic of digital operation, but also in research for more extensive embedded operating system. Key Words: ARM; Embedded; Linux Embedded Systems; Image processingII1 绪论1.1 嵌入式系统概述近年,随着通信技术、集成电路技术以及计算机技术的飞速发展,嵌入式技术普及程度也越来越广,在通讯、工控、医疗、电子、网络等领域都发挥着至关重要的作用。像日常经常见到的电子字典、手机、VCD/DVD/MP3播放机、数字相机、掌上电脑、数字摄像机、可视电话、机顶盒、交换机、高清电视、路由器、仪表、汽车电子、数控设备、家电控制系统、医疗仪器、安全系统、航天航空设备等等无不与嵌入式系统息息相关。随着工业控制的智能化和价格低廉的微处理器的出现,嵌入式系统将会在工业生产及日常生活中获得更广泛的应用领域及更广阔的应用前景【1】。1.1.1 嵌入式系统发展历程嵌入式系统从问世以来已经有30多年的历史,近些年来,随着通信、计算机、消费电子融合趋势越来越明显,嵌入式系统目前已经成为一个研究热点。纵观嵌入式系统的发展历程,大致经历了四个阶段。第一阶段:以单芯片为核心的可编程控制器形成的系统。这类系统具有与监测、伺服设备相配合的功能,大部分应用于一些专业性强的工业控制系统中,一般没有操作系统的支持,通过汇编语言程序对系统直接控制。这一阶段系统的主要特点是:系统结构和功能相对单一,处理效率低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简单,价格低廉,以前在国内工业领域应用较为普遍,但是已经不能适应高效的、需要大容量存储的现代化工业控制和新兴信息家电等领域的需求。第二阶段:以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。主要特点是:CPU种类繁多,通用性比较弱;系统内核小,效率高;操作系统具有一定的兼容性和扩展性;应用软件比较专业,用户界面不够友好。第三阶段:以嵌入式操作系统为标志的嵌入式系统。主要特点是:嵌入式操作系统运用于各种类型的微处理器上,兼容性好;操作系统内核小、效率高,并且具有高度的模块化和扩展性;具备文件盒目录管理、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口API,开发应用程序比较简单,嵌入式应用软件丰富。第四阶段:以互联网为标志的嵌入式系统。目前大多数嵌入式系统孤立于互联网之外,但随着互联网的发展以及互联网技术与信息家电、工业控制技术结合日益紧密,嵌入式设备与互联网的结合将代表嵌入式系统的未来。目前,很多公司在致力于M2M(机器对机器)通信技术,IBM还推出了“智慧的星球”计划,这标志嵌入式技术进入到新的层次。1.1.2 嵌入式系统的构成和特点嵌入式系统被定义为:以计算机技术为基础、以应用为中心、软件硬件可裁剪、适用于系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。 嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及上层应用软件系统等组成,它是集软件、硬件于一体的可独立工作的系统,有以下特点:1) 专用性强这是嵌入式系统的最大特点,即其所具有的目的性或针对性,每一套嵌入式系统的开发设计都有其特殊的应用场合与特定功能,同种嵌入式系统不能跨领域使用,这也是嵌入式系统与通用的计算机系统最主要的区别。2) 面向用户、面向产品、面向应用和通用计算机不同,嵌入式系统的体积、功耗、可靠性、成本、速度、电磁兼容性、处理能力等方面均受到应用要求的约束,如果独立于应用自行发展,则会失去市场。3) 高效性、高可靠性 嵌入式系统的硬件和软件都必须要求高效率地设计,力争以相同的成本实现更加强大的功能,这样才能够在具体应用的选择面前,使其具有更加强大的竞争力。4) 相对稳定性 嵌入式系统通常是和具体应用有机地结合在一起的,它的升级换代也是和具体产品同步进行,因此,嵌入式系统产品一旦进入市场,将会具有比较长的生命周期。嵌入式微处理器的发展同样也体现出了相同的稳定性,一个体系一般会存在8-10年的存活时间,一个体系结构及其相关的片上外设、库函数、开发工具、应用产品是一套复杂的知识系统,用户和半导体厂商都不会轻易地放弃某一种处理器。5) 软件要求固态化存储 由于嵌入式系统的目的性和专业性,为了提高系统可靠性和执行速度,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。6) 功耗要求严格嵌入式系统通常情况下都需要有长时间的连续工作,而在某些特殊的场合又受到供电方式的制约,低功耗则成为了有效的解决办法。7) 系统软件(OS)一般要求较高的实时性 由于嵌入式系统是为了实现特定的目的而设计的,且常常受到空间、存储、成本、带宽等很多条件的限制,因此,它必须最大限度地在硬件和软件上“量身定做”以提高效率。此外,在多任务嵌入式系统中,对重要性不相同的任务要进行统筹兼顾的合理调度以保证每个任务及时执行,单纯提高运行速度是没效率的,并且无法完成,这种任务调度只能够由优化编写的系统软件来实现,因此系统软件的实时性是基本要求。1.1.3 嵌入式系统的现状和发展趋势1) 嵌入式系统的现状近些年来微电子技术的发展迅速,处理器的增长速度也随之而加快,从而在嵌入式系统的领域里发生了翻天覆地的变化。特别是由于网络的普及,嵌入式与互联网的结合成为目前最热门的技术。现在,可以使嵌入式系统具有网络功能,并将它们与Internet或者企业的内联网连接起来。这种特性增强了嵌入式系统在许多方面的实用性。按照市场领域划分嵌入式系统,可以分为:n 机器人领域;n 控制系统和工业自动化;n 消费类电子产品;n 数据/无线通信。目前一些先进的PDA在显示屏幕上已经实现了汉字写入、短消息语音发布等功能,嵌入式系统的日用范围也日益广阔。对于企业专用解决方案,如条码扫描、物流管理、移动信息采集等,这种小型手持嵌入式系统发挥着巨大作用。在自动控制领域里,不仅可以用于自动售货机、ATM机、工业控制等专用设备,嵌入式系统还可以在与GPS、移动通信设备、娱乐相结合方面发挥着巨大作用。尽管嵌入式产品层出不穷,发展势头迅猛,但仍需要我们研究探索,比如嵌入式移动数据库。就目前的车载嵌入式产品来说,还没有实现非常完美的自动导航功能,究其原因还是数据处理没有达到要求。2) 嵌入式系统的发展趋势嵌入式系统面向特定的应用领域,根据应用的需求而定制开发,并随着数字化产品的普遍需求渗透到各行各业,嵌入式软件己经成为产品数字化改造和智能化增值的带动性且关键性的技术。在技术和市场的带动下,嵌入式系统有非常大的发展空间,其未来的发展呈以下的趋势:a) 新的处理器日益增加。一方面,设计的嵌入式操作系统自身结构更加容易移植;另一方面,系统应能使用驱动程序开发和配置环境,来造就一个新的BSP和驱动程序结构,以适应微处理器的不断升级变化。b) 开放源码之风已经波及到嵌入式操作系统厂家。许多嵌入式操作系统的厂家在出售产品时,就附加了源程序代码并且含生产版税。c) 后PC时代,有了更多的产品开始使用嵌入式操作系统,它们对实时性的要求并不是很高,如手持设备等,微软公司研发的的Win CE、Palm OS等产品就是为了顺应这些应用而开发出来的。d) 控制系统、电信设备要求有比较高的可靠性,于是对嵌入式操作系统则提出了新的要求。e) 各种通用机上所使用的新观念、新技术正在逐步地移植到嵌入式系统中,如移动代理、动态数据库等,嵌入式操作系统也出现了基于面向对象的分布式技术,如嵌入式CORSA、实时CORBA,嵌入式软件平台正逐渐形成。f) 各种嵌入式Linux操作系统也正迅猛发展,已经形成了能与Windows CE等嵌入式操作系统匹敌的局面。嵌入式Linux操作系统的迅速崛起,主要由于人们对自由软件的渴望以及嵌入式系统应用的定制性,要求提供系统源码层次上的支持,而嵌入式Linux操作系统适应了这一需求。它具有源代码开放、效率高、系统内核小、内核网络结构完整等许多特点,裁减后的系统更加适于嵌入式系统的开发。g) 嵌入式系统的网络化和多媒体化方向趋势,特别是无线网络和Internet的结合。上述变化说明嵌入式系统将进入一个非常迅速的发展时期,在不久的未来,嵌入式系统的应用将会变得越来越多样化,为用户提供更多的选择方案。它不仅只局限于传统的控制领域,更加广泛应用于工业、农业、商业、服务业、信息家电等各个行业,而且将渗透到家庭和社会的各个角落,嵌入式系统的未来将变得更加绚丽多彩。1.2 嵌入式操作系统1.2.1 嵌入式操作系统概述嵌入式操作系统,是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)非常重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、通信协议、设备驱动接口、标准化浏览器、图形界面等。嵌入式操作系统是嵌入式系统资源的管理者,在其帮助下,用户可以安全可靠、方便快捷地控制硬件及执行应用程序。嵌入式操作系统具有通用操作系统所拥有的基本特点,能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够有效管理越来越复杂的系统资源;能够提供驱动程序、库函数、应用程序以及工具集。将之与通用操作系统比较,嵌入式操作系统在硬件的相关依赖性、应用的专用性、系统实时高效性以及软件固态化等方面具有比较突出的特点。通常嵌入式操作系统可分为非实时操作系统和实时操作系统两大类。非实时操作系统是指特定操作所花费的时间以及空间的上限是不可预知的,例如Linux、多数Unix及多数Windows家族成员都是属于非实时操作系统,它们将程序分为前台程序和后台程序,前台程序是通过中断来处理突发事件,其结构一般为无限循环;后台程序则是掌管整个嵌入式系统软、硬件资源的分配、管理以及任务的调度,是一个系统管理调度程序。然而实时操作系统是指能够在指定或者确定的时间内完成系统功能和外部或内部、同步或异步时间做出响应的计算机软件系统。它的正确性不单单只是依赖系统计算的逻辑结果,还需要依赖于产生这个结果的时间。嵌入式操作系统与应用的环境密切相关,从应用范围的角度考虑,嵌入式操作系统大致上可以分为专用型的和通用型的嵌入式操作系统,比较典型的通用型的商业嵌入式操作系统有Linux,WinCE、VxWorks和嵌入式Linux,专用型的嵌入式操作系统有Palm OS等。1.2.2 嵌入式Linux操作系统嵌入式操作系统是整个嵌入式系统的核心部分,也是实现系统功能的关键所在。所以首先要选择合适的嵌入式操作系统,并且还要建立相应的软件开发环境。嵌入式操作系统的选择主要取决于目标系统所要实现的功能和性能要求,本设计选用的是嵌入式Linux操作系统,下面简单介绍其基本特点:a) 内核稳定、功能强大、支持多种硬件平台、应用软件多、兼容性好。 b) 内核可根据需要任意裁减。 c) 使用成本低。 d) 大批专业的商业公司参与,发展潜力大。在所有的操作系统中,Linux发展最快且应用也最广泛。并且因为专用操作系统是属于商用化产品,其价格昂贵,而且很多时候它们的核心源代码都是不公开的,这使得每个系统上的应用软件与其它系统都无法兼容。但是嵌入式 Linux操作系统是以Linux为基础的嵌入式作业系统,由于Linux自身的很多优势以及其所处在的嵌入式IT 产业的关键领域,嵌入式 Linux 操作系统吸引了许多开发商的目光,成为嵌入式操作系统的新宠。在激烈的市场竞争中,只拥有先进的技术是远远不够的,如何减少产品的投入也是需要重点考虑的问题。免费的Linux无疑为厂商节约了一大笔开支,对经济实力不强的公司来说非常有利,可以节省一大笔额外开支【2】。1.3 嵌入式图像处理系统概述1.3.1 数字图像处理技术概述二十一世纪我们快脚步进入了信息时代,我们每天所接受比以前多很多的信息量,同时信息在我们生活中的地位愈来愈高。文字、语言、图像这三个方面是我们获得信息的主要来源。眼睛作为人类最重要的感觉器官,大部分的信息都是通过眼睛来观察到的,其实这就是我们所说的图像信息。我们的生活中有灰色的图像信息,也有彩色的图像信息;有平面的图像信息,也有立体的图像信息;它的种类和所表现的方式是多种多样的。在许多的场合,图像通常带给我们最具体的也是最具有震撼力的信息。20世纪50年代这一时期是图像处理技术的首次兴起。1964年美国喷射推进实验室(JPL)使用计算机对太空传送回的大批量月球照片进行处理,使模糊的图片变得清晰又逼真,使之成为图像处理技术发展的重要里程碑。通过这个事件使大家清楚的看到了图像处理技术的广阔的发展前景。图像处理技术的第二次兴起于20世纪70年代初,当时图像处理技术得到了空前的发展,数字图像处理已经具有了很多鲜明的技术特点,并且已经完善为了一个学科体系。在实际的图像处理应用中,采集到的原始图像一般都不能够达到要求,由于光照、噪声、拍摄角度等因素导致图像质量差,根本无法满足应用需求。因此需要对图像进行相关的处理,以增强图像中人们所需要的或者有兴趣的信息。图像处理,其实就是对图像信息进行某些处理后,使得图像能够满足人们的需求或实际应用。图像处理技术,通常是利用计算机也可能用到其他的一些高速、大规模集成数字硬件设备,首先对图像信息进行一种转换,把由图像信息转化而来的数字信号进行某些数字运算和处理,然后让软件控制某些数字运算和处理,这样就能够提高图像的质量,就能够达到我们所要达到的预期结果,因此,图像处理技术也能够被称为计算机图像处理技术。例如对被噪声污染的图像信息进行除去噪声的处理,对获取的图像信息微弱的图像进行使图像信息增强的处理,对得到的失真的图像信息进行几何校正处理,怎样把从犯罪现场获得的图像信息提取指纹特征,怎样把数据量过大的图像进行压缩编码等,这些都是图像处理的应用。数字图像处理成为现代图像处理的主要运用方法,其具有再现性好、精度高、适用面广和灵活性大等许多优点。图像处理技术的迅猛发展已经使其成为了大家注意的焦点,目前已经成为各个学科之间学习和研究的重点对象。至今图像处理技术给人类带来了巨大的经济利益和社会效益并且推动了计算机IT业的发展,相信在不久的将来它在我们的生活中所占的比重会越来越大,同时它也能灵活的运用在社会生产方面、科学研究方面和人类生活方面,使它成为我们的好帮手。通信工程、工业检测、文字识别、医学影像、军事工业等领域大量的实际工作其实都应用到了图像处理技术,使其和这些实际应用紧密的结合起来,成为这些领域的重要组成部分。伴随着社会的继续发展,数字图像处理技术的支持也要求越来越高,为完善的图像处理系统提出了要求。1.3.2嵌入式环境对于图像处理系统的要求在嵌入式环境下运行的图像处理系统会受到一定的限制,因为嵌入式系统本身对于系统有诸多要求,例如速度、功能、处理能力、成本、可靠性、体积、功耗等方面。具体表现如下:1) 嵌入式系统的设计研发都需要针对具体的应用而言。因此,它针对的是我们现实生活中的具体应用,也就是说它的功能具有专一性。我们需要对我们预期的图像处理设计一个能与之适应的嵌入式操作系统,来满足同一图像处理系统能够满足不同环境时的不同需求。2) 在设计嵌入式系统上专用的图像处理策略和算法的时候,要让系统尽可能少的产生执行代码和使用尽可能快速运算的算法,通常同一时期的嵌入式系统硬件计算能力和速度要比通用计算机系统稍差些。3) 在设计图像处理系统的时候,应选择较为成熟而且可靠的算法和技术。毕竟成熟的算法和技术通过了实际的考验,漏洞较少,使得设计的安全性能比较高。4) 在设计图像处理系统的时候,应尽可能的减少系统运行时间以及降低系统自身的工作强度。这是因为嵌入式系统工作时的功耗相当大,而嵌入式系统在不工作时功耗却非常小。1.3.3嵌入式图像处理系统的特点随着图像处理系统的发展和技术的成熟,对图像处理的技术提出了快速、高效的要求,然而现在的计算机却还不能够完成,因此需要对普通的计算机体系结构进行改革,使它能够满足要求。搭建嵌入式系统的专用平台,采用高速处理器来提高图像处理的运行速度,或者使用多处理器,来大幅提高图像运行速度,即可满足图像处理任务的实时性要求;在编写应用程序和嵌入式操作系统时,通常采用高效率的高级语言,来保证整个系统的实时性和稳定性;为了提高外部图像输入输出数据的稳定性以及中央计算单元的交换速度,需要设计出专门的总线结构和外部图像输入输出设备等;对待任何不同种类的待处理图像,需要针对具体待处理图像的独特特点去设计出专一高效的图像处理的算法;为了实现图像匹配等智能化的模式识别技术,通常需要建立基础的图像数据库;对图像处理的图形用户界面进行开发,开发完成后的系统将具备运行简单易用、速度高、功能强大等特点。1.4 课题研究的主要内容本论文阐述了嵌入式系统以及图像处理技术的发展现状,针对目前经济、社会发展对图像处理系统的新要求,提出了一种基于嵌入式器件的图像处理系统的解决方案,并进行了实现。本文以基于嵌入式系统的图像处理应用为例,系统地研究并论述了嵌入式系统软、硬件平台的设计,操作系统的定制以及应用程序的开发等多个方面的内容,并给出详细的设计思路和实现方法。本论文所要做的具体工作是:1) 为了应对日益复杂和广泛的图像处理应用需求,本文提出了一种基于嵌入式器件的图像处理系统的设计方案。2) 完成系统硬件平台架构的设计。针对系统所需的具体功能对飞凌嵌入式技术有限公司(原慧通科技)开发的TE2410开发板进行选取和裁剪,设计出满足系统要求的精简嵌入式硬件平台。3) 根据特定的硬件平台和目标需求,进行了软件开发平台的设计。建立了Linux交叉编译环境,完成了ARM Linux嵌入式操作系统的移植。4) 完成了MiniGUI的交叉编译和MiniGUI资源的拷贝,并进行了图像处理应用程序的开发,建立了数字图像处理图形界面,并实现平滑、锐化、和边缘检测的图像处理功能。5) 在理论研究和实验的基础上对图像处理系统的各个功能模块进行优化,对图像处理算法进行整合,从而设计出一个性能优良、结构精简的嵌入式图像处理系统。282 系统硬件平台架构2.1 系统的总体设计本文设计的基于嵌入式器件的图像处理系统主要由硬件平台、软件开发环境和实现图像处理功能的应用软件三个部分组成,其组织结构如下图所示:应用软件图像处理算法图形用户接口文件系统软件开发平台嵌入式操作系统内核底层驱动模块SDRAMUSB接口基于ARM架构32位处理器S3C2410硬件平台架构存储器串行通行口LCD显示图2.1 嵌入式图像处理系统的组成结构图硬件平台主要采用飞凌嵌入式技术有限公司(原慧通科技)开发的TE2410开发板。硬件平台包括嵌入式处理器S3C2410、SDRAM、存储器、串行通信口、USB接口、LCD显示屏等,为图像处理提供存储器支持、计算支持和显示支持。嵌入式操作系统为底层硬件提供驱动支持、内存管理、任务管理、中断管理以及图像处理任务管理等。系统启动后,首先通过引导程序启动操作系统完成硬件的初始化,接着通过操作系统提供的任务管理模块分配内存,来读取需要处理的图像信息,并显示到LCD显示器上,实现图像的实时显示,最后通过图像处理算法将缓存区中的图像进行编码、图像处理以及存储。应用软件是针对目标需求编写的专用程序,用于实现图像处理功能。【3-6】2.2 系统硬件平台总体设计系统的基础是硬件平台,其性能好坏直接决定着整个系统的性能。考虑到目前嵌入式系统开发板性能良好、技术成熟、价格便宜,本设计最终选用了飞凌嵌入式技术有限公司(原慧通科技)开发的TE2410开发板。TE2410开发板是基于三星公司的ARM9处理器S3C2410的嵌入式平台,采用6层板设计,性能稳定可靠并且具有低功耗、体积小、接口丰富等众多优点。下面对本系统硬件平台作进一步研究。本硬件平台总体结构框图如下图所示。系统中,图像文件从USB接口读取,LCD用于显示图像,Flash存储器用于固化操作系统、图形用户界面和图像处理算法等程序,SDRAM用于系统程序和用户程序的运行,RS 232用于Linux宿主机开发,SD卡用于存储图像。Flash存储器LCD显示器S3C2410处理器触摸屏SDRAMRS232接口电源SD卡图2.2 嵌入式图像处理系统的硬件平台结构图2.3 嵌入式系统硬件2.3.1 基于ARM处理器的S3C2410微处理器本次设计使用的硬件平台是由飞凌嵌入式技术有限公司(原慧通科技)开发的TE2410开发板,它的中央处理器是基于三星公司生产的的S3C2410微处理器。S3C2410是一款基于ARM920T内核的16/32位RISC嵌入式微处理器,内部带有全性能的MMU(存储管理单元),主要面向手持式设备和高性价比、低功耗的应用。ARM920T内核由ARM9TDMI、高速缓存和存储管理单元三部分组成。其中,存储管理单元管理虚拟内存,高速缓存由独立的16KB高速地址Cache和16KB高速数据Cache组成。另外,ARM920T有两个内部协处理器,为CPl4和CPl5,其中CPl4用于调试控制,CPl5用于测试控制和存储系统控制。整个ARM920T内部结构框图如下图所示。16KB指令Cache指令MMUAMBA总线RAM9TDMI内核(内嵌ICE)CP15写缓存16KB指令Cache数据MMU图2.3 ARM920T内部结构框图S3C2410微处理器功能强大并且内部具有丰富的集成资源,主要有4通道的DMA、SDRAM控制器、4个具有PWM功能的定时计数器、1个LCD控制器(支持STN和TFT带有触摸屏的液晶显示屏)、117位通用I/O和24位外部中断源、8通道的10位ADC、4通道的URAT。在接口方面,S3C2410还具有IIS总线接口、触摸屏接口、1个USB从机接口、2个USB主机接口、SD接口、2个SPI接口和MMC卡接口之类等的丰富接口。S3C2410X内部集成了一个具有日历功能的RTC和具有PLL(MPLL和UPLL)的芯片时钟发生器。MPLL能产生频率高达203MHz的主时钟来供处理器工作。S3C2410分为8组进行管理存储空间,每个组的大小是128MB,共1GB。Bank0Bank5起始地址均为固定,用于ROM或SRAM;Bank6和Bank7大小一样且可编程,同样主要用于ROM或SDRAM。S3C2410X支持从NAND Flash启动,NAND Flash较NOR Flash具有价格低、容量大等许多优点。系统采用NAND Flash与SDRAM组合,可获得很高的性价比。S3C2410X支持三种启动方式,可通过OM1:0管脚进行选择:OM1:0=00,处理器从NAND Flash启动OM1:0=01,处理器从16位宽的ROM启动OM1:01=10,处理器从32位宽的ROM启动我们将引导代码和操作系统镜像存放在外部NAND Flash中,并从NAND Flash启动。在处理器位于该模式复位时,内置NAND Flash将访问控制接口,并引导代码自动加载到内部SRAM (此时,SRAM定位于起始地址空间0x00000000,容量4KB)并运行。之后,SRAM中的引导程序将操作系统镜像加载到SDRAM中,操作系统便能在SDRAM中运行。启动完毕后,4KB启动SRAM就能够用在其他地方。如果从其他方式启动,启动ROM定位于内存的起始地址空间0x00000000,处理器直接在ROM上运行启动程序,而4KB启动SRAM被定位于内存地址的0x40000000处。2.3.2 FLASH存储器在嵌入式操作系统中,FLASH存储器是主要的存储单元,嵌入式系统里所用到的软件系统,如嵌入式Linux内核、Bootloader、图形应用程序、RAMDISK压缩映像以及户程序全部是存放在系统的64MB NANDFLASH存储器里的。FLASH存储器的数据宽度为32位,启动时映射到S3C2410的ROM BANKO里。2.3.3 串行通讯口串行通讯口是嵌入式操作系统中必不可少的组成部分,是嵌入式系统和上位机联系的不可或缺的接口,嵌入式操作系统通过Linux里的Minicom或者Windows中的超级终端,在设置了正确的波特率和通讯方式之后,可实现实时的通讯调试。在底层板中通过2片MAX3232芯片控制2个UART(Universal Asynchrono eceiver/Transmitter)接口,完成与PC的联机。2.3.4 USB接口USB接口主要分为主、从USB接口,即USB DEVICE和USB HOST,系统中共提供了两路USB接口。CN7位为DEVICE,CN6位为HOST。2.3.5 系统电源S3C2410系统内核采用18V供电,外围采用33V供电。因此开发板有外部电源提供5V电源,经芯片可为外设提供25A电流,保证用户扩展的需要。而RTC(实时时钟)考虑到开发板断电后继续工作,故采用锂电单独供电,就可实现对整个嵌入式系统的供电要求。2.3.6 触摸屏触摸屏是整套系统中必不可少的组成部分,现在常见的触摸屏主要有四项电阻式触摸屏、四项电容式触摸屏、红外触摸屏和表面声波触摸屏。以下主要介绍本嵌入式系统中所应用到的四项电阻式触摸屏。四项电阻式触摸屏的工作部分一般由两部分组成:两层透明的阻性导体层和两层导体之间的隔离层电极。触摸屏工作时,上下导体层相当于电阻网络,当某一层电极加上电压时,会在该网络上形成电压梯度。如果有外力使得上下两层在某一点接触,则在电极未加电压的另一层可以测得出该点处的电压,从而知道接触点处的坐标。例如,在顶层的电极(X+,X-)上加上电压,则在顶层导体层上形成电压梯度,当有外力使得上下两层在某一点接触,在底层就可以测得接触点处的电压,再根据该电压切换到底层电极(Y+,Y-)上,并在底层测量接触点处的电压,从而知道Y坐标。试验箱的触摸屏采用标准触摸屏以及模拟信号输入,使用MC9328MXI芯片的ASP模块(Analog Signal Processor)提供的专用于触摸屏输入的4路9位数模转换(ADC)结构,触摸屏置于Sharp LCD之上,另有2路9位A/D用于测量电池电压。触摸屏的驱动方式是采用ASP字符设备模式进行驱动的,ASP驱动是一个字符设备的驱动,以下是ASP驱动的具体方法:struct file_operations ts_fops 2open:asp_open,release:asp_release,read:asp_read,poll:aspA0011ioctl:asp_ioetl,;2.3.7 LCD显示模块良好的人机界面在嵌入式系统中非常重要,因此系统中LCD是必须的,系统选用320*240*16bit的TFT真彩液晶。2410芯片引出的LCD数据线VD0VDl5、同步信号线和时钟线经过缓冲器74HC245驱动后接入液晶,74HC245供电电压与LCD供电电压相同。S3C2410内部集成液晶控制器。只要设置好相应的寄存器,便能够产生正确时序来控制液晶【7,8】。3 软件开发平台设计3.1 嵌入式Linux操作系统平台嵌入式Linux项目开发前,需要搭建一套基于Linux操作系统的应用开发环境,该环境一般由宿主机和开发板构成。开发板主要用于运行系统的应用软件以及操作系统,其用到的应用程序的开发和调试、操作系统内核的编译需要在宿主机上完成。从软件的角度看嵌入式Linux系统,通常可以分为四个层次,引导程序Bootloader、Linux内核、根文件系统及应用程序开发,其结构如下图所示。应用程序开发根文件系统Linux内核引导程序Bootloader图3.1 软件分层结构图对于嵌入式系统软件平台的开发中这四个方面的研发是相互独立的,但它们又是相辅相成,不可分割的。嵌入式系统是通过引导程序进行启动,引导程序则是在硬件系统上执行的第一段代码。嵌入式系统启动的主要方式是Bootloader引导程序。首先,是Bootloader引导程序引导嵌入式系统进行启动程,Bootloader引导程序在开发板板上要分两部分进行启动,最先执行第一段代码的启动,然后再进行第二段代码的启动。在台式机的常规系统中,通常将引导程序装入到主引导记录,或者装入Linux驻留的磁盘的第一个扇区。并且在台式机或者其它系统上,BIOS会将控制交给引导程序;一旦引导程序安装到开发板的闪存,将开始进行所有的初始化工作,接收来自主机的文件系统和内核;装入内核后,引导程序就将控制转交给内核;引导程序将Linux内核引导起来以后,内核会依据引导程序的命令行参数对文件系统进行挂接动态的装载驱动模块,执行Linux初始化程序,最后启动图形引擎,进入到图形界面下的Linux操作模式【10】。3.2 嵌入式Linux操作系统的移植Linux移植,就是把Linux操作系统针对具体的目标平台做必要改写,然后安装在该目标平台使它运行起来。具体内容是:先获取某一版本的Linux内核源码,根据开发的具体目标平台对源码进行修改体系结构相关部分的改写,然后添加一些外设的驱动,设计一款适合于目标平台的新操作系统(该过程属于内核的定制),针对目标平台对该系统进行交叉编译,生成一个内核镜像文件,最后通过一些手段把该镜像文件烧写到我们目标平台中。若对Linux源码进行改写,工作难度是比较大的,它不仅要求对Linux内核的结构非常熟悉,还要求对目标平台的硬件结构非常熟悉,但是这些工作一般由目标平台的提供商来完成。例如我们使用的ARM平台,它的这些工作就是由英国ARM公司来完成的,我们所要做的就是从其网站上下载相关版本Linux内核的补丁(Patch)。把它写到Linux内核上,再进行交叉编译就完成了。下面以Linux2.4.18为例来阐述其基本过程,如下:1) 从ftp:.uk上下载Linux2.4.18内核及其关于ARM平台的补丁(如:Patch.2.4.1 8-rmkl.gz);2) 给Linux2.6.0打补丁:zcat./patch-2.4.18-rmkl.gz patch-pl3) 准备交叉编译环境。这里我们用到的是gcc编译器;4) 修改内核目录下的Makefile文件,主要运行以下命令:将ARCH:=$(shell Llname-m sed-e s/i.86/i386/.e s/sun4u/sparc64/.es/arm.*/arm/.e s/sal 10/arm/)这一行注释掉;“ARCH:=”改为“ARCH:=arm” ;“CROSSCOMPILE:=”改为“CROSS COMPILE=当前交叉编译工具中firm-linux所在目录” ;5) 此后就可以进行内核的定制及编译;6) 依次烧写Bootloader、内核、根文件系统,最终完成整个移植过程。由以上的内容可知,其中内核的编译和修改是重要的部分,以下着重对此进行介绍。3.2.1 Linux内核源码的修改Linux内核分为体系结构相关和无关部分。在Linux启动的第一阶段,在arch目录下的内核与体系结构相关部分将会首先执行,随即完成硬件寄存器设置、内存映像等初始化工作。然后把控制权转交给内核中与系统结构无关的部分。而我们在移植工作中要改动的代码,主要集中在与体系结构相关的部分。在内核的arch目录中我们可以看到用许多用芯片命名进行命名的子目录,它们表示是针对该芯片体系结构的代码集合。在ARM子目录下的boot目录有一个init.S的文件(其中.S表示它是汇编语言文件并且这里init.S是用ARM汇编写成的)。其实init.S就是在ARM平台上引导Linux内核启动的初始化代码。这里头定义了一个全局的默认起始地址符号start,同时它也是作为整体内核二进制镜像的起始标志。Init.S主要完成以下几项功能:1) 定义代码段、数据段、bbs(未初始化数据段)起始地址变量并对bbs段进行初始化;2) 设置寄存器来初始化系统硬件;3) 初始化LCD显示;4) 跳转到内核起始函数start kernel继续执行;5) 对主寄存器的修改。6) 关闭中断;7) 将数据段数据复制到内存;之后代码会进入到entry.S继续执行,并且继续完成对中断向量表配置等一系列动作。此外,还有一些文件需要修改,例如arch目录下的Makefile文件、config、in文件以及arch/arm/boot目录下的Makefile等等。3.2.2 Linux内核的定制Linux内核的定制运行有三种,如下:1) makeconfig:进入命令行的模式,于是便可以一行一行地进行配置。2) make menuconfig:进入menuconfig菜单模式。3) make xeonfig:进入图形用户界面模式。随后,就是根据我们已有的硬件平台,具体选定一些配置,或者删除一些配置。3.2.3 Linux内核的编译在完成内核的定制之后,只要执行以下几条命令就可以完成内核的编译:1) make clean:该命令是在正式编译内核前对环境先进行清理,保证没有不正确的.o文件的存在。2) make dep:该命令是编译相关依赖文件。3) make zImage:该命令是最终的编译命令。4) make install:该命令是把相关文件拷贝到默认的目录。最后生成的zImage(bzImage)文件就是最终需要得到的内核的镜像文件,它与我们的硬件平台相关,都是在Makefile文件中设置的,由于我们采用的是ARM平台,所以生成的这个镜像文件位于/arch/ann/boot/zlmageT。3.3 嵌入式Linux下的程序开发 大多数的Linux软件开发都以native的方式(即本机开发、调试,本机运行的方式)进行的。该方式不适于嵌入式系统的软件开发,由于嵌入式系统的开发,通常没有足够的资源在本机运行开发工具和调试工具。嵌入式系统软件开发通常采用交叉编译调试的方式。交叉编译的调试环境建立在宿主机上,对应的开发板叫做目标板(这里就是即嵌入式S3C2410系统),两者通过串口或网线相连。嵌入式开发的第一步工作就是把一台PC机作为宿主开发机,并安装指定的操作系统(这里是安装Linux系统)。然后,在宿主机上建立交叉编译调试的开发环境。本文采用的语言是移植性很强的C语言,再利用交叉编译调试工具编译链接生成可执行代码,最后向目标平台进行移植。以下是嵌入式Linux下的交叉编译调试步骤:1)创建编译环境。在这个过程中,将设置一些环境变量,创建安装目录,安装内核源代码和头文件等;2)在宿主机上使用gedit、vi、emaes等文本编辑器编写应用程序,注意将程序存放在/arm2410目录下;3)编写Makefile文件:CC指明编译器的宏;EXEC指生成的执行文件名称的宏;OBJS指目标文件列表宏;CFLAGS指编译参数宏;LDFLAGS指连接参数宏;all指编译主入口;4)编译应用程序,在目录下运行make。5)在开发板上运行:mount-t nfS 0:/arm2410/host,用来挂接宿主机的根目录。成功之后在开发板上进行,./host目录便会

温馨提示

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

评论

0/150

提交评论