您的位置:首页 > 其它

arm嵌入式开发关于寻址、内存重映射和启动之间的关系(ARM学习1)

2011-09-06 10:15 447 查看
1、存储器的分类,ARM分为片内和片外存储器,分布于4G的内存地址空间内。片外存储器可通过4个band进行扩展,当片外存储器扩展的是Flash(NOR)时,不能通过STR进行写操作,需要专门的代码进行烧写Flash

2、存储器重映射。存储器重映射用于将不同地址映射到同一个地址。

存储器中的异常向量重映射:ARM发生异常后需要跳转到0x0000~0X001C的异常向量表和0X0020~0X003F的跳转地址表。通过存储器的重映射,将不同启动地址(Boot Block模式、用户片内Flash模式、用户片内Ram模式,用户外部存储器模式)映射到这个区域。同时被映射后,片内Flash的0X0000~0X003F地址空间将无法被访问。实际上这段区域除了“用户片内Flash”模式外,其他模式是无法访问这段区域的。

存储器映射控制(4.4.8):存储器映射是通过MEMMAP,0XE01F C040(2位),存储器映射控制器选择从Flash Boot Block/用户Flash/Ram中读取中断向量。

MAP [1:0] 00:从BOOT Block中重映射

01:用户Flash模式,中断向量不重新映射

10:用户Ram模式,中断向量从静态Ram中重新映射

11:用户外部存储器模式,中断向量从外部存储器进行映射

启动哪个存储器上的代码:BOOT Blockg根据BOOT0 BOOT1引脚,来决定启动片内还是片外存储器上的代码。

BOOT[1:0] =11 启动片内Flash存储器 其他的情况分别启动8/16/32位的CS0控制的片外存储器。

存储映射控制器MAP启动时如何控制: 芯片刚复位时,为0,首先运行BOOT Block程序,该程序根据芯片上特定引脚的值来改变MEMMAP的值。程序检查P0.14引脚的状态和用户异常向量表(是否有效),设置=1片内Flash启动或者片外存储器启动(心得:没有片内SRAM启动的情况)。

总结:BOOT引脚,决定了从片外还是片内启动(可能就是那个硬件上可拨的选项),然后BOOT Block决定映射方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐