微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > arm(lpc22xx)存储器寻址

arm(lpc22xx)存储器寻址

时间:11-10 来源:互联网 点击:
LPC2220/2230/2290没有内部FLASH

片内FLASH

LPC2000系列ARM的片内FLASH通过128位宽度的总线与ARM内核相连,具有很高的速度,加上后面要介绍的存储器加速功能,可以使程序直接在FLASH上运行,而不需要象其它公同的ARM微控制器一样把程序复制到RAM中运行

对处内FLASH的编程有三种方法来实现

(1)使用JTAG仿真/调试,通过芯片的JTAG接口下载程序

(2)使用在系统编程技术(ISP),通过UART0接口下载程序

(3)使用在应用编程技术(IAP)使用这种方式,可以实现用户程序运行时对FLASH进行擦除/编程,这样就为数据存储和现场固件的升级都带来极大的灵活性.

片内静态RAM

LPC2000系列ARM的片内RAM为静态的RAM,它可以用作代码和数据的存储.

片外存储器

CPU外部扩展连接的存储器芯片称为片外存储器.它们都具有数据线、地址线和控制线。(LPC2100系列不存在这种总线接口:所以只能通过I/O口的模拟总线时序来操作片外存储器,或者使用I2C、SPI等串行接口来连片外存储器)

LPC2200系列ARM微控制器具备符合ARM公司的外部存储器接口,通过它可以连接8位、16位或32位的片外存储器。最多可以扩展4个BAND 的存储器组,每存储器组寻址范围最大为16M。实际庆用中,使用16位总线宽度的存储器可以获得较好的性价比

片外存储器的读写

对于外扩的SRAM存储器只需要一条LDR(STR)指令就可以进行读写操作。

对于外扩的FLASH(NOR型),可以使用LDR指令读取数据,但是不能使用STR指令直接写数据,需要根据FLASH芯片写操作时序进行控制,实现FLASH的擦除编程。如果需要将程序代码烧写到FLASH芯片内,则需要在CPU内运行一个装载程序Loder程序.

存储器映射

给存储器分配地址的过程称为存储器映射。

存储器的重映射:有部分存储器单元可以出现在不同听地址上

注意:这个重映射不是将对映射单元内容的复制,而只是将多个地址指向了同一个存储单元,这个效果是通过芯片内部的"存储器管理部件"实现的.

引导块(Boot Block)及其得映射

BOOT BLOCK是芯片设计厂家在LPC2000系列ARM内部固定的一段代码,用户无法对其修改或删除.代码在芯片复位后首先运行.其功能为 判断运行哪个存储器上的程序\检查用户代码是否有效\判断芯片是否加密\芯片的在应用编程以及在系统编程.

BOOT BLOCK占用了片内FLASH的空间(除LPC2138的BOOT BLOCK不占用FLASH空间),其大小为8KB..但由于各个芯片内部FLASH的空间不同所以BOOT BLOCK的位置也有所不同.,而BOOT BLOCK中的有一些程序是可以被用户所调用的,为了增加用户代码的可移植性则将BOOT BLOCK 程序得映射在内部存储器的最高位置!即接近2G(0x80000000)的地方

注意:部分器件内部虽然没有用户FLASH空间,但是它们仍然存在BOOT BLOCK ,并且复位后首先运行.

***************************************************************************

LPC2000系列ARM芯片启动过程LPC2000处理器启动过程是:Memory Map--Remap--Boot--Remap四步。以LPC2292为例:片内Flash的最高8kB在芯片出厂前写入了Bootload程序和64字节的中断向量表,这是启动过程中重要的内容。

1.Memory Map(不受控制)LPC2292上电复位后,Flash和SRAM映射:SRAM占据0x40000000~0x40003FFF;Flash占据0x0~0x0003FFFF。此过程不受开发人员控制。 Memory Map是一个逻辑概念,是计算机系统在(上电)复位后才建立起来的。Memory Map相当于这样一个数学函数:函数的输入量是地址编码,输出量被寻址单元中的数据。当计算机系统掉电后或复位时,这个数学函数不复存在,只剩下计算机系统中实现这个数学函数的物理基础——电路连接。也可以这样认为:Memory Map是计算机系统(上电)复位时的预备动作,是一个将CPU所拥有的地址编码资源向系统内各个物理存储器块分配的自动过程。

2.Remap(不受控制)Boot Block被整体Remap到了0x7fffe000~0x7fffffff。同时,0x0~0x3f的64字节中断向量区被暂时注销映射关系,由Boot Block中的中断向量代替。此过程不受开发人员控制。此时地址空间分配:除去Remap暂时注销映射关系的64字节,Flash整体占用0x40~0x3ffff。Boot Block占用0x7fffe000~0x7fffffff,Boot Block中断向量表占用0x0~0x3f。事实上,Boot Block中断向量表占

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top