转藏到我的图书馆 推荐给朋友 举报
goodwangLib 收藏于 2012-04-02 阅读数:79
被转藏:1
公众公开 原文来源
首 页 阅览室 馆友 我的图书馆
LPC2000系列ARM处理器重映射原理的分析与实现
LPC2000系列ARM处理器重映射原理的分析与实现
2010-12-14 19:54
张毒俊 牟龙华
(同济大学电气工程系 上海200331)
摘要:重映射是ARM嵌人式软件开发中一个非常重要的概念,它是系统初始化过程中一个重要的
环节。本文详细论述了什么是重映射,为什么要进行重映射,以及怎样实现重映射,并以LPC221
0处理器为例给出了从片外Flash启动和重映射的实现方法。同时对在ARM嵌入式软件开发过程中
经常遇到一些基本概念,比如存储器映射、分散加载文件等进行了详细的解释。实验证明在采用存
储器重映射后可以显著提高系统的运行效率,同时此方法还具有不增加代码量的优点。
关t词:启动代码;重映射;分散加载文件;ARM
0 引言
多数嵌入式系统中,在进入主程序main之前,需要执行初始化序列对应用程序的运行环境进行配
置。启动代码一般用汇编语言来编写,它主要对关键设备进行初始化和配置,为应用程序的运行创
造条件。在整个启动过程中,重映射是其中重要一环,正确地理解和实现重映射有助于深入理解系
统的工作原理。
本文使用的处理器为PhilipsLPC2210,由于它的片内只集成了一块位于0x40000000~0x40004000
,大小为16K的SRAM,因此扩展了一块位于0x80000000~0x801FFFFF,大小为2M字节的Flash
。在实验中,程序将首先从外部Flash启动,然后将异常向量表从Flash存储器复制到片内SRAM中
,并进行存储器重映射将异常向量表映射到片内SRAM。虽然本文的内容都是以LPC2210处理器
为例来进行说明的,但对其他ARM系列的处理器来说也是适用的。
l 复位和初始化
ARM处理器在复位后处于SVC模式,中断是禁止的,并且处于ARM状态。必须设置好各个异常模
式堆栈的位置和大小,应用程序运行时所在的处理器模式和状态,并为它分配合适的堆栈和空间,
以及使能中断和启用缓存(如果有的话)的时机。一般来说,总是需要按照一个合理的顺序来初始化
系统,图1从总体上描述了一个适用于ARM嵌入式系统的可能的初始化序列。
关闭