ARM7TDMI的存储器及其地址映射

来源:百度文库 编辑:神马文学网 时间:2024/04/29 00:32:48

1.ARM7TDMI的存储器

        ARM7TDMI的存储器可分为内部存储器和外部存储器。

(1)内部存储器:又可分为片内FLASH程序存储器和片内静态RAM。

     @片内FLASH程序存储器

     LPC2000系列除了LPC2220/2210/2290(最后位为0的无片内Flash)外,其他都带有容量不等的片内Flash,片内Flash可用作代码和数据的存储。片内Flash通过128位宽度的总线(局部总线)与ARM内核相连,具有很高的速度,加上存储器加速功能,可以在Flash直接运行程序,而无需把程序复制到RAM中运行。

      对片内FLASH编程有三种方法实现:

     a.通过内置JTAG接口;

     b. 通过在系统编程(ISP),使用UART0通信;

     c.通过在应用编程(IAP),使用此法可实现用户程序运行时对Flash进行擦除或编程,这样为数据存储和现场固件的升级带来了极大的灵活性。

    @静态RAM

     LPC2000系列ARM的片内RAM为静态RAM(SRAM),芯片容量根据不同的芯片有所不同,它们主要用作代码或数据的存储。

(2)片外存储器

      在CPU外部扩展连续的存储器芯片称为片外存储器。

     LPC2200系列ARM芯片具备符合ARM公司的PL090标准的外部存储器接口,通过它可连接8位,16位,32位的片外存储器。最多可扩展4个BANK的存储器组,每个存储器组的寻址范围最大为16M字节。而实际应用中使用16位总线宽度性价比最高。

     LPC2100系列ARM芯片不具备这种总线接口,只能通过片内外设来模拟总线时序来操作片外存储器。

      对于外扩的SRAM只需一条LDR(STR)指令即可进行数据的读(写)操作而对于外扩的Flash(NOR型),可使用LDR指令读取数据,但不能使用STR指令直接写数据,需要根据Flash芯片的写操作时序进行控制,实现FLASH的擦除编程。而如果要进行程序的烧写的话,需要在CPU内运行一个装载程序(loader程序,由用户自行编写),把从串口接受的代码数据写入到片外Flash中。

2.存储器的地址映射

      ARM处理器产生的地址叫虚拟地址,把这个虚拟地址按照某种规则转换到另一个物理地址去的方法称为地址映射。这个物理地址表示了被访问的存储器的位置。它是一个地址范围,该范围内可以写入程序代码。

      为存储器分配地址的过程称为存储器映射。
     通过地址映射的方法将各存储器分配到特定的地址范围后,这时用户所看见的存储器分布为存储器映射。复位后从用户角度看整个地址空间映射如下:

      AHB为先进的高性能总线,VPB为VLSI外设总线,外设区域都为2M字节,可各分配128个外设。每个外设空间的规格都为16K字节,这样就简化了每个外设的地址译码。

     AHB外设是挂接在芯片内部AHB总线上的外设部件,具有较高的速度,如向量中断控制器部件和外部存储器控制器部件等;而VPB外设是挂接在芯片内部VPB总线(由AHB总线转换而来)上的外设部件,速度通常比AHB外设要慢,如GPIO部件和UART部件等。ARM处理器访问这些外设的控制寄存器时就像访问内存一样,是由LDR(STR)指令即可完成读(写),也就是外设的控制寄存器与存储器是统一编址的。所有寄存器不管规格大小,地址都是字对齐。不可能对一个寄存器的最高字节执行单独的读或写操作。

     小知识:向量中断控制器的寄存器没有按顺序放在AHB外设中,而是固定在地址的最高端,是因为这里离异常向量表最近(地址0x00000000与0xFFFFFFFF可认为是彼此相邻的),在发生IRQ或FIQ异常时,只需一条指令即可访问到向量中断控制器的相关寄存器。

      存储器中有一部分保留地址和一部分未分配区域的地址。访问这两部分地址,ARM处理器将产生预取指中止或数据中止异常。

     保留的区域有:

      a.片内FLASH中未分配的地址;

     b.片内RAM与外部存储器之间保留给片内存储器的地址空间;

     c.外部存储器中无法用外部存储器控制器(EMC)来访问的地址空间;

      d.AHB和VPB空间保留的区域。

     未分配的区域包括AHB和VPB外设空间中未分配的区域。