|
回复人:yzx1983(捕风捉影) ( 一级(初级)) 信誉:100 2007-5-15 23:51:45 得分:0
?
存储器映射地址确实是可以更改的,例如arm芯片就是典型的例子。
在arm 芯片系统中,起始时刻flash被映射到0地址开始的空间中(bootloader就在flash中)。之后由于中断表要放在0地址处,因此必须把 sdram给映射到0地址处,同时把flash地址“挪”到高地址去。在设计这个过程的时候,如果不想复制启动映象,还要用到arm的三级流水线的特性才行。
就是这样的,我的ARM可以指定FLASH,SDRAM为任意0-ffe00000内的地址
stmia r0, {r1,r6}
mov pc, lr
ldr r0, =xxxx
你说要用的ARM的三级流水线的特性也是的。就是我一句 STMIA r0, {r1,r6}完成所有地址的重新映射后,下句话就是 mov pc, lr(lr是前面计算好的重新映射后的一个地址,也就是ldr r0,=xxx),照说mov pc, lr已经被预取了,应该被正确执行才对.但是事实是PC的值并没有被改变.
现在我将stmia r0, {r1-r6}, mov pc, lr 锁到cache中就可以了. |
|