这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » Remap命令是什么,Reboot是如何运作的

共2条 1/1 1 跳转至

Remap命令是什么,Reboot是如何运作的

助工
2014-11-18 17:11:42     打赏
Remap命令是什么,Reboot是如何运作的

工程师
2014-11-18 17:23:56     打赏
2楼
重新启动后,AT91内部RAM的地址是:0x300000. 片选线地址线:0.当Remap命令执行时,外部存储器在0号片选寄存器中用户定义的地址处产生地址转换。 注意:如果不是以一个连续的值写到该寄存器,将会产生内部冲突。内部RAM将会在0号地址线处产生地址转换。
注意,在任何时候,无论是内部RAM还是外部引导存储器都不能视为处在2个不同的地址。
有2种方法可以执行Remap命令:
第一种就是标准方法,将引导存储器(连接到CS0)复制到内部RAM, 这样就可以安全的执行Remap命令。

第二种方法就是使用ARM内核的管道法。
按照下面代码操作,可以执行Remap命令,而无需复制任何代码。这个例子是使用AT91程序库中的文件,该文件的路径是Library\Init\in_reset.s"
复制存储器控制器的映像,指令代码是:
ldr r10, PtInitTableEBI 
mov r10, r10, LSL #12 
mov r10, r10, LSR #12
装载地址并跳转到:
ldr r12, PtInitRemap 
ldr r12, PtInitRemap 
将片选寄存器的映像复制到存储器控制器,然后执行
remap
ldmia r10!, {r0-r9,r11} 
stmia r11!, {r0-r9} 
跳转到ROM 的新地址,然后执行下面的指令代码:
mov pc, r12 
PtInitTableEBI
DCD InitTableEBI 
PtInitRemap
DCD InitRemap 
PtInitVector
DCD __main 
程序开始执行
InitRemap

在这种情况下, "MOV pc, r12"指令从在0号地址线产生地址转换(在前面"STMIA"执行前)的外部引导存储器中取出, 然后执行"MOV pc, lr"指令, 该指令执行完毕后,再跳转到链接地址处的外部引导ROM.

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]