OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » littlesoap大侠在么?你写的4510启动代码诠释中有点疑问,能解答一下么

共3条 1/1 1 跳转至

littlesoap大侠在么?你写的4510启动代码诠释中有点疑问,能解答一下么?

菜鸟
2005-06-09 04:06:00    评分


我看了你写的4510启动代码诠释,我觉得大体的思路是在flash中建立中断向量,一开始的代码也在flash中执行,flash地址在0x0处,但是接下来启动代码部分在flash执行中执行了重新映射内存的remap操作,我想不明白的是执行完remap操作后,flash中其余的代码还能继续执行么?flash的地址都变了,怎么执行下去呢?我的理解这段程序是在flash中执行的,但是在

LDR r13, PtInitRemap

语句之后程序执行了remap操作,那么remap之后flash的地址都变了,而其后在flash中还有其他程序,这时候,程序还能走到相应的地方继续执行么?想不明白

原来的程序如下:

?cstartup ; ?cstartup标号 LDR r1, =IntMask ; 屏蔽所有中断服务 LDR r0, =0xFFFFFFFF STR r0, [r1] LDR r0, =0x3FF0000 ; 设置SYSCFG=0x87FFFF90;RAM为SDRAM类型

;设置了8KCache,但unenable;写缓冲disable LDR r1, =0x87FFFF90 STR r1, [r0]

LDR r13, PtInitRemap ; PC入栈,保存remap后PC地址 LDR r0, =SystemInitDataSDRAM LDMIA r0, {r1-r12} ; 将rEXTDBWTH~rSREFEXTCON入栈 LDR r0, =0x3FF0000 + 0x3010 ; 从0x3FF3010开始写 STMIA r0, {r1-r12} ; rEXTDBWTH~rSREFEXTCON出栈写向

EXTDBWTH,ROMCON0~ROMCON5,DRAMCON0~DRAMCON3,REFEXTCON等12个寄存器,实现remap MOV pc, r13 ; PC出栈,恢复正确PC地址 PtInitRemap DCD RemapJump

SystemInitDataSDRAM: DC32 rEXTDBWTH DC32 rROMCON0 DC32 rROMCON1 DC32 rROMCON2 DC32 rROMCON3 DC32 rROMCON4 DC32 rROMCON5 DC32 rSDRAMCON0 DC32 rSDRAMCON1 DC32 rSDRAMCON2 DC32 rSDRAMCON3 DC32 rSREFEXTCON ;--------------------------------------------------------------- RemapJump:

;************执行其他的操作********************




关键词: littlesoap     大侠     写的     启动     代码     诠释    

菜鸟
2005-06-09 04:07:00    评分
2楼
各位大侠帮忙看看,实在想不明白了

菜鸟
2005-06-09 17:32:00    评分
3楼

已经搞明白了,谢谢


共3条 1/1 1 跳转至

回复

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