2022年2022年关于arm处理器remap的理解和实现 .pdf





《2022年2022年关于arm处理器remap的理解和实现 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年关于arm处理器remap的理解和实现 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关于 arm 处理器 remap 的理解和实现2008 年 06 月 01 日 星期日11:51 0.我的理解是:在ROM 从 0 x0 用几句指令引导系统之后,把RAM 映射到 0 x0 就是 Remap 。1.Remap 的作用当 ARM 处理器上电或者Reset 之后,处理器从0 x0 取指。因此,必须保证系统上电时,0 x0 处有指令可以执行。所以,上电的时候,0 x0 地址处必定是ROM 或者 Flash (NOR )。但是,为了加快启动的速度,也方便可以更改异常向量表,加快中断响应速度,往往把异常向量表映射到更快、更宽( 32bit/16bit )的 RAM 中。但是异常向量表的开
2、始地址是由ARM 架构决定的,必须位于0 x0处,因此,必须把RAM 映射到 0 x0 。2.Remap 的配置) 如果处理器有专门的寄存器可以完成Remap 。 那么 Remap 是通过 Remap 寄存器的相应bit 置 1 完成的。如 Atmel AT91xx )如果处理器没有专门的寄存器,但是memory 的 bank 控制寄存器可以用来配置bank 的起始地址,那么只要把 RAM 的起始地址编程为0 x0 ,也可以完成remap 。如)如果上面两种机制都没有,那么Remap 就不要做了。因为处理器实现决定了SDRAM 对应的 bank 地址是不能改变的。如配置前后要做的工作前后,不同
3、之处就是RAM 的位置变了。为了达到Remap 的目的,就是加快启动的速度和异常处理速度,一定要初始化异常堆栈和建立异常向量表的。4. 1)使用它的NAND boot模式。为什么NAND boot会比较快,那是因为2410 里面有块小石头 SteppingStone,一块 4KB SRAM ,它是映射在0 x0 的。启动程序会自动被copy 到这个石头里面。自然异常向量的入口放到这个地方,一样可以达到比NOR boot 快的启动、异常响应速度。)如果你对 NOR Boot情有独衷,那么你只好把你的异常向量的入口copy 到 SDRAM 里面,实现所谓的High Vector 存储器地址重映射是
4、当前很多先进控制器所具有的功能。在上一节中已经提到了 0 地址处存储器重映射的例子,简而言之,地址重映射就是可以通过软件配置来改变一块存储器物理地址的一种机制或方法。当一段程序对运行自己的存储器进行重映射的时候,需要特别注意保证程序执行流程在重映射前后的承接关系。下面是一种典型的存储器地址重映射情况:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 系统上电后的缺省状态是0 地址上放有ROM ,这块 ROM 有两个地址:从0 起始
5、和从 0 x10000 起始,里面存储了初始化代码。当进行地址remap 以后,从 0 起始的地址被定向到了RAM 上, ROM 则只保留有唯一的从0 x10000 起始的地址了。如果存储在 ROM 里的 Reset_Handler 一直在 0 0 x4000 的地址上运行,则当执行完 remap 以后,下面的指令将从RAM 里预取,必然会导致程序执行流程的中断。根据系统特点,可以用下面的办法来解决这个问题:(1) 上电后系统从0 地址开始自动执行,设计跳转指令在remap 发生前使PC 指针指向 0 x10000 开始的 ROM 地址中去,因为不同地址指向的是同一块ROM ,所以程序能够顺利
6、执行。(2) 这时候 0 - 0 x4000 的地址空间空闲,不被程序引用,执行remap 后把 RAM 引进。因为程序一直在0 x10000 起始的 ROM 空间里运行, remap 对运行流程没有任何影响。(3) 通过在 ROM 里运行的程序,对RAM 进行相应的代码和数据拷贝,完成应用程序运行的初始化。下面是一段实现上述步骤的例程:ENTRY ;启动时,从0 开始,设法跳转到 真 的 ROM 地址( 0 x10000 开始的空间里)LDR pc, =start ;insert vector table here Start ;Begin of Reset_Handler ; 进行 rem
7、ap 设置LDR r1, =Ctrl_reg ;假定控制 remap 的寄存器LDR r0, r1 ORR r0, r0, #Remap_bit ;假定对控制寄存器进行remap 设置STR r0, r1 ;接下去可以进行从ROM 到 RAM 的代码和数据拷贝名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 除此之外,还有另外一种常见的remap 方式,如下图:原来 RAM 和 ROM 各有自己的地址,进行重映射以后RAM 和 R
8、OM 的地址都发生了变化,这种情况下,可以采用以下的方案:(1) 上电后,从0 地址的 ROM 开始往下执行。(2) 根据映射前的地址,对RAM 进行必要的代码和数据拷贝。(3) 拷贝完成后,进行remap 操作。(4) 因为 RAM 在 remap 前准备好了内容,使得PC 指针能继续在RAM 里取到正确的指令。不同的系统可能会有多种灵活的remap 方案,根据上面提到的两个例子,可以总结出最根本的考虑是:要使程序指针在remap 以后能继续往下得到正确的指令。实例分析:基于S3C4510B系统的启动流程及REMAP1 S3C4510B简介S3C4510B ,基于以太网,16/32 位 RI
9、SC 微处理器。芯片部集成了8KB 的 Cache/SRAM和 Ethernet 控制器,片外可扩展ROM 、Flash 、SDRAM 等存储芯片。S3C4510B 芯片内部没有程序存储器,所有程序都被存储在片外扩展的ROM 和 Flash 中。开始启动时,存有启动代码的ROM 或 Flash 将被映射为0 x00 地址,系统从此开始运行。但在实际应用中,为提高系统的实时性,加快代码的执行速度,系统启动后程序往往要被搬移到RAM 中,因为 RAM 的存取速度要比ROM 快得多, 这样大大提升系统的性能。由于 S3C4510B芯片中的异常中断入口地址被固定在0 x00 开始的 8 个字中,系统只
10、能将地址空间重新分配,把RAM 映射到 0 x00 地址处,这正是Remap 的原因所在。S3C4510B 内部有几个特殊寄存器,用于实现地址空间和芯片内外存储介质的映射。这几个寄存器的简介如下:SYSCFG :设置特殊寄存器的起始地址和片内SRAM 的起始地址。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - EXTDBWTH :设置各 Bank 寄存器所映射芯片的数据线宽度。ROMCON0 ROMCON5 :设置系统内片扩展R
11、OM 和 Flash 的起始和终止地址。DRAMCON0 DRAMCON3 :设置系统内片外扩展RAM 的起始和终止地址。S3C4510B 芯片内特殊寄存器段的物理地址为0 x3ff0000 ,各特殊寄存器的偏移地址详见S3C4510B的技术手册。2S3C4510B系统中 Remap 的实现地址空间的重新分配,与处理器的硬件结构紧密相关。总体来说,32 位系统中的地址重映射机制可以分为两种情况:一类是处理器内部专门的寄存器可以完成Remap ,这样只需将Remap 寄存器的相应位置1,由硬件逻辑来完成地址的重新映射,如AtmelAT91xx系列;另一类没有专门的Remap 控制寄存器,需要重新
12、改写处理器内部用于控制Memory 起止地址的 Bank 寄存器,来实现Remap 过程。 S3C4510B属于第二种情况。2.1 硬件系统结构及地址分配假设系统是以Samsung 公司给出的测试板为参考建立的,其中ROM 的容量为 512KB ,8 位数据总线,Remap 前的地址范围为0 x0000000 0 x0100000,Remap后的地址范围为0 x1000000 0 x1100000 ; RAM的容量为 16MB ,32 位数据总线, Remap 前的地址范围为0 x0100000 0 x100000,Remap后的地址范围为 0 x0000000 0 x1000000 ;Fla
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年关于arm处理器remap的理解和实现 2022 年关 arm 处理器 remap 理解 实现

限制150内