關於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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章