1,从NANDFLASH启动时,在ARM上电时,ARM会自动把NANDFLASH前4K的内容拷贝到S3C2440内部SRAM中,同时把SRAM的地址映射到0X00000000。ARM上电后会从SRAM处开始运行。
2,从NOR FLASH启动时,因为NORFLASH接在bank0。地址映射是0X00000000。所以ARM上电后直接运行NORFLASH里的程序。此时S3C2440内部SRAM地址为0X40000000。
3,ARM上电启动都是从0X00000000开始运行。但是对于复位程序入口,ResetEntry的值在ARM上电运行时是0X00000000,在JTAG仿真时是0X30000000。这个值很关键,在拷贝程序时会用到。
硬件上决定开机时从nand flash或nor flash启动,具体配置如下
则,相应的内存映射如下
SROM means ROM or SRAM type memory
关于Figure6-5图,需要做的说明是:
1,在jz2440开发板,SDRAM接在BANK6,它的起始地址恒定是0x30000000。
2,图中所示的列图是芯片认为的内存。即可以认为了是芯片内的内存。
3,对于OM[1:0]=00从nand flash启动,nand flash不能统一地址到内存,上电后芯片自动将nand flash的前4k的内容复制到芯片内的前4k内存,然后芯片开始从0x00000000处运行,从0x00000000开始的拷贝过来的这4k内存内容负责将nand flash中的bootloader复制到芯片地址0x30000000处,继续执行的时候,BANK1,BANK2,,处都是没有接SROM的,因此,马上就会执行0x30000000处的代码。整个过程可以这样说,复制到芯片内部的SRAM4K代码将nand flash里的程序,包括bootloader复制到链接地址(链接地址就是SDRAM地址),然后去顺序执行。
4,对于OM[1:0]=01,10,是从nor flash启动,nor flash接到的是BANK0,它做为了此处的 SROM存在,它的起始地址便是0x00000000,芯片从0地址顺序执行。