aazhou2835 发表于 2011-9-20 09:37:31

求助,有关nandflash操作,程序能在SDRAM中运行,但是下载到flash中就运行不起来了

俺才学这个不久,我用的是TQ2440。写程序的时候没动2440init.s和nand.c中的代码。就是在main.c中加了nandflash的操作,调试和下载到SDRAM中都能运行,就是烧写到nand后,就运行不了了。什么反映都没有,像是nand中的代码没有拷贝到SDRAM中。
      2440init.s中
         ldr        r0, =BWSCON
        ldr        r0,
        ands        r0, r0, #6                ;OM != 0, NOR FLash boot
        bne        copy_proc_beg                ;do not read nand flash
        adr        r0, ResetEntry                ;OM == 0, NAND FLash boot
        cmp        r0, #0                        ;if use Multi-ice,
        bne        copy_proc_beg                ;do not read nand flash for boot
        ;nop
;===========================================================
nand_boot_beg
        [ {TRUE}
                bl RdNF2SDRAM
        ]

        ldr        pc, =copy_proc_beg
;===========================================================
copy_proc_beg
        adr        r0, ResetEntry
        ldr        r2, BaseOfROM
        cmp        r0, r2
        ldreq        r0, TopOfROM
        beq        InitRam       
        ldr r3, TopOfROM
0       
        ldmia        r0!, {r4-r7}
        stmia        r2!, {r4-r7}
        cmp        r2, r3
        bcc        %B0
       
        sub        r2, r2, r3
        sub        r0, r0, r2                               
               
InitRam       
        ldr        r2, BaseOfBSS
        ldr        r3, BaseOfZero       
0
        cmp        r2, r3
        ldrcc        r1, , #4
        strcc        r1, , #4
        bcc        %B0       

        mov        r0,        #0
        ldr        r3,        EndOfBSS
1       
        cmp        r2,        r3
        strcc        r0, , #4
        bcc        %B1
       
        ldr        pc, =%F2                ;goto compiler address
2
       
;        [ CLKDIV_VAL>1                 ; means Fclk:Hclk is not 1:1.
;        bl        MMU_SetAsyncBusMode
;        |
;        bl MMU_SetFastBusMode        ; default value.
;        ]
       
这段是拷贝吧···
RdNF2SDRAM代码
void RdNF2SDRAM( )
{
        U32 i;
        U32 start_addr = 0x0;
        unsigned char * to = (unsigned char *)0x30000000;
        U32 size = 0x100000;
        rNF_Init();
        switch(rNF_ReadID())
        {
                case 0x76:
                        for(i = (start_addr >> 9); size > 0; )
                        {
                                rSB_ReadPage(i, to);
                                size -= 512;
                                to += 512;
                                i ++;
                        }
                        break;
                case 0xf1:
                case 0xda:
                case 0xdc:
                case 0xd3:
                        for(i = (start_addr >> 11); size > 0; )
                        {
                                rLB_ReadPage(i, to);
                                size -= 2048;
                                to += 2048;
                                i ++;
                        }
                        break;
        }
}               

求 高手指点,谢谢了!!!

aazhou2835 发表于 2011-9-20 09:47:24

ourdev_677909NW3PSS.zip(文件大小:591K) (原文件名:nand4.zip)
这是那工程文件

aazhou2835 发表于 2011-9-20 11:04:01

找到原因了好像是链接 顺序 不对

fengtao612 发表于 2011-9-21 22:49:43

mark
页: [1]
查看完整版本: 求助,有关nandflash操作,程序能在SDRAM中运行,但是下载到flash中就运行不起来了