JZ2440的启动方式有两种,一种是从NOR FLASH中启动,还有一种就是从NAND FLASH中启动。
如果从NOR FLASH启动,CPU会访问NOR FLASH的0地址,而0地址位于BANK0。
如果从NAND FLASH启动,由于NAND FLASH地址和数据共用总线,因此BANK0失效,此时0地址访问片内的SRAM,CPU会把NAND的前4K完全拷贝到片内SRAM,然后从0地址运行。
当2440上电时,NAND的前4K程序拷贝到SRAM中的0地址处,程序首先关闭看门狗,然后初始化存储管理器,最后将SRAM中的程序拷贝到SDRAM中,继续执行。如果NAND中的程序大于4K,那么SDRAM中的程序又会将NAND FLASH中的其它程序拷贝到SDRAM中。
.equ SDRAM_BASE, 0x30000000 copy_steppingstone_to_sdram: @ 将SRAM的4K数据全部复制到SDRAM中去 @ SRAM起始地址为0x00000000,SDRAM中起始地址为0x30000000 mov r1, #0 ldr r2, =SDRAM_BASE mov r3, #4*1024 1: ldr r4, [r1],#4 @ 从SRAM读取4字节的数据,并让源地址加4 str r4, [r2],#4 @ 将此4字节的数据复制到SDRAM中,并让目地地址加4 cmp r1, r3 @ 判断是否完成:源地址等于SRAM的末地址 bne 1b @ 若没有复制完,继续 mov pc, lr @ 返回