一个具体应用可能存在的物理存储器 |
|
不同芯片内部存储器分布 |
|
片内Flash编程方法: (1).通过内置JTAG接口;(2).通过在系统编程(ISP),使用UART0通信;(3).通过在应用编程(IAP);
|
|
片外Flash编程方法(LPC2200): 在CPU上运行一个装载程序(Loader,一般由用户编写),该程序通过串口接收要烧写的数据,然后擦除编程Flash。
|
|
片内SRAM的写操作 SRAM控制器包含一个回写缓冲区,它总是保存着软件发送到SRAM的最后一个字数据。该数据只有在软件请求下一次写操作时才写入SRAM。如果发生芯片复位,实际的SRAM内容将不会反映最近一次的写操作。
|
|
存储器映射基本概念 ARM处理器产生的地址叫虚拟地址,把这个虚拟地址按照某种规则转换到另一个物理地址去的方法称为地址映射。这个物理地址表示了被访问的存储器的位置。它是一个地址范围,该范围内可以写入程序代码。 通过地址映射的方法将各存储器分配到特定的地址范围后,这时用户所看见的存储器分布为存储器映射。 芯片复位后用户看见的地址空间
|
|
AHB和VPB AHB(先进的高性能总线)和VPB(VLSI外设总线)外设区域都为2M字节,可各分配128个外设。每个外设空间的规格都为16K字节,这样就简化了每个外设的地址译码。 注意:AHB和VPB外设区域中不管是字还是半字,都是一次性访问。例如不可能对一个字寄存器的最高字节执行单独的读或写操作 外设存储器映射
|
|
|
AHB外设映射 |
|
Boot lock的映射地址安排 |
|
存储器重新映射 存储器重新映射是将复位后用户所见的存储器中部分区域,再次映射到其它的地址上。 对于Philips的LPC系列ARM微控制器,存储器重新映射区域一共为64字节,分别为异常向量区(32字节)和紧随其后的32字节。存储器重新映射的方法允许在不同模式下处理中断,重新映射的存储器区域在地址0x00000000~0x0000003F处。存储器重新映射的控制见“存储器映射控制”小节。 使用存储器重新映射的原因 (1)使Flash存储器中的FIQ处理程序不必考虑因为重新映射所导致的存储器边界问题 (2)用来处理代码空间中段边界仲裁的SRAM和Boot Block向量的使用大大减少 (3)为超过单字转移指令范围的跳转提供空间来保存常量 预取指中止和数据中止异常 如果试图访问一个保留地址或未分配区域的地址,ARM处理器将产生预取指中止或数据中止异常。
|
|
注意: 只有在试图执行从非法地址取指的指令时,ARM才会将预取指中止标志与相关的指令(没有意义的指令)一起保存到流水线并对中止进行处理。当代码在非常靠近存储器边界执行时,防止了由预取指所导致的意外中止。 预取指中止和数据中止异常举例
|
|
|
异常向量表 对于每一个异常事件,都有一个与之相对应的处理程序,它们是关联在一起的,并以一张一维表的格式存储在存储器的固定单元中。这张指定了各异常中断及其处理程序的对应关系的表,称为异常向量表。
|
|
位于启动代码中的异常向量表 什么是启动代码? 一般在32位ARM应用系统中,大多数采用C语言进行软件编程。但是在运行应用代码前需要进行系统初始化。 常用一个汇编文件作启动代码,它可以实现异常向量表定义、堆栈初始化、系统变量初始化、中断系统初始化、I/O初始化、外围部件初始化、地址重映射等操作。
|
|
|
-
标签: