关于ARM的内存重映射
2011-11-15 11:11
218 查看
先说说存储器映射:
所谓存储器映射,是指将开发板上不同的存储器映射到开发人员可见的4GB地址空间上,例如,假设开发板上有一个32KB的片内FLASH,16KB的片内SRAM(纯属虚构,如有雷同,纯属巧合),那么,将32KBFLASH映射到地址空间的0x00000000~0x0x00008FFF上,将16KB的SRAM映射到x40000000~0x40004fff上,这样开发者在读写0x00000000~0x00008fff内的地址时,访问的就是片内FLASH,不同开发板的映射规则是开发板厂商事先设定好的。
下面说说什么是重映射:
重映射分为中断向量的重映射和boot的重映射
首先说说中断向量重映射
ARM中中断向量的地址位于0x00000000~0x0000003c(每个向量占4字节,但是为了能够实现4GB范围内的任意跳转,通常在中断向量表后附加一个跳转地址空间,跳转空间占4字节,因此,总的中断向量表大小为64B,不熟悉的自己查查ARM的中断向量吧,不多说了)。注意,这里所说的0x0000000~0x0000003C指的是用户可见的4GB地址空间(也就是上面所说的存储器映射后的地址空间),真正的中断向量位于哪块存贮器的哪个地址上可不一定(不过通常都是为与片内FLASH的底部),因此,需要将不同存储器的中断向量表映射到0x00000000~0x0000003c的地址上。另外,还有一次中断向量的映射,在用户RAM的映射模式(稍后说映射模式)下,需要将中断向量映射到静态RAM的底部(很明显,这样能够提高访问速度)。
下面是boot的重映射
这里所说的boot不是bootloader,而是厂商实现内嵌到板子中的一段代码,用于执行对FLASH的读写,擦除等任务,通常位于片内存储器上,但是不同的板子上存储器的大小不同,为了程序的兼容,通常需要将boottblock重映射到存储空间的顶端。
最后说一下映射模式:
ARM中支持4中映射模式,由存储器控制寄存器控制
四种模式为:
1.boot装载程序模式:在任何复位操作后都会执行Boot装载程序。Bootblock中中断向量映射到存储器的底端以允许处理异常,并在Boot装载过程中使用中断。
2.用户FLASH模式:当在存储器中识别了一个有效的用户程序标识并且Boot装载操作未被执行时,由Boot装载程序启动。中断向量没有重新映射,位于Flash的存储器底部
3.用户Flash:中断向量被映射到静态RAM的底部
4.用户外部模式:中断向量有外部存储器映射到存储空间底部。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/JiangBo_HIT/archive/2009/05/25/4214436.aspx
来源:http://blog.csdn.net/yexinghai/article/details/4251696
所谓存储器映射,是指将开发板上不同的存储器映射到开发人员可见的4GB地址空间上,例如,假设开发板上有一个32KB的片内FLASH,16KB的片内SRAM(纯属虚构,如有雷同,纯属巧合),那么,将32KBFLASH映射到地址空间的0x00000000~0x0x00008FFF上,将16KB的SRAM映射到x40000000~0x40004fff上,这样开发者在读写0x00000000~0x00008fff内的地址时,访问的就是片内FLASH,不同开发板的映射规则是开发板厂商事先设定好的。
下面说说什么是重映射:
重映射分为中断向量的重映射和boot的重映射
首先说说中断向量重映射
ARM中中断向量的地址位于0x00000000~0x0000003c(每个向量占4字节,但是为了能够实现4GB范围内的任意跳转,通常在中断向量表后附加一个跳转地址空间,跳转空间占4字节,因此,总的中断向量表大小为64B,不熟悉的自己查查ARM的中断向量吧,不多说了)。注意,这里所说的0x0000000~0x0000003C指的是用户可见的4GB地址空间(也就是上面所说的存储器映射后的地址空间),真正的中断向量位于哪块存贮器的哪个地址上可不一定(不过通常都是为与片内FLASH的底部),因此,需要将不同存储器的中断向量表映射到0x00000000~0x0000003c的地址上。另外,还有一次中断向量的映射,在用户RAM的映射模式(稍后说映射模式)下,需要将中断向量映射到静态RAM的底部(很明显,这样能够提高访问速度)。
下面是boot的重映射
这里所说的boot不是bootloader,而是厂商实现内嵌到板子中的一段代码,用于执行对FLASH的读写,擦除等任务,通常位于片内存储器上,但是不同的板子上存储器的大小不同,为了程序的兼容,通常需要将boottblock重映射到存储空间的顶端。
最后说一下映射模式:
ARM中支持4中映射模式,由存储器控制寄存器控制
四种模式为:
1.boot装载程序模式:在任何复位操作后都会执行Boot装载程序。Bootblock中中断向量映射到存储器的底端以允许处理异常,并在Boot装载过程中使用中断。
2.用户FLASH模式:当在存储器中识别了一个有效的用户程序标识并且Boot装载操作未被执行时,由Boot装载程序启动。中断向量没有重新映射,位于Flash的存储器底部
3.用户Flash:中断向量被映射到静态RAM的底部
4.用户外部模式:中断向量有外部存储器映射到存储空间底部。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/JiangBo_HIT/archive/2009/05/25/4214436.aspx
来源:http://blog.csdn.net/yexinghai/article/details/4251696
相关文章推荐
- 关于ARM的统一编制与内存映射机制
- 关于ARM的内存重映射
- arm嵌入式开发关于寻址、内存重映射和启动之间的关系(ARM学习1)
- 关于ARM的统一编制与内存映射机制
- 关于内存映射文件技术处理大文件的读写
- linux arm的高端内存映射
- linux内存布局及页面映射(x86架构!与arm在某些内存使用上有差异)
- 关于双核通信通过共享内存交换数据ARM端程序的学习
- 关于Windows编程中进程虚拟地址空间/虚拟内存及内存映射方面的资料
- 关于存储器映射、存储器重映射、内存映射、地址映射、地址转换等计算机专业名词详解
- 关于Android4.0 emulator-arm.exe-应用程序错误,内存不能为"read"问题解决方法
- 朱老师ARM裸机学习笔记(二):S5PV210的内存映射
- 关于Android4.0 emulator-arm.exe-应用程序错误,内存不能为"read"问题解决方法
- 关于用内存映射文件加、解密大文件的问题,谢谢!
- 关于内存映射文件技术处理大文件的读写
- arm内存映射
- 关于ARM地址映射的理解
- 关于Android4.0 emulator-arm.exe-应用程序错误,内存不能为"read"问题解决方法
- 【转】关于Android4.0 emulator-arm.exe-应用程序错误,内存不能为"read"问题解决方法
- arm内存重映射 转