主题 : 复制 NOR Flash 代码到SDRAM C语言 复制链接 | 浏览器收藏 | 打印
强者不一定是胜者,胜者不一定是强者!    奇迹总是出现在那些永不放弃的 ..
级别: 新手上路
UID: 52150
精华: 0
发帖: 15
金钱: 80 两
威望: 16 点
综合积分: 30 分
注册时间: 2011-07-13
最后登录: 2013-01-07
楼主  发表于: 2012-02-27 11:24

 复制 NOR Flash 代码到SDRAM C语言

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++)里面死机了,看下了好象参数传过来是对的,但运行一下就变了?求帮忙?搞 了好久了就是不明白?
强者不一定是胜者,胜者不一定是强者!    奇迹总是出现在那些永不放弃的 ..
级别: 新手上路
UID: 52150
精华: 0
发帖: 15
金钱: 80 两
威望: 16 点
综合积分: 30 分
注册时间: 2011-07-13
最后登录: 2013-01-07
1楼  发表于: 2012-02-28 21:21
怎么没人回答下呢
级别: 侠客
UID: 66166
精华: 0
发帖: 83
金钱: 385 两
威望: 83 点
综合积分: 166 分
注册时间: 2012-03-27
最后登录: 2012-04-29
2楼  发表于: 2012-04-21 11:51
正在找。。。。。。。。。。。。。