copy_code ; 代码拷贝开始符号
mov r0, #0x0 ; R0中为数据开始地址 (ROM数据保存在0地址开始处)
ldr r1, =|Image$$RO$$Base| ; R1中存放RO输出域运行地址,
; 该值由符号变量Image$$RO$$Base取得
ldr r2, =|Image$$ZI$$Limit| ; R2中存放ZI输出域结束地址,
; 该值由符号变量Image$$ZI$$Limit取得
sub r2, r2, r1 ; R2 = R2 - R1,得出待拷贝数据长度
bl CopyCode2Ram ; 将R0,R1,R2三个参数传递给CopyCode2Ram函数执行拷贝
int isBootFrmNORFlash(void)
{
volatile unsigned long *pdw = (volatile unsigned long *)0;
unsigned long dwVal;
dwVal = *pdw;
*pdw = 0x12345678;
if (*pdw != 0x12345678)
{
return 1;
} else {
*pdw = dwVal;
return 0;
}
}
int CopyCode2Ram(unsigned long start_addr, unsigned char *buf, int size)
{
unsigned long *pdwDest;
unsigned long *pdwSrc;
unsigned long i;
int size1 = size;
if (isBootFrmNORFlash())
{
pdwDest = (unsigned long *)buf;
pdwSrc = (unsigned long *)start_addr;
/* copy code from NOR Flash to RAM */
for (i = 0; i < size1 / 4; i++)
{
pdwDest = pdwSrc;
}
return 0;
} else {
return 0;
}
}
上面是用c 写的复制代码到SDRAM 可是为什么烧进去的时候可以用,面调试时用不了呢?RO设为0x33ff0000,调试就在后面这个for (i = 0; i < size1 / 4; i++)里面死机了,看下了好象参数传过来是对的,但运行一下就变了?求帮忙?搞 了好久了就是不明白?