关于ARM处理器Remap的理解 (抄的)

为了生活598

为了生活598

2016-01-29 18:34

关于ARM处理器Remap的理解 (抄的),关于ARM处理器Remap的理解 (抄的)
0.什么是Remap 我的理解是:在ROM从0x0用几句指令引导系统之后,把RAM映射到0x0就是Remap。 1.Remap的作用 当ARM处理器上电或者Reset之后,处理器从0x0取指。因此,必须保证系统上电时,0x0处有指令可以执行。所以,上电的时候,0x0地址处必定是ROM或者Flash(NOR)。 但是,为了加快启动的速度,也方便可以更改异常向量表,加快中断响应速度,往往把异常向量表映射到更快、更宽(32bit/16bit)的RAM中。但是异常向量表的开始地址是由ARM架构决定的,必须位于0x0处,因此,必须把RAM映射到0x0。 2.Remap的配置 Remap的实现和ARM处理器的实现相关。 1)如果处理器有专门的寄存器可以完成Remap。那么Remap是通过Remap寄存器的相应bit置1完成的。如Atmel AT91xx 2)如果处理器没有专门的寄存器,但是memory的bank控制寄存器可以用来配置bank的起始地址,那么只要把RAM的起始地址编程为0x0,也可以完成remap。如samsung s3c4510 3)如果上面两种机制都没有,那么Remap就不要做了。因为处理器实现决定了SDRAM对应的bank地址是不能改变的。如Samsung S3c2410. 3.Remap配置前后要做的工作 Remap前后,不同之处就是RAM的位置变了。为了达到Remap的目的,就是加快启动的速度和异常处理速度,一定要初始化异常堆栈和建立异常向量表的。 4.如果象2410那样不能Remap的话怎么办? 2410不是不能Remap吗?为了加快启动速度,可以这样做 1)使用它的NAND boot模式。为什么NAND boot会比较快,那是因为2410里面有块小石头——“SteppingStone”,一块4KB SRAM,它是映射在0x0的。启动程序会自动被copy到这个石头里面。自然异常向量的入口放到这个地方,一样可以达到比NOR boot快的启动、异常响应速度。 2)如果你对NOR Boot情有独衷,那么你只好把你的异常向量的入口copy到SDRAM里面,实现所谓的High Vector 我个人认为,如果中断向量放在rom中的0x0位置,就用不着remap,但是无法再更改中断向量,如果放在ram或其他的存储器中,那么就应该用的remap,因为在系统复位后,对系统环境的初始化是从中断向量中的中断reset开始的,而系统运行必须是从rom的0x0开始的,因此应该利用remap把放中断向量的初始地址映射到rom的0x0处,以使程序进行正确的初始化.这样既可以初始化,有可以使程序运行的快一些,因为毕竟rom的速度是比较慢的. 以上是个人理解,如有错误请大家指正!!!

展开更多 50%)
分享

猜你喜欢

关于ARM处理器Remap的理解 (抄的)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
关于ARM处理器Remap的理解 (抄的)

处理器主频

电脑入门
处理器主频

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

酷睿处理器

电脑入门
酷睿处理器

双核处理器

电脑入门
双核处理器

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

食品废物处理器:爱“吃”垃圾的厨房食物垃圾处理器

生活小常识 家用电器
食品废物处理器:爱“吃”垃圾的厨房食物垃圾处理器

安装CPU处理器教程

电脑入门
安装CPU处理器教程

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Linux指令篇:起始管理--halt

Linux指令篇:起始管理--halt

Photoshop教程:轻松快速将MM模糊照片变清晰

Photoshop教程:轻松快速将MM模糊照片变清晰
下拉加载更多内容 ↓