linux+at91rm9200嵌入式系统设计开发   毕业设计_第1页
linux+at91rm9200嵌入式系统设计开发   毕业设计_第2页
linux+at91rm9200嵌入式系统设计开发   毕业设计_第3页
linux+at91rm9200嵌入式系统设计开发   毕业设计_第4页
linux+at91rm9200嵌入式系统设计开发   毕业设计_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

I目录错误错误错误错误未定义书签未定义书签未定义书签未定义书签。错误错误错误错误未定义书签未定义书签未定义书签未定义书签。1嵌入式系统基础311嵌入式系统概述312嵌入式系统组成3121嵌入式处理器3122外围设备4123嵌入式操作系统4124应用软件413嵌入式系统特点514嵌入式系统发展前景515嵌入式操作系统概述6151操作系统的概念和分类6152嵌入式操作系统的特点8153常见的嵌入式操作系统816研究目标112ARM920T硬件平台设计1221ARM体系结构1222AT91RM9200微处理器简介13221ARM920T处理器的特点14222AT91RM9200微处理器的特点1523嵌入式系统平台的硬件设计163嵌入式LINUX系统平台的构建1831建立嵌入式LINUX交叉编译环境1932引导转载程序的移植20321引导装载程序简介20322AT91RM9200芯片的引导机制20323第一级引导ROMBOOT的分析21324UBOOT移植与分析2333剪裁、配置和编译内核324LINUX系统设备驱动程序概述3941LINUX设备驱动程序分类3942编写驱动程序的一些基本概念3943LINUX系统网络设备驱动程序405文件系统的建立4451各种文件系统的简介4452CRAMFS文件系统4453JFFS2文件系统4554RAMDISK文件系统466ARMLINUX中断处理分析47II61ARMLINUX底层中断处理程序47611ARM处理器模式与异常处理47612ARMLINUX中断处理向量4862ARMLINUX高层中断处理程序4863ARMLINUX中断处理的实时性分析49631禁用和使能中断49632ARMLINUX中断处理的特性506321ARMLINUX的中断延迟506322系统负载对ARMLINUX中断处理实时性的影响5164分析结论517总结与展望5271项目成果与工作总结5272后续工作展望54错误错误错误错误未定义书签未定义书签未定义书签未定义书签。错误错误错误错误未定义书签未定义书签未定义书签未定义书签。错误错误错误错误未定义书签未定义书签未定义书签未定义书签。错误错误错误错误未定义书签未定义书签未定义书签未定义书签。错误错误错误错误未定义书签未定义书签未定义书签未定义书签。31嵌入式系统基础11嵌入式系统概述随着电子技术的快速发展,特别是大规模集成电路的产生而出现的微型机,使现代科学研究得到了质的飞跃,而嵌入式微控制器技术的出现则给现代工业控制领域带来了一次新的技术革命。由嵌入式微控制器组成的系统,最明显的优势就是可以嵌入到任何微型或小型仪器、设备中。嵌入式系统被定义为以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统1。嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统是以嵌入式计算机为技术核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统2。和通用计算机不同,嵌入式系统是针对具体应用的专用系统,目的就是要把一切变得更简单、更方便、更普遍、更适用;它的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能123。12嵌入式系统组成嵌入式系统通常由嵌入式处理器、外围设备、嵌入式操作系统和应用软件等极大部分组成。121嵌入式处理器嵌入式处理器是嵌入式系统的核心部件。嵌入式处理器与通用处理器的最大不同在于其大多工作在为特定用户群设计的系统中。它通常把通用计算机的许多由板卡完成的功能集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,并具有高效率、高可靠性等特点。嵌入式系统主要应用领域有工业控制、POS机、网络设备、图像处理、手机、PDA等。目前主要使用ARM、MIPS、POWERPC、DSP等1632位处理器,以32位为主。各种4类型的处理器都有其一定的应用针对性。例如,DSP对数字信号处理技术中用到常用运算、算法作了优化设计,主要用于运算量较大的实时信号处理领域,如实时音频、视频处理,电机控制等。MIPS处理器性能好,但功耗大,适合于固定应用,如固定的网络设备、机顶盒等。ARM处理器性能高、功耗低,适合于电池便携、手持设备。由于其高性能低功耗的特点,ARM处理器已经成为32位处理器的主力产品。本文将介绍ATMEL公司的AT91RM9200,这款基于ARM920T的外设丰富的、功能强大的、非常适合工控领域的微处理器,并在该处理器上进行的嵌入式LINUX的开发111213。122外围设备外围设备是指在一个嵌入式系统中,除了嵌入式处理器以外,用于完成存储、通讯、显示等辅助功能的其他部件。根据外围设备的功能可以分为如下3类存储设备静态易失性存储设备(RAM)、动态存储设备(DRAM)和非易失存储器(FLASH)。其中,FLASH可以擦写次数多、存储速度快、容量大价格低等特点,在嵌入式系统中得到广泛的应用。通讯接口设备应用广泛的包括并口,串口,SPI串行外围设备,I2C总线接口、USB接口和以太网接口等等。人机交换设备LCD、键盘和触摸屏等。123嵌入式操作系统在大型的嵌入式应用系统中,为了使嵌入式开发更为方便、快捷,需要具备一种稳定完全的软件模块集合,用以管理存储设备、中断处理、任务间通讯和定时器响应,以及提供多任务处理器等,即嵌入式操作系统。嵌入式系统的引入大大提高了嵌入式系统的功能,方便了应用软件设计,但同时占用了嵌入式系统的宝贵资源。一般在比较大型或者需要多任务的应用场合,才考虑嵌入式操作系统141516。124应用软件嵌入式应用软件是针对特定的实际专业领域,基于相应的嵌入式硬件平台,并能完成用户任务的计算机软件。由于嵌入式系统自身的特点要求嵌入式应用软5件有高可靠性,高代码密度,高度优化等特点,以适应嵌入式系统的实时性和成本敏感的特性要求,另外嵌入式应用软件需要在特定的编译环境下编译。13嵌入式系统特点由于嵌入式系统是应用于特定的环境下,面对专业领域的应用系统,所以与通用计算机的多样化和适用性不同。它与通用计算机系统相比具有如下特点嵌入式系统通常是面向特定应用的。嵌入式系统是将先进的计算机技术、半导体工艺、电子技术和通信网络技术与各个领域的具体应用相结合的产物。这一特点决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统的硬件软件都必须高效率的设计,在保证稳定、安全、可靠的基础上量体裁衣,去除冗余,力争在同样的硅片面积上实现更高的性能。这样,才能最大限度的降低应用成本。在具体的应用中,对处理器的选择决定了其市场竞争力。嵌入式系统常常有低功耗的要求。可靠性和稳定性对与嵌入式系统有着特别重要的意义。嵌入式系统本身不具有自举开发能力。既使设计完成后,用户也通常不能对其中的程序进行修改,必须有一套交叉开发工具和环境才能开发。嵌入式系统有时要求实时性较高,特别是对于特定的应用。嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体用于相结合才会具有生命力,才会更具有优势。嵌入式系统必须根据应用要求对软硬件进行裁减,满足应用系统的功能、可靠性、成本、体积等要求。14嵌入式系统发展前景后PC时代是一个真实的阶段,而且是一个可以预测的时代。嵌入式系统就是与这一时代紧密相关的产物,它将拉近人与计算机的距离,形一个人机和谐的工作与生活环境。从某一个角度来看,嵌入式系统可应用于人类工作与生活的各个领域,具有极其广阔的应用前景。嵌入式系统在传统的工业控制和商业管理领域已经具有广泛的应用空间,如智能工控设备、POS/ATM机、IC卡等;在家庭领域更具有广泛的应用潜力,如机顶盒、数字电视、WEBTV、网络冰箱、网络空调等众多消费类和医疗保健类6电子设备等;此外还有在媒体手机、袖珍电脑、掌上电脑、车载导航器等方面应用,将极大地推动嵌入式技术深入到生活和工作的方方面面8410。它在娱乐、军事方面的应用潜力也是巨大的,而且是有目共睹的。15嵌入式操作系统概述早期的嵌入式系统很多都不采用操作系统,它们只是为了实现某个控制功能,使用一个简单的循环控制对外界的控制请求进行处理。当应用系统越来越复杂、应用的范围愈来愈广泛的时候,每添加一项新的功能,就能需要从头开始设计,所以没有操作系统已经是一个最大的缺点。嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括软、硬件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通讯协议、图形界面等。嵌入式操作系统既有通用操作系统的基本特点,如能够有效的管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统的系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、调度、控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能353840。151操作系统的概念和分类操作系统OS(OPERATIONSYSTEM)是一组计算机程序的组合,用来有效的控制和管理计算机的硬件和软件的资源,即合理的对资源进行调度,并为用户提供更为方便的应用接口。它为应用支持软件提供运行环境,即对程序开发者提供功能强、使用方便的开发环境111213。从资源管理的角度,操作系统主要包含如下功能处理器管理。对处理器进行分配,并对其运行进行有效的管理和控制。在多任务环境下,合理分配由任务分享的处理器,使得CPU能够满足各程序运行的需要提高处理器的利用率,并能在恰当的时候收回分配给任务的处理器。处理器的分配和运行都是以进程为基本单元进行的,因此,对处理器的管理可以归结为对进程的7管理,包括进程控制、进程同步、进程通讯、作业调度和进程调度等。存储器管理。存储器管理的主要任务是为多道程序的运行提供良好的环境,包括内存分配、内存保护、地址映射、内存扩充。例如,为每道程序分配必要的内存空间,使它们各得其所,且不致因相互重叠而失去信息;不因某个程序出现异常而破坏其他程序得运行;方便用户使用存储器;提高存储器得利用率;并能从逻辑上扩充内存等。设备管理。完成用户提出得设备请求,为用户分配I/O设备;提高CPU和I/O得利用率;提高I/O速度,方便用户使用I/O设备。设备管理包括缓存管理、设备分配、设备处理、形成虚拟逻辑设备等。文件管理。在计算机中,大量得程序和数据是以文件的形式存放的。文件管理的主要任务就是对系统文件和用户文件进行管理,方便用户使用,保证文件的安全性。文件管理包括对文件存储空间的管理、目录管理、文件的读写管理,以及文件的共享与保护等。用户接口。用户与操作系统的接口是用户能够方便的使用操作系统的关键。用户通常只需以命令形式、系统调用(即程序接口)形式与系统打交道。图形用户接口(GUI),可以将文字图形和图像集成在一起,用非常容易识别的图标将系统的各种功能、各种应用程序和文件直观的表示出来,用户可以通过鼠标来取得操作系统的服务。操作系统的分类,按程序进行调度的方法,可以将计算机操作系统分为以下几种类型顺序执行系统。即系统内只有一个运行程序。它独占CPU时间,按语句顺序执行该程序,直至执行完毕,另一个程序才能启动运行。DOS就是这种操作系统。分时操作系统。系统内同时可有多道程序运行。所谓同时,只是从宏观上来看的,实际上系统把CPU时间按顺序分为若干时间片,每个时间片内执行不同的程序。这类系统支持多用户、当今广泛用于商业、金融领域。UNIX操作系统就属于这类系统。实时操作系统。系统内部同时有多道程序运行,每道程序个有不同的优先级,操作系统按事件触发使程序运行。当多个事件发生时,系统按优先级高低来确定哪道程序在此时此刻能占用CPU,以保证优先级高的事件、实时信息及时被采集。实时操作系统是操作系统的一个分支,也是最为复杂的一个分支。8152嵌入式操作系统的特点嵌入式操作系统是相对于一般的操作系统而言的,它除了具备一般操作系统最基本的功能,如任务调度、同步机制、终端处理、文件处理等外,还有如下特点141516可装卸性。具有开放性、可伸缩性的体系结构。有时需要强实时性。嵌入式操作系统的实时性一般较强,可用与各种设备控制当中。统一的接口。提供各种设备的驱动接口。操作方便、简单,提供友好的用户界面。提供强大的网络功能。支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP等协议支持,以及统一的MAC访问层接口,为各种移动计算机设备预留接口。强稳定性,若交互性。嵌入式系统一旦开始运行,就不需要用户过多的干预,这就要求负责系统管理的嵌入式操作系统具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令,向用户程序提供服务。固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。辅助存储器在嵌入式系统中很少使用,嵌入式操作系统的文件管理功能应该能够很容易的拆卸,而用各种内存文件系统。更好的硬件适应性,即良好的移植性。153常见的嵌入式操作系统国际上用于信息电器的嵌入式操作系统有40多种左右。现在,市场上非常流行的产品包括3COM公司下属子公司的PALMOS、MICROSOFT公司的WINDOWSCE、美国WINDRIVER公司的VXWORKS、开放源码的LINUX。1)PALMOSPALM是3COM公司的产品,其操作系统为PALMOS。PALMOS是一种32位的嵌入式操作系统。PALM提供了串行通讯接口和红外传输接口,利用它可以方便的与其他外部设备通信、传输数据拥有开放的OS应用程序接口,开发商可根据需要自行开发所需的应用程序。PALMOS是一套具有很强开放性的系统,现在有大约数千种转为PALMOS编写的应用程序,从程序内容上看,小到个人管理、游戏,大到行业解决方案,PALMOS9无所不包。在丰富的软件支持下,基于PALMOS的掌上电脑功能不断扩展。PALMOS是一套专门为掌上电脑开发的OS。在编写程序时,PALMOS充分考虑了掌上电脑内存相对较小的情况,因此它占有非常小的内存。由于基于PALMOS编写应用程序占用的空间也非常小,基于PALMOS的掌上电脑可以运行多种应用程序。2)WINDOWSCEWINDOWSCE时微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上电脑类的电子设备操作。它是精简的WINDOWS95。WINDOWSCE的图像用户界面相当出色。与WINDOWS95/98、WINDOWSNT不同的是,WINDOWSCE是所有源代码全部是微软自行开发的嵌入式新型操作系统,其操作界面来源于WINDOWS95/98,但是WINDOWSCE是基于WIN32API重新开发的、新型的信息设备平台。WINDOWSCE具有模块化、结构化和基于WIN32应用程序接口以及与处理器无关等特点。WINDOWSCE不仅继承了传统的WINDOWS图像界面,更有利的是可以使用类似于VISUALBASIC、VISUALC的集成开发工具(EMBEDDEDVISUALBASIC和EMBEDDEDVISUALC)在WINDOWS平台上方便快捷的开发运行于WINDOWSCE平台上的应用程序,使用同样的函数、使用同样的界面网络,使绝大多数的应用软件只需简单的修改和移植就可以在WINDOWSCE平台上继续使用。3)VXWORKSVXWORKS操作系统使美国WINDRIVER公司于1983年设计开发的一种实时操作系统。VXWORKS拥有良好的继续发展能力、高性能的内核以及友好的用户开发环境,在实时操作系统领域占据一席之地。它以良好的可靠性和卓越的实时性能被广泛的应用到通信、军事、航天等高精尖技术及实时性要求较高的领域种。在美国的F16、FA18战斗机、B2隐形轰炸机和爱国者导弹上,甚至1997年火星表面登陆的火星探测器上也使用了VXWORKS。它是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。VXWORKS支持多种处理器,如ARM、X86、MIPS、POWERPC、STRONGARM等等。大多数的VXWORKS的API是专用的。VXWORKS具有一个高性能实时微内核,其任务切换时间短、中断延迟小、网络流量大的特点使得VXWORKS的性能得到很大的提高。VXWORKS与POSIX兼容,用户在其他符合POSIX标准的系统如LINUX上运行的软件,基本上只要重新编译一下就可以移植到VXWORKS上运行。VXWORKS提供了良好的可配置能力,可配置的组建超过80个,用户可以根据自己系统的功能需求进行合理的配置。而且,VXWORKS提供了一个强大的开发10调试环境TORNADO,以方便广大嵌入式系统开发人员的开发使用。4)LINUXLINUX是一个类似UNIX的操作系统。它起源于芬兰一个名为LINUSTORVALDS的业余爱好,但是现在已经是最为流行的一款开放源代码的操作系统。LINUX从1991年问世到现在,短短十几年的时间已经发展成为一个功能强大、设计完善的操作系统,伴随网络技术进步而发展起来的LINUX已经成为微软公司WINDOWS的强劲对手。LINUX系统不仅能够运行于PC平台,还在嵌入式系统方面大放光芒,在各种嵌入式LINUX迅速发展的情况下,LINUX逐渐形成了可与WINDOWSCE等嵌入式操作系统进行抗衡的局面。目前正在开发的嵌入式系统中,49的项目选择LINUX作为嵌入式操作系统。LINUX现已成为嵌入式操作的理想选择202223。嵌入式LINUX操作系统的有点在于LINUX是源码开放的,不存在黑箱技术,遍布全球的众多LINUX爱好者都是LINUX开发者的强大技术支持者。LINUX的源代码随处可得,注释丰富,文档齐全,易于解决各种问题。LINUX的内核小,效率高。LINUX是开放源代码的操作系统,在价格上极具竞争力,适合中国国情LINUX不仅支持X86芯片,还是一个跨平台的系统,到目前为止,它可以支持3040种CPU,很多CPU厂商开始作LINUX的平台移植工作,而且移植的速度远远超过JAVA的开发环境。如果今天采用LINUX环境开发产品,那么将来更换CPU时就不会遇到更换平台的困扰。LINUX内核的结构在网络方面时非常完整的,它提供了对于包括10兆位百兆位及千兆位的以太网络,还有无线网络、TOKENRING和光纤甚至卫星的支持。LINUX在内核结构的设计中,考虑适应系统的可裁减性的要求。作为嵌入式系统核心的嵌入式操作系统时开发嵌入式应用的关键一环,在这个领域内,没有通常操作系统环境下的WINDOWS系统那样一支独秀的商品。因此,目前国内外相继推出了很多商业化嵌入式操作系统,都在努力为自己争取着嵌入式市场的份额。而LINUX凭借其价格免费、源码公开的特点在嵌入式应用中占有一席之地,由于LINUX自身的诸多优势,吸引了许多开发上的目光,已经渐渐成为了嵌入式操作系统领域的新宠。本论文将介绍在基于AT91RM9200微处理器的开发平台上,进行嵌入式LINUX的移植。1116研究目标本课题来源于北京理工大学同北京康拓工业电脑公司的合作项目“基于ARM平台的嵌入式控制系统开发”。本文主要研究ARM920T核CPU的应用与嵌入式LINUX操作系统的移植和底层驱动的开发,底层硬件采用康拓电脑公司自主开发的ARM人机界面卡。开发主机采用REDHAT90操作系统,开发平台使用GNU交叉开发环境。最终目标是实现人机界面板卡的各种功能,完成在C/OSII下的各种驱动的调用,为用户提供一个完整的应用平台。122ARM920T硬件平台设计21ARM体系结构ARM公司把ARM作为知识产权IP推向嵌入式处理器市场,目前已经占有80左右的市场。市场上出现的ARM体系结构有多种形式,既有处理器内核(如ARM9TDMI)形式,也有处理器核如(ARM9T)形式。半导体厂商或片上系统SOC设计应用厂商采用ARM体系结构,生产相应的MCU/MPU(如ATMEL公司的AT91系列)或SOC芯片。ARM即ADVANCEDRISCMACHINES的缩写。ARM公司是知识产权(IP)供应商,本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。作为32位嵌入式RISC微处理器业界的领先供应商,ARM公司商业模式的强大之处在于它在世界范围内有超过100个合作伙伴包括半导体工业的著名公司,从而保证了大量的开发工具和丰富的第三方资源,它们共同保证了基于ARM的处理器核的设计可以很快的投入市场123。ARM嵌入式处理器作为一种高端嵌入式处理器,以其高性能、低功耗的特性,广泛地应用于PDA、机顶盒、网络通信、无线产品等领域。ARM体系结构的主要特点包括1)RISC型处理器结构为减少复杂功能的指令,减少指令条件,选用使用频率最高的指令,简化处理器的结构,减少处理器的集成度,并使每一条指令都在一个机器周期内完成,以提高处理器的速度。ARM采用RISC结构,并使的一个机器周期可执行一条指令。2)THUMB指令集由于RISC型处理器的指令功能相对比较弱,ARM为了弥补此不足,在新型的ARM体系结构中定义了16位的THUMB指令集。THUMB指令集比通常的8位和16位CISC/RISC处理器具有更好的代码密度,而芯片的面积增加了6,可以使得程序存储器更小。3)多处理器状态模式ARM可以支持用户、快中断、中断、中止、系统和为定义等7种处理器模式,除了用户模式外,其余的均为特权模式。这也是ARM的特色之一,可以大大提高ARM处理器的效率。4)嵌入式在线仿真调试13ARM体系结构的处理器芯片都嵌入了在线仿真ICERT逻辑,便于通过JTAG来仿真调试ARM体系结构芯片,可以省去价格昂贵的在线仿真器。另外,在处理器核中还具有嵌入式跟踪单元ETM,用于监控内部总线,实时跟踪指令和数据的执行。5)灵活方便的接口ARM体系结构具有协处理器接口,这样,既可以使基本的ARM处理器内核尽可能的小,又可以方便的扩充各种功能。另外,ARM处理器核还具有片上总线AMBA(DVANCEDMICROCONTROLLERBUSARCHITECHTURE)。AMBA定义了3组总线AHB(ADVANCEDHIGHPERFORMANCEBUS)、ASB(ADVANCEDSYSTEMBUS)和APB(ADVANCEDPERIPHERALBUS)。通过AMBA来方便的扩充各种处理器及I/O口,这样,就可以把DSP、其他处理器和I/O(如UART、定时器和接口等)都集成到一块芯片中8。ARM当前有5个产品系列ARM7、ARM9、ARM9E、ARM10和SECURCORE。其中,ARM7、ARM9、ARM9E和ARM10是四个通用处理器系列。每个系列提供一套特定的性能,以满足设计者对功耗、性能体积的要求、SECURCORE是第五个产品系列,是专门为安全设备而设计的。ARM作为嵌入式系统中的处理器,以其低电压、低功耗的集成度等特点,及其开放可扩展性,实际上已经成为嵌入式系统首选的处理器体系结构7918。22AT91RM9200微处理器简介AT91RM9200是美国ATMEL公司于2003年推出的一款针对系统控制、通讯领域的基于ARM9内核的微处理器。AT91RM9200微控制器与ATMEL以前推出的ARM7的AT91系列微处理器兼容,同时,AT91RM9200微处理器还提供了启动/禁用片上存储器的功能,以配合外围设备的需要。如图1所示AT91RM9200结构框图868788。14图1AT91RM9200结构框图221ARM920T处理器的特点ARM920TTM高速缓存处理器,是ARM9THUMB高性能32位片上系统处理器系列中的一款。它提供了一个完全的高性能CPU系统,包括ARM9TDMITMRISC整型CPU16K字节的指令缓存和16K字节的数据缓存指令和数据存储管理单元(MMU)写缓存功能高级微处理器总线构架(AMBA)总线接口嵌入式跟踪宏单元(ETM)接口ARM920TTM的内核ARM9TDMITM可以执行32位的ARM指令集和16位的THUMB指令集。ARM9TDMITM处理器采用哈佛结构的处理器,实现5级流水线操作,包括指令、译码、执行、存储和写。15ARM920TTM处理器包含两个写处理器CP14和CP15。其中,CP14负责控制软件调试通信通道,而CP15是系统控制处理器,提供另外16个寄存器,用于配置控制高速缓存、MMU、保护系统、时钟模式和其他系统功能。ARM920TTM处理器的主要特点是1基于ARM9TDMITM,ARMV4T结构;2具有两种指令集,包括ARM高性能32位指令集和THUMB高代码率的16位指令集;35级流水线指令结构取指令(F)、指令译码(D)、执行(E)、数据存储访问(M)和写寄存器(W)416K字节的数据缓存,16K字节的指令缓存5具有写缓冲器,可以实现16字的数据缓冲,以及4地址的地址缓冲;6标准的ARMV4存储管理单元MMU),支持按区访问对于页的每个QUARTER,可以进行独立配置,以支持大页访问,或者小页访问;具有16个嵌入区;拥有64输入的指令TLB,以及64输入的数据TLB;78位、16位和32位数据总线,支持指令和数据的传输。222AT91RM9200微处理器的特点ATMEL公司的AT91RM9200是基于ARMTHUMB的ARM920T微处理器,时钟频率为180MHZ时,运算速度可以达到200MIPS,内部分别有16KB的数据缓存和16KB的指令缓存,具有写缓冲。嵌入式存储器包括16KB的SRAM和128KB的ROM。此外,AT91RM9200采用了完全的低功耗设计,VDDCORE的电流为304MA,待机模式下的电流仅为31MA。AT91RM9200内部集成了一个16KB的高速片上的SRAM,以及一个外围总线接口(EBI),可以与片外存储器进行连接。外围总线接口为同步动态随机存储器(SDRAM)、BURSTFLASH和静态存储器提供了控制器,并且因为其内部的特殊电路,可以方便的提供SMARTMEDIA、COMPACTFLASH和NANDFLASH的接口。高级中断控制器(AIC)提供了对歌具有优先级的向量中断源,缩短了传输到一个中断处理器的时间,从而提高了ARM920T处理器的中断处理性能。外围数据控制器(PDC)为所有的串行外设提供了DMA通道,以允许外设在没有处理器干涉的情况下,与片内或片外存储器进行数据的传输。因此,在处理连续的数据流时,减少了处理器的系统开销。16并行I/O(PIO)控制器将外围输入/输出线与通用数据I/O分时复用,为设备的配置提供了最大的灵活性。电源管理控制器(PMC)通过软件,选择性的使能和禁用处理器以及各种外围设备,从而保持系统的功耗最小。其中使用了增强的时钟发生器,提供了时钟信号的选择,包括一个慢时钟(32KHZ),以达到在所以时间内优化功耗和性能的目的。AT91RM9200集成了多种标准接口,包括USB20高速主机端和客户端,以太网10/100MBASET媒体访问控制器(MAC),可以提供与多种外围设备,以及广泛使用的网络层的接口。另外,AT91RM9200还提供了符合工业标准的众多外围设备,包括音频、远程通讯、FLASH卡、红外线和智能卡应用。23嵌入式系统平台的硬件设计我们采用的硬件环境是北京康拓公司提供的ARM人机界面板。ARM人机界面板是基于ARMCPUAT91RM9200开发的人机界面,可用于设备的人机交互设备及通讯网关装置。此人机界面板包括240X128的宽温黄绿底液晶(液晶背光可温度控制),可选彩色蓝底液晶;9个键盘按键;支持4个LED显示灯(其余6个由DSP控制);一个隔离的RS232口作为维护口(DBGU);两个RS232串口;两个RS422串口;两个外扩的RS485串口;外扩8M32位SDRAM;8M8位NVRAM;2片8M串行DATAFLASH;外扩10M以太网,加上内部自带10M/100M自适应以太网,提供双以太网接口。它可以应用在电力系统保护设备的人机界面、工业控制系统的人机界面、仪表的人机界面和通讯网关。ARM人机界面板的资源分配如表1所示表1ARM人机界面板的资源分配表地址端口片选读写0X10000000H0X1FFFFFFFHNCS0FLASHFLASH0X20000000H0X2FFFFFFFHNCS1SDRAMSDRAM0X30000000H0X307FFFFFHNCS2第一片NVRAM第一片NVRAM0X30800000H0X30FFFFFFHNCS2第二片NVRAM第二片NVRAM0X30C00000H0X30C07FFFHNCS2看门狗3808看门狗38080X50000000H0X7FFFFFFFHNCS46CF卡CF卡170X80600000H0X80600001HNCS7LCDLCD0X80400000H0X8040000FHNCS7外括串口外括串口0X80200000H0X8020001FHNCS7以太网8019以太网80190X80800000HNCS7键盘数据指示灯0X80800001HNCS7键盘状态LCD背光0X80800002HNCS7串口中断状态使能看门狗0X80800003HNCS7无效3808写保护0X80800004HNCS7无效运行指示灯0X80800005HNCS7无效刷新键盘状态183嵌入式LINUX系统平台的构建嵌入式LINUX系统平台的构建是一个复杂的过程。由于嵌入式系统为一个资源有限的系统,直接在嵌入式系统的硬件平台上编写软件比较困难,有时甚至是不可能的。目前,一般采用的方法是,先在通用计算机上建立主机和目标机的交叉编译开发环境,生成目标平台上可运行的二进制代码格式,最后下载到目标平台上的特定位置上运行。对于整个操作系统的移植,包括交叉编译环境的建立和必要服务的启动,BOOTLOADER的开发移植,LINUX内核的移植,驱动程序的开发加载,还有文件系统的建立,最后是软件的加载固化353639。以下章节将对各个环节进行详细的介绍。建立嵌入式LINUX交叉开发环境和主机辅助服务。目前,常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链,目前已经能够支持X86、ARM、IPS、POWERPC等多种处理器。商业的交叉开发环境主要有METROWERKSCODEWARRIOR、ARMSOFTWAREDEVELOPMENTTOOLKIT、SDSCROSSCOMPILER、WINDRIVERTORNADO、MICROSOFTEMBEDDEDVISUALC等。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境。它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式。交叉编译和链接。在完成嵌入式软件的编码之后,就是进行编译和链接,以生成可执行代码。由于开发过程大多是在INTEL公司X86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多数为ARM、MIPS、POWERPC、DRAGONBALL等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。例如,在基于ARM体系结构的GCC交叉开发环境中,ARMLINUXGCC是交叉编译器,ARMLINUXLD是交叉链接器212223。调试目标机上的应用程序。嵌入式系统调试时,主机上运行的集成开发调试工具(调试器)通过仿真器和目标机相连。仿真器处理宿主机和目标机之间的通信,这个通信口可以时串口、并口或者高速以太网口。仿真器通过JTAG口和目标机相连,调试时需将宿主机上的应用程序和操作系统内核下载到目标机的RAM中或直接烧录到目标机的FLASH中。1931建立嵌入式LINUX交叉编译环境移植前需要在宿主机上建立ARM的交叉编译环境,建立交叉编译环境的目的在于使用普通的PC机作为宿主机来调试目标开发板。建立ARM的交叉编译环境主要用到的开发工具有BINUTILS、GCC、GLIBC。其中BINU2TILS是二进制文件的处理工具,它主要包含了一些辅助开发工具,例如OBJDUMP显示反汇编码、NM列出符号表、READELF显示ELF文件信息及段信息、STRIP将不必要的代码去掉以减少可执行文件大小等。这些工具在嵌入式开发初期,尤其是移植调试操作系统时非常有用GCC是编译工具,用来编译内核代码的工具,使用它可以编译汇编语言和C语言的程序,生成ARM的代码GLIBC是链接和运行库,它的编译需要指定编译器为刚才做好的ARM交叉编译器否则编译出的GLIBC代码将会是同时有ARM和X86代码的混和体。所有需要用到的工具可以下载源码自行编译,然后在宿主机上进行安装,就可以建立起ARM的交叉编译环境232425。开发环境的PC平台是在REDHAT90上装了CROSS2953ARMLINUXGCC,并将所有的相关的工具安装在/USR/LOCAL/ARM/2953下,同时将LINUX内核LINUX2419RM7下载到/USR/LOCAL/ARM/LINUX2419RM7下。同时在此PC机上还装有FC4操作系统上/USR/LOCAL/ARM/33目录下,装有CROSS33ARMLINUXGCC相关工具,虽然在不同的操作系统下仍可通过磁盘的访问进行使用。同时开启TFTP服务、NFS服务和DHCP服务。如下图2为交叉编译环境的示意图。2032引导转载程序的移植321引导装载程序简介当处理器最初启动时,首先执行在一个预先指定的地址处的程序。通常这个位置时只读存储区,其中存放着系统初始化或引导程序。在PC中,这段程序就是BIOS。这个程序执行低级的CPU初始化,并配置其他硬件和接口。之后,BIOS判断出哪个磁盘包含有操作系统,并将操作系统拷贝倒RAM中,然后将控制权交给操作系统。在嵌入式系统中,取代BIOS的是一段功能类似的启动代码,通常称作BOOTLOADER。大多数BOOTLOADER都包含两种不同的操作模式“自动加载启动”模式和“下载”模式,加载启动(BOOTLOADING)模式,也称为“自主”(AUTONOMOUS)模式,即BOOTLOADER从目标机上的某个固态存储设备上将操作系统内核映象加载到RAM中,然后到RAM中执行,整个过程并没有用户的介入。这种模式是BOOTLOADER的正常工作模式,因此在嵌入式产品发布的时候,BOOTLOADER显然必须工作在这种模式下。下载(DOWNLOADING)模式在这种模式下,目标机上的BOOTLOADER将通过串口连接或网络连接等通信手段从主机上下载文件,比如下载内核映象和根文件系统映象等。从主机下载的文件通常首先被BOOTLOADER保存到目标机的RAM中,然后再被BOOTLOADER写到目标机上的FLASH固态存储设备中。BOOTLOADER的这种模式通常在第一次安装内核与根文件系统的时候被使用;另外,以后的系统更新也会使用。这种模式下的BOOTLOADER只是向终端用户提供一个简单的命令行接口。象BLOB,REDBOOT,UBOOT等这样功能强大的BOOTLOADER都有这样的功能。本项目采用的是UBOOT,作为本系统的BOOTLOADER,以下章节将详细介绍262728。322AT91RM9200芯片的引导机制在AT91RM9200的片内ROM中固化有一个FIRMWARE,它可以根据情况执行BOOTLOADER过程或BOOTUPLOADER过程。当开发板复位后,FIRMWARE首先执行BOOTLOADER过程,在这个过程中,会寻找有效的ARM跳转向量表。寻找的范围包括连接到串行外围接口(SPI)的NPCS0片选上的串行DATAFLASH连接到TWI接口上的EEPROM连接到外围接口(EBI)的NCS0片选线上的8位并行存储器如果发现有效的ARM跳转向量表,就会将包含该向量表的程序以最高12K字节21的速度下载到内部的SRAM中,并在装载完毕后跳到SRAM的首地址执行该程序。如果没有发现任何有效的ARM跳转向量表,则FIRMWARE会启动BOOTUPLOADER过程,该过程初始化调试串口,并使用DFU协议利用调试串口从上位机下载代码至内部SRAM,然后跳转执行。整个FIRMWARE的执行过程如图3所示图3AT91RM9200的内部启动示意图323第一级引导ROMBOOT的分析我们知道AT91RM9200的片内SRAM只有16KB,所以由于空间限制不能直接调用UBOOT这样的功能强大的BOOTLOADER,所以通过编写一个小型的引导程序ROMBOOT来实现UBOOT的调用。它只要实现如下三个功能查看DATAFLASH中指定地址空间的内容。将DATAFLASH中存放的UBOOT转载到SDRAM中,然后跳转执行通过调试串口下载代码至SDRAM中,然后将代码由SDRAM烧写到DATAFLASH接下来分析一下ROMBOOT程序的结构。象所有的BOOTLOADER一样,首先定义程序入22口、设置ARM异常向量表、初始化各种模式下的堆栈,这些代码都是用汇编实现的。执行完上述代码之后,程序跳转到AT91F_LOWLEVELINIT函数,执行开发板底层硬件初始化操作,包括初始化中断控制器、初始化SDRAM、初始化调试串口等,这些程序由C语言实现。AT91F_LOWLEVELINIT函数执行完后,程序跳转到汇编部分,继续执行一些处理器相关的初始化工作,包括配置协处理器、初始化应用程序执行环境(拷贝RW段、清零ZI段)等。当所有的系统初始化工作完成之后,程序流程就将转入C语言编写的主应用程序MAIN函数了。到此为止,汇编语言所编写的程序就执行完毕了。在MAIN函数中,首先执行XMODEM的初始化、系统时钟的初始化、系统时钟中断使能、DATAFLASH初始化,然后等待用户输入所选择执行的功能序号1)当用户输入“3”时,执行AT91F_STARTUBOOT函数。该函数调用READ_DATAFLASH函数,将UBOOTBIN从DATAFLASH读取到SDRAM中,然后跳转执行UBOOT程序,这样就将控制权顺利交给了UBOOT;2)当用户选“2”时,则执行AT91F_MEMORYDISPLAY函数,该函数也调用READ_DATAFLASH函数,将DATAFLASH中的内容读到缓冲区LINEBUF中,然后以一定的格式显示出来3)当用户输入“1”时,则执行XMODEMPIPEREAD函数,按照XMODEM协议,通过调试串口接收上位机发送的程序到SDRAM的起始地址,接收过程中计算收到的代码大小,然后根据该数据计算出ARM跳转向量表中第六个向量的正确数值,并改写该向量(片内FIRMWARE程序会根据ARM跳转向量表中的第六个向量的值来确定需要下载到SRAM中的IMAGE文件的大小)。之后,对SDRAM中接收到的数据进行CRC32校验编码,利用WRITE_DATAFLASH函数,将数据烧写入DATAFLASH的指定地址。接着,调用READ_DATAFLASH函数,将烧入的数据读出,再次进行CRC32校验编码,并当两个编码一致时说明烧写成功。执行完后,继续进入等待用户输入功能选择好的状态。可以看出,ROMBOOT程序虽然不大,但是具有非常重要的功能。在ROMBOOT中需要实现对DATAFLASH的初始化及读写操作。这样做的最大好处是在后面的调试开发过程中,不必再使用任何外部的烧写工具来固化程序,因为在ROMBOOT程序中就可以实现程序下载,DATAFLASH的烧写,这样就提供了巨大的便利。此项目中,当得到ROMBOOTBIN之后,可以按下面的方法进行烧写操作将开发板的调试串口与PC通过串口线进行连接,打开超级终端(LINUX下的MINICOM),设置好串口(115200,8,N,1,N)23开发板上电当超级终端不断打印字符“C”时,说明FIRMWARE程序已经运行成功,并且准备就绪。这时使用XMODEM协议发送ROMBOOTBIN,下载完毕后将自动运行。需要注意的是,此时ROMBOOTBIN文件仅仅被FIRMWARE下载到SRAM中运行,并没有保存到DATAFLASH当中,所以下面紧接着要执行烧写操作当超级终端显示ROMBOOT程序界面后,使用“1”功能,将ROMBOOTBIN下载并存储到DATAFLASH的0XC0000000地址。烧写完成之后,当重新复位开发板时,已经固化到DATAFLASH中的ROMBOOT程序就会自动运行,运行结果如图4所示图4ROMBOOT下载成功运行结果324UBOOT移植与分析1)UBOOT简介前面提到的ROMBOOT程序其实也是一个简单的BOOTLOADER程序,只是由于片内SRAM大小的限制,ROMBOOT程序的功能不像一个完整的BOOTLOADER那样全面,比如没有初始化网络硬件、无法引导操作系统等。因此,ROMBOOT的第三个功能就是将DATAFLASH中存放的UBOOT程序加载到SDRAM中,然后跳转执行16。UBOOT是德国DENX小组的开发的,现已用于多种嵌入式CPU的BOOTLOADER程序,比如POWERPC、ARM、MIPS和X86。目前UBOOT源代码开发服务器在SOURCEFORGE网站社区,在INTERNET上有一群自由开发人员维护和开发,它的项目主页是24HTTP/SOURCEFORGENET/PROJECT/UBOOT,UBOOT的最新版本源代码可以通过CVS服务器获得CVSDPSERVERANONYMOUSCVSSOURCEFORGENET/CVSROOT/UBOOTLOGINCVSZ3DPSERVERANONYMOUSCVSSOURCEFORGENET/CVSROOT/UBOOTCHECKOUTPUBOOTUBOOT源码相当复杂,覆盖各种常用的目标板配置,UBOOT的移植一般是针对嵌入式目标板的硬件资源,主要是CPU、FLASH、SDRAM等情况,以尽可能一致的原则上在UBOOT源码中找到一个与目标板为统一个或同系列的处理器的支持模板,即采用基本符合或者接近目标板的配置目录,移植相关的源程序。本项目采用的是UBOOT112版本,该版本支持基于AT91RM9200的处理器配置。2)UBOOT的启动分析UBOOT是系统启动过程中在操作系统之前执行的软件,与硬件有高度的依存关系,它的启动过程主要分为两个阶段,即STAGE1和STAGE2【4】。STAGE1的具体步骤是1)目标板的硬件设备初始化,包括初始化CPU的关键存储器;2)为加载STAGE2的代码准备RAM空间;3)拷贝STAGE2的代码到RAM空间;4)设置堆栈;5)跳转到STAGE2的C入口处。而STAGE2的具体步骤是1)初始化本阶段要使用到的硬件设备;检测系统内存映射;3)将KERNEL映象和根文件系统RAMDISK映象从FLASH载到RAM空间;4)为内核设置启动参数;5)调用内核。3如何在KTARM9200上安装UBOOT接好板卡电源,用交叉串口线连接KTARM9200的串口DBGU和PC的串口。注意跳线W8应为断开状态。配置超级终端打开超级终端,配置如下波特率115200;数据位8;奇偶校验无;停止

温馨提示

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

评论

0/150

提交评论