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决定映射方式。
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决定映射方式。
相关文章推荐
- 关于 arm的中断系统 分类: 嵌入式开发学习 2011-04-11 19:30 560人阅读 评论(0) 收藏
- 嵌入式学习方法-----关于arm+linux编程开发的学习心得
- Android开发学习笔记(三):关于fragment_main.xml、activity_main.xml与主函数之间的关系
- Hibernate注解开发(第三部分—对象关系映射既表与表之间关系映射)
- <ARM嵌入式开发学习>我的第一个驱动程序-hello world
- 朱老师ARM裸机学习笔记(二):S5PV210的内存映射
- 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)
- 8月18日在线直播:怎样学习ARM嵌入式开发?
- 嵌入式开发四:arm嵌入式移植中关于machine ID的修改
- ios学习之 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
- 关于ARM的统一编制与内存映射机制
- 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)
- 【嵌入式Linux学习七步曲之第二篇 ARM+Linux开发环境】在AT91RM9200上通过nfs调试linux程序
- 关于arm平台的嵌入式学习再度分析
- 关于hibernate中持久化类之间的映射关系的详解(一)
- arm-linux-gcc安装 和 环境变量设置 分类: 嵌入式开发学习 2011-04-13 11:34 10197人阅读 评论(1) 收藏
- 嵌入式开发之信号采集同步---VSYNC和HSYNC的作用以及它们两者之间的关系
- 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)
- 关于嵌入式学习和开发需要注意的十三大法则
- 【ARM-Linux开发】ARM嵌入式设备Linux系统启动步骤和方式