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++)里面死机了,看下了好象参数传过来是对的,但运行一下就变了?求帮忙?搞 了好久了就是不明白?
[
本帖最后由 cxw3506 于 2012-2-27 14:02 编辑 ]