当前位置:文档之家› [毕业论文]Linux+AT91RM9200嵌入式系统设计开发

[毕业论文]Linux+AT91RM9200嵌入式系统设计开发

目录

错误!未定义书签。 ··················································································································错误!未定义书签。

1 嵌入式系统基础 (3)

1.1嵌入式系统概述 (3)

1.2嵌入式系统组成 (3)

1.2.1 嵌入式处理器 (3)

1.2.2 外围设备 (4)

1.2.3 嵌入式操作系统 (4)

1.2.4 应用软件 (4)

1.3嵌入式系统特点 (5)

1.4嵌入式系统发展前景 (5)

1.5嵌入式操作系统概述 (6)

1.5.1 操作系统的概念和分类 (6)

1.5.2 嵌入式操作系统的特点 (8)

1.5.3 常见的嵌入式操作系统 (8)

1.6研究目标 (11)

2 ARM920T硬件平台设计 (12)

2.1ARM体系结构 (12)

2.2AT91RM9200微处理器简介 (13)

2.2.1 ARM920T处理器的特点 (14)

2.2.2 AT91RM9200微处理器的特点 (15)

2.3嵌入式系统平台的硬件设计 (16)

3 嵌入式Linux系统平台的构建 (18)

3.1建立嵌入式L INUX 交叉编译环境 (19)

3.2引导转载程序的移植 (20)

3.2.1引导装载程序简介 (20)

3.2.2 AT91RM9200芯片的引导机制 (20)

3.2.3 第一级引导RomBoot的分析 (21)

3.2.4 U-BOOT移植与分析 (23)

3.3剪裁、配置和编译内核 (32)

4 Linux系统设备驱动程序概述 (39)

4.1L INUX设备驱动程序分类 (39)

4.2编写驱动程序的一些基本概念 (39)

4.3L INUX系统网络设备驱动程序 (40)

5 文件系统的建立 (44)

5.1各种文件系统的简介 (44)

5.2CRAMFS文件系统 (44)

5.3JFFS2文件系统 (45)

5.4RAMDISK文件系统 (46)

6 ARM Linux中断处理分析 (47)

i

6.1ARM L INUX 底层中断处理程序 (47)

6.1.1 ARM处理器模式与异常处理 (47)

6.1.2 ARM Linux中断处理向量 (48)

6.2ARM L INUX高层中断处理程序 (48)

6.3ARM L INUX中断处理的实时性分析 (49)

6.3.1 禁用和使能中断 (49)

6.3.2 ARM Linux中断处理的特性 (50)

6.3.2.1 ARM Linux的中断延迟 (50)

6.3.2.2系统负载对ARM Linux中断处理实时性的影响 (51)

6.4分析结论 (51)

7 总结与展望 (52)

7.1项目成果与工作总结 (52)

7.2后续工作展望 (54)

··················································································································错误!未定义书签。 ··················································································································错误!未定义书签。···············································································································错误!未定义书签。···············································································································错误!未定义书签。 ··················································································································错误!未定义书签。

ii

1 嵌入式系统基础

1.1 嵌入式系统概述

随着电子技术的快速发展,特别是大规模集成电路的产生而出现的微型机,使现代科学研究得到了质的飞跃,而嵌入式微控制器技术的出现则给现代工业控制领域带来了一次新的技术革命。由嵌入式微控制器组成的系统,最明显的优势就是可以嵌入到任何微型或小型仪器、设备中。

嵌入式系统被定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统[1]。嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。

嵌入式系统是以嵌入式计算机为技术核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统[2]。和通用计算机不同,嵌入式系统是针对具体应用的专用系统,目的就是要把一切变得更简单、更方便、更普遍、更适用;它的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能[1][2][3]。

1.2 嵌入式系统组成

嵌入式系统通常由嵌入式处理器、外围设备、嵌入式操作系统和应用软件等极大部分组成。

1.2.1 嵌入式处理器

嵌入式处理器是嵌入式系统的核心部件。嵌入式处理器与通用处理器的最大不同在于其大多工作在为特定用户群设计的系统中。它通常把通用计算机的许多由板卡完成的功能集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,并具有高效率、高可靠性等特点。

嵌入式系统主要应用领域有:工业控制、POS机、网络设备、图像处理、手机、PDA 等。目前主要使用ARM、MIPS、PowerPC、DSP等16~32位处理器,以32位为主。各种

3

类型的处理器都有其一定的应用针对性。例如,DSP对数字信号处理技术中用到常用运算、算法作了优化设计,主要用于运算量较大的实时信号处理领域,如实时音频、视频处理,电机控制等。MIPS处理器性能好,但功耗大,适合于固定应用,如固定的网络设备、机顶盒等。ARM处理器性能高、功耗低,适合于电池便携、手持设备。由于其高性能低功耗的特点,ARM处理器已经成为32位处理器的主力产品。本文将介绍ATMEL公司的AT91RM9200,这款基于ARM920T的外设丰富的、功能强大的、非常适合工控领域的微处理器,并在该处理器上进行的嵌入式linux的开发[11][12][13]。

1.2.2 外围设备

外围设备是指在一个嵌入式系统中,除了嵌入式处理器以外,用于完成存储、通讯、显示等辅助功能的其他部件。根据外围设备的功能可以分为如下3类: 存储设备:静态易失性存储设备(RAM)、动态存储设备(DRAM)和非易失存储器(FLASH)。其中,Flash可以擦写次数多、存储速度快、容量大价格低

等特点,在嵌入式系统中得到广泛的应用。

通讯接口设备:应用广泛的包括并口,串口,SPI串行外围设备,I2C总线接口、USB接口和以太网接口等等。

人机交换设备:LCD、键盘和触摸屏等。

1.2.3 嵌入式操作系统

在大型的嵌入式应用系统中,为了使嵌入式开发更为方便、快捷,需要具备一种稳定完全的软件模块集合,用以管理存储设备、中断处理、任务间通讯和定时器响应,以及提供多任务处理器等,即嵌入式操作系统。嵌入式系统的引入大大提高了嵌入式系统的功能,方便了应用软件设计,但同时占用了嵌入式系统的宝贵资源。一般在比较大型或者需要多任务的应用场合,才考虑嵌入式操作系统

[14][15][16]。

1.2.4 应用软件

嵌入式应用软件是针对特定的实际专业领域,基于相应的嵌入式硬件平台,并能完成用户任务的计算机软件。由于嵌入式系统自身的特点要求嵌入式应用软

4

件有高可靠性,高代码密度,高度优化等特点,以适应嵌入式系统的实时性和成本敏感的特性要求,另外嵌入式应用软件需要在特定的编译环境下编译。

1.3 嵌入式系统特点

由于嵌入式系统是应用于特定的环境下,面对专业领域的应用系统,所以与通用计算机的多样化和适用性不同。它与通用计算机系统相比具有如下特点: 嵌入式系统通常是面向特定应用的。

嵌入式系统是将先进的计算机技术、半导体工艺、电子技术和通信网络技术与各个领域的具体应用相结合的产物。这一特点决定了它必然是一个技术密

集、资金密集、高度分散、不断创新的知识集成系统。

嵌入式系统的硬件软件都必须高效率的设计,在保证稳定、安全、可靠的基础上量体裁衣,去除冗余,力争在同样的硅片面积上实现更高的性能。这样,才能最大限度的降低应用成本。在具体的应用中,对处理器的选择决定了其

市场竞争力。

嵌入式系统常常有低功耗的要求。

可靠性和稳定性对与嵌入式系统有着特别重要的意义。

嵌入式系统本身不具有自举开发能力。既使设计完成后,用户也通常不能对其中的程序进行修改,必须有一套交叉开发工具和环境才能开发。

嵌入式系统有时要求实时性较高,特别是对于特定的应用。

嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体用于相结合才会具有生命力,才会更具有优势。嵌入式系统必须根据应用要求对软硬件进行裁减,满足应用系统的功能、可靠性、成本、体积等要求。

1.4 嵌入式系统发展前景

后PC 时代是一个真实的阶段,而且是一个可以预测的时代。嵌入式系统就是与这一时代紧密相关的产物,它将拉近人与计算机的距离,形一个人机和谐的工作与生活环境。从某一个角度来看,嵌入式系统可应用于人类工作与生活的各个领域,具有极其广阔的应用前景。嵌入式系统在传统的工业控制和商业管理领域已经具有广泛的应用空间,如智能工控设备、POS/ATM 机、IC 卡等;在家庭领域更具有广泛的应用潜力,如机顶盒、数字电视、WebTV、网络冰箱、网络空调等众多消费类和医疗保健类

5

电子设备等;此外还有在媒体手机、袖珍电脑、掌上电脑、车载导航器等方面应用,将极大地推动嵌入式技术深入到生活和工作的方方面面[8][4][10]。它在娱乐、军事方面的应用潜力也是巨大的,而且是有目共睹的。

1.5 嵌入式操作系统概述

早期的嵌入式系统很多都不采用操作系统,它们只是为了实现某个控制功能,使用一个简单的循环控制对外界的控制请求进行处理。当应用系统越来越复杂、应用的范围愈来愈广泛的时候,每添加一项新的功能,就能需要从头开始设计,所以没有操作系统已经是一个最大的缺点。嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括软、硬件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通讯协议、图形界面等。嵌入式操作系统既有通用操作系统的基本特点,如能够有效的管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统的系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。

嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、调度、控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能[35] [38] [40]。

1.5.1 操作系统的概念和分类

操作系统OS(Operation System)是一组计算机程序的组合,用来有效的控制和管理计算机的硬件和软件的资源,即合理的对资源进行调度,并为用户提供更为方便的应用接口。它为应用支持软件提供运行环境,即对程序开发者提供功能强、使用方便的开发环境[11][12][13]。

从资源管理的角度,操作系统主要包含如下功能:

处理器管理。对处理器进行分配,并对其运行进行有效的管理和控制。在多任务环境下,合理分配由任务分享的处理器,使得CPU能够满足各程序运行的需要提高处理器的利用率,并能在恰当的时候收回分配给任务的处理器。处理器的分配和运行都是以进程为基本单元进行的,因此,对处理器的管理可以归结为对进程的

6

管理,包括进程控制、进程同步、进程通讯、作业调度和进程调度等。

存储器管理。存储器管理的主要任务是为多道程序的运行提供良好的环境,包括内存分配、内存保护、地址映射、内存扩充。例如,为每道程序分配必要的内存空间,使它们各得其所,且不致因相互重叠而失去信息;不因某个程序出现异常而破坏其他程序得运行;方便用户使用存储器;提高存储器得利用率;并能从逻辑上扩充内存等。

设备管理。完成用户提出得设备请求,为用户分配I/O设备;提高CPU和I/O得利用率;提高I/O速度,方便用户使用I/O设备。设备管理包括缓存管理、设备分配、设备处理、形成虚拟逻辑设备等。

文件管理。在计算机中,大量得程序和数据是以文件的形式存放的。文件管理的主要任务就是对系统文件和用户文件进行管理,方便用户使用,保证文件的安全性。文件管理包括对文件存储空间的管理、目录管理、文件的读写管理,以及文件的共享与保护等。

用户接口。用户与操作系统的接口是用户能够方便的使用操作系统的关键。用户通常只需以命令形式、系统调用(即程序接口)形式与系统打交道。图形用户接口(GUI),可以将文字图形和图像集成在一起,用非常容易识别的图标将系统的各种功能、各种应用程序和文件直观的表示出来,用户可以通过鼠标来取得操作系统的服务。

操作系统的分类,按程序进行调度的方法,可以将计算机操作系统分为以下几种类型:

顺序执行系统。即系统内只有一个运行程序。它独占CPU时间,按语句顺序执行该程序,直至执行完毕,另一个程序才能启动运行。DOS就是这种操作系统。

分时操作系统。系统内同时可有多道程序运行。所谓同时,只是从宏观上来看的,实际上系统把CPU时间按顺序分为若干时间片,每个时间片内执行不同的程序。这类系统支持多用户、当今广泛用于商业、金融领域。Unix操作系统就属于这类系统。

实时操作系统。系统内部同时有多道程序运行,每道程序个有不同的优先级,操作系统按事件触发使程序运行。当多个事件发生时,系统按优先级高低来确定哪道程序在此时此刻能占用CPU,以保证优先级高的事件、实时信息及时被采集。实时操作系统是操作系统的一个分支,也是最为复杂的一个分支。

7

1.5.2 嵌入式操作系统的特点

嵌入式操作系统是相对于一般的操作系统而言的,它除了具备一般操作系统最基本的功能,如任务调度、同步机制、终端处理、文件处理等外,还有如下特点[14][15][16]: 可装卸性。具有开放性、可伸缩性的体系结构。

有时需要强实时性。嵌入式操作系统的实时性一般较强,可用与各种设备控制当中。

统一的接口。提供各种设备的驱动接口。

操作方便、简单,提供友好的用户界面。

提供强大的网络功能。支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP等协议支持,以及统一的MAC访问层接口,为各种移动计算机设备预留接口。

强稳定性,若交互性。嵌入式系统一旦开始运行,就不需要用户过多的干预,这就要求负责系统管理的嵌入式操作系统具有较强的稳定性。嵌入式操作系

统的用户接口一般不提供操作命令,它通过系统的调用命令,向用户程序提

供服务。

固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。辅助存储器在嵌入式系统中很少使用,嵌入式操作系统的

文件管理功能应该能够很容易的拆卸,而用各种内存文件系统。

更好的硬件适应性,即良好的移植性。

1.5.3 常见的嵌入式操作系统

国际上用于信息电器的嵌入式操作系统有40多种左右。现在,市场上非常流行的产品包括3Com公司下属子公司的Palm OS、Microsoft公司的 Windows CE、美国WindRiver公司的VxWorks、开放源码的Linux。

1)Palm OS

Palm 是3Com公司的产品,其操作系统为Palm OS。Palm OS是一种32位的嵌入式操作系统。Palm提供了串行通讯接口和红外传输接口,利用它可以方便的与其他外部设备通信、传输数据:拥有开放的OS应用程序接口,开发商可根据需要自行开发所需的应用程序。Palm OS是一套具有很强开放性的系统,现在有大约数千种转为Palm OS编写的应用程序,从程序内容上看,小到个人管理、游戏,大到行业解决方案,Palm OS

8

无所不包。在丰富的软件支持下,基于Palm OS的掌上电脑功能不断扩展。

Palm OS是一套专门为掌上电脑开发的OS。在编写程序时,Palm OS充分考虑了掌上电脑内存相对较小的情况,因此它占有非常小的内存。由于基于Palm OS编写应用程序占用的空间也非常小,基于Palm OS的掌上电脑可以运行多种应用程序。

2)Windows CE

Windows CE时微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上电脑类的电子设备操作。它是精简的Windows 95。Windows CE的图像用户界面相当出色。与Windows 95/98、Windows NT不同的是,Windows CE是所有源代码全部是微软自行开发的嵌入式新型操作系统,其操作界面来源于Windows 95/98,但是Windows CE是基于Win32 API重新开发的、新型的信息设备平台。Windows CE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。Windows CE不仅继承了传统的Windows 图像界面,更有利的是可以使用类似于Visual Basic、Visual C++的集成开发工具(Embedded Visual Basic和 Embedded Visual C++)在Windows平台上方便快捷的开发运行于Windows CE平台上的应用程序,使用同样的函数、使用同样的界面网络,使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用。

3)VxWorks

VxWorks操作系统使美国WindRiver公司于1983年设计开发的一种实时操作系统。VxWorks拥有良好的继续发展能力、高性能的内核以及友好的用户开发环境,在实时操作系统领域占据一席之地。它以良好的可靠性和卓越的实时性能被广泛的应用到通信、军事、航天等高精尖技术及实时性要求较高的领域种。在美国的F-16、FA-18战斗机、B-2隐形轰炸机和爱国者导弹上,甚至1997年火星表面登陆的火星探测器上也使用了VxWorks。它是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。VxWorks支持多种处理器,如ARM、x86、MIPS、PowerPC、StrongARM等等。大多数的VxWorks的API是专用的。

VxWorks具有一个高性能实时微内核,其任务切换时间短、中断延迟小、网络流量大的特点使得VxWorks的性能得到很大的提高。VxWorks与POSIX兼容,用户在其他符合POSIX标准的系统如Linux上运行的软件,基本上只要重新编译一下就可以移植到VxWorks上运行。VxWorks提供了良好的可配置能力,可配置的组建超过80个,用户可以根据自己系统的功能需求进行合理的配置。而且,VxWorks提供了一个强大的开发

9

调试环境Tornado,以方便广大嵌入式系统开发人员的开发使用。

4)Linux

Linux是一个类似Unix的操作系统。它起源于芬兰一个名为Linus Torvalds的业余爱好,但是现在已经是最为流行的一款开放源代码的操作系统。Linux从1991年问世

到现在,短短十几年的时间已经发展成为一个功能强大、设计完善的操作系统,伴随网络技术进步而发展起来的Linux已经成为微软公司Windows的强劲对手。Linux系统

不仅能够运行于PC平台,还在嵌入式系统方面大放光芒,在各种嵌入式linux迅速发

展的情况下,linux逐渐形成了可与Windows CE等嵌入式操作系统进行抗衡的局面。

目前正在开发的嵌入式系统中,49%的项目选择Linux作为嵌入式操作系统。Linux现已成为嵌入式操作的理想选择[20][22][23]。

嵌入式linux操作系统的有点在于:

Linux是源码开放的,不存在黑箱技术,遍布全球的众多linux爱好者都是linux开发者的强大技术支持者。

Linux的源代码随处可得,注释丰富,文档齐全,易于解决各种问题。

Linux的内核小,效率高。

Linux是开放源代码的操作系统,在价格上极具竞争力,适合中国国情

Linux不仅支持x86芯片,还是一个跨平台的系统,到目前为止,它可以支持30~40种CPU,很多CPU厂商开始作Linux的平台移植工作,而且移植的速度远

远超过Java的开发环境。如果今天采用Linux环境开发产品,那么将来更换CPU

时就不会遇到更换平台的困扰。

Linux内核的结构在网络方面时非常完整的,它提供了对于包括10兆位百兆位及千兆位的以太网络,还有无线网络、Token ring和光纤甚至卫星的支持。

Linux在内核结构的设计中,考虑适应系统的可裁减性的要求。

作为嵌入式系统核心的嵌入式操作系统时开发嵌入式应用的关键一环,在这

个领域内,没有通常操作系统环境下的Windows系统那样一支独秀的商品。因

此,目前国内外相继推出了很多商业化嵌入式操作系统,都在努力为自己争

取着嵌入式市场的份额。而Linux凭借其价格免费、源码公开的特点在嵌入式

应用中占有一席之地,由于Linux自身的诸多优势,吸引了许多开发上的目光,

已经渐渐成为了嵌入式操作系统领域的新宠。本论文将介绍在基于

AT91RM9200微处理器的开发平台上,进行嵌入式Linux的移植。

10

1.6 研究目标

本课题来源于北京理工大学同北京康拓工业电脑公司的合作项目“基于ARM平台的嵌入式控制系统开发”。本文主要研究ARM920T核CPU的应用与嵌入式Linux操作系统的移植和底层驱动的开发,底层硬件采用康拓电脑公司自主开发的ARM人机界面卡。开发主机采用Redhat9.0操作系统,开发平台使用GNU交叉开发环境。最终目标是实现人机界面板卡的各种功能,完成在μC/OS-II下的各种驱动的调用,为用户提供一个完整的应用平台。

11

2 ARM920T硬件平台设计

2.1 ARM体系结构

ARM公司把ARM作为知识产权IP推向嵌入式处理器市场,目前已经占有80%左右的市场。市场上出现的ARM体系结构有多种形式,既有处理器内核(如ARM9TDMI)形式,也有处理器核如(ARM9T)形式。半导体厂商或片上系统SOC设计应用厂商采用ARM体系结构,生产相应的MCU/MPU(如ATMEL公司的AT91系列)或SOC芯片。

ARM即Advanced RISC Machines的缩写。ARM公司是知识产权(IP)供应商,本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。作为32位嵌入式RISC微处理器业界的领先供应商,ARM公司商业模式的强大之处在于它在世界范围内有超过100个合作伙伴――包括半导体工业的著名公司,从而保证了大量的开发工具和丰富的第三方资源,它们共同保证了基于ARM的处理器核的设计可以很快的投入市场[1][2][3]。

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)嵌入式在线仿真调试

12

ARM体系结构的处理器芯片都嵌入了在线仿真ICE-RT逻辑,便于通过JTAG来仿真调试ARM体系结构芯片,可以省去价格昂贵的在线仿真器。另外,在处理器核中还具有嵌入式跟踪单元ETM,用于监控内部总线,实时跟踪指令和数据的执行。

5)灵活方便的接口

ARM体系结构具有协处理器接口,这样,既可以使基本的ARM处理器内核尽可能的小,又可以方便的扩充各种功能。另外,ARM处理器核还具有片上总线AMBA(Advanced Microcontroller Bus Architechture)。

AMBA定义了3组总线:AHB(Advanced High performance Bus)、ASB(Advanced System Bus)和APB(Advanced Peripheral Bus)。通过AMBA来方便的扩充各种处理器及I/O口,这样,就可以把DSP、其他处理器和I/O(如UART、定时器和接口等)都集成到一块芯片中[8]。

ARM当前有5个产品系列:ARM7、ARM9、ARM9E、ARM10和SecurCore。其中,ARM7、ARM9、ARM9E和ARM10是四个通用处理器系列。每个系列提供一套特定的性能,以满足设计者对功耗、性能&体积的要求、SecurCore是第五个产品系列,是专门为安全设备而设计的。ARM作为嵌入式系统中的处理器,以其低电压、低功耗&的集成度等特点,及其开放&可扩展性,实际上已经成为嵌入式系统首选的处理器体系结构[7] [9] [18]。

2.2 AT91RM9200微处理器简介

AT91RM9200是美国ATMEL公司于2003年推出的一款针对系统控制、通讯领域的基于ARM9内核的微处理器。AT91RM9200微控制器与ATMEL以前推出的ARM7的AT91系列微处理器兼容,同时,AT91RM9200微处理器还提供了启动/禁用片上存储器的功能,以配合外围设备的需要。如图1所示 AT91RM9200 结构框图[86] [87] [88]。

13

图1 AT91RM9200 结构框图

2.2.1 ARM920T处理器的特点

ARM920TTM高速缓存处理器,是ARM9 Thumb?高性能32位片上系统处理器系列中的一款。它提供了一个完全的高性能CPU系统,包括:

ARM9TDMITMRISC整型CPU

16K字节的指令缓存和16K字节的数据缓存

指令和数据存储管理单元(MMU)

写缓存功能

高级微处理器总线构架(AMBA)总线接口

嵌入式跟踪宏单元(ETM)接口

ARM920TTM的内核ARM9TDMITM可以执行32位的ARM指令集和16位的Thumb指令集。ARM9TDMITM处理器采用哈佛结构的处理器,实现5级流水线操作,包括指令、译码、执行、存储和写。

14

ARM920TTM处理器包含两个写处理器:CP14和CP15。其中,CP14负责控制软件调试通信通道,而CP15是系统控制处理器,提供另外16个寄存器,用于配置&控制高速缓存、MMU、保护系统、时钟模式和其他系统功能。ARM920TTM处理器的主要特点是:

1)基于ARM9TDMITM,ARMv4T结构;

2)具有两种指令集,包括ARM高性能32位指令集和Thumb高代码率的16位指令集;

3)5级流水线指令结构:取指令(F)、指令译码(D)、执行(E)、数据存储访问(M)和写寄存器(W);

4)16K字节的数据缓存,16K字节的指令缓存

5)具有写缓冲器,可以实现16字的数据缓冲,以及4地址的地址缓冲;

6)标准的ARMv4存储管理单元(MMU),支持按区访问:对于页的每个Quarter,可以进行独立配置,以支持大页访问,或者小页访问;具有16个嵌入区;拥有64输入的指令TLB,以及64输入的数据TLB;

7)8位、16位和32位数据总线,支持指令和数据的传输。

2.2.2 AT91RM9200微处理器的特点

ATMEL公司的AT91RM9200是基于ARM?Thumb?的ARM920T微处理器,时钟频率为180MHz时,运算速度可以达到200MIPS,内部分别有16KB的数据缓存和16KB的指令缓存,具有写缓冲。嵌入式存储器包括16KB的SRAM和128KB的ROM。此外,AT91RM9200采用了完全的低功耗设计,VDDCORE的电流为30.4mA,待机模式下的电流仅为3.1mA。

AT91RM9200内部集成了一个16KB的高速片上的SRAM,以及一个外围总线接口(EBI),可以与片外存储器进行连接。外围总线接口为同步动态随机存储器(SDRAM)、Burst Flash和静态存储器提供了控制器,并且因为其内部的特殊电路,可以方便的提供SmartMedia、CompactFlash和NAND Flash的接口。

高级中断控制器(AIC)提供了对歌具有优先级的向量中断源,缩短了传输到一个中断处理器的时间,从而提高了ARM920T处理器的中断处理性能。

外围数据控制器(PDC)为所有的串行外设提供了DMA通道,以允许外设在没有处理器干涉的情况下,与片内或片外存储器进行数据的传输。因此,在处理连续的数据流时,减少了处理器的系统开销。

15

并行I/O(PIO)控制器将外围输入/输出线与通用数据I/O分时复用,为设备的配置提供了最大的灵活性。

电源管理控制器(PMC)通过软件,选择性的使能和禁用处理器以及各种外围设备,从而保持系统的功耗最小。其中使用了增强的时钟发生器,提供了时钟信号的选择,包括一个慢时钟(32KHz),以达到在所以时间内优化功耗和性能的目的。

AT91RM9200集成了多种标准接口,包括USB2.0高速主机端和客户端,以太网10/100M Base-T媒体访问控制器(MAC),可以提供与多种外围设备,以及广泛使用的网络层的接口。另外,AT91RM9200还提供了符合工业标准的众多外围设备,包括音频、远程通讯、Flash卡、红外线和智能卡应用。

2.3 嵌入式系统平台的硬件设计

我们采用的硬件环境是北京康拓公司提供的ARM人机界面板。ARM人机界面板是基于ARM CPU(AT91RM9200)开发的人机界面,可用于设备的人机交互设备及通讯网关装置。

此人机界面板包括:240X128的宽温黄绿底液晶(液晶背光可温度控制),可选彩色蓝底液晶;9个键盘按键;支持4个LED显示灯(其余6个由DSP控制);一个隔离的RS232口作为维护口(DBGU);两个RS232串口;两个RS422串口;两个外扩的RS485串口;外扩8M32位SDRAM;8M8位NVRAM;2片8M串行dataflash;外扩10M以太网,加上内部自带10M/100M自适应以太网,提供双以太网接口。它可以应用在电力系统保护设备的人机界面、工业控制系统的人机界面、仪表的人机界面和通讯网关。ARM 人机界面板的资源分配如表1所示:

16

17

3 嵌入式Linux系统平台的构建

嵌入式Linux系统平台的构建是一个复杂的过程。由于嵌入式系统为一个资源有限的系统,直接在嵌入式系统的硬件平台上编写软件比较困难,有时甚至是不可能的。目前,一般采用的方法是,先在通用计算机上建立主机和目标机的交叉编译开发环境,生成目标平台上可运行的二进制代码格式,最后下载到目标平台上的特定位置上运行。对于整个操作系统的移植,包括交叉编译环境的建立和必要服务的启动,Bootloader的开发移植,Linux内核的移植,驱动程序的开发加载,还有文件系统的

建立,最后是软件的加载固化[35] [36] [39]。以下章节将对各个环节进行详细的介绍。

建立嵌入式Linux交叉开发环境和主机辅助服务。目前,常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链,目前已经能

够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross Compiler、WindRiver Tornado、Microsoft Embedded Visual C++等。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境。它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式。

交叉编译和链接。在完成嵌入式软件的编码之后,就是进行编译和链接,以生成可执行代码。由于开发过程大多是在Intel公司x86系列CPU的通用计算机上进行的,

而目标环境的处理器芯片却大多数为ARM、MIPS、PowerPC、DragonBall等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。例如,在基于ARM

体系结构的gcc交叉开发环境中,arm-linux-gcc是交叉编译器,arm-linux-ld是交叉链接器[21] [22] [23]。

调试目标机上的应用程序。嵌入式系统调试时,主机上运行的集成开发调试工具(调试器)通过仿真器和目标机相连。仿真器处理宿主机和目标机之间的通信,这个通信口可以时串口、并口或者高速以太网口。仿真器通过JTAG口和目标机相连,调试时需将宿主机上的应用程序和操作系统内核下载到目标机的RAM中或直接烧录到目标

机的Flash中。

18

3.1 建立嵌入式Linux 交叉编译环境

移植前需要在宿主机上建立ARM 的交叉编译环境, 建立交叉编译环境的目的在于使用普通的PC机作为宿主机来调试目标开发板。建立ARM的交叉编译环境主要用到的

开发工具有: binutils、gcc、glibc。其中binu2tils 是二进制文件的处理工具, 它主要包含了一些辅助开发工具, 例如objdump 显示反汇编码、nm列出符号表、readelf 显示elf 文件信息及段信息、strip 将不必要的代码去掉以减少可执行文件大小等。这些工具在嵌入式开发初期, 尤其是移植调试操作系统时非常有用; gcc 是编译工具, 用来编译内核代码的工具, 使用它可以编译汇编语言和c 语言的程序, 生成ARM的代码; glibc 是链接和运行库, 它的编译需要指定编译器为刚才做好的ARM交叉编译器; 否则编译出的glibc 代码将会是同时有ARM和x86 代码的混和体。所有需要用到的工

具可以下载源码自行编译, 然后在宿主机上进行安装, 就可以建立起ARM的交叉编译

环境[23] [24] [25]。

开发环境的PC平台是在Redhat9.0上装了cross-2.95.3(arm-linux-gcc),并将所有的相关的工具安装在/usr/local/arm/2.95.3 下,同时将linux内核

linux-2.4.19-rm7下载到/usr/local/arm/linux-2.4.19-rm7下。同时在此PC机上还

装有FC4操作系统上/usr/local/arm/3.3目录下,装有cross-3.3

(arm-linux-gcc) 相关工具,虽然在不同的操作系统下仍可通过磁盘的访问进行使用。同时开启TFTP服务、NFS服务和DHCP服务。如下图2为交叉编译环境的示意图。

19

3.2 引导转载程序的移植

3.2.1 引导装载程序简介

当处理器最初启动时,首先执行在一个预先指定的地址处的程序。通常这个位置时只读存储区,其中存放着系统初始化或引导程序。在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,U-BOOT等这样功能强大的Bootloader 都有这样的功能。本项目采用的是U-BOOT,作为本系统的Bootloader,以下章节将详细介绍[26] [27] [28]。

3.2.2 AT91RM9200芯片的引导机制

在AT91RM9200的片内ROM中固化有一个Firmware,它可以根据情况执行Bootloader 过程或Boot Uploader过程。当开发板复位后,Firmware首先执行Bootloader过程,

在这个过程中,会寻找有效的ARM跳转向量表。寻找的范围包括:

连接到串行外围接口(SPI)的NPCS0片选上的串行DataFlash

连接到TWI接口上的EEPROM

连接到外围接口(EBI)的NCS0片选线上的8位并行存储器

如果发现有效的ARM跳转向量表,就会将包含该向量表的程序以最高12K字节

20

相关主题
文本预览
相关文档 最新文档