cpu会自动从NAND flash中读取前4KB的数据放置在片内SRAM里(s3c2440是soc),同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000)。cpu是从0x00000000开始执行,也就是NAND flash里的前4KB内容。因为NAND FLASH连地址线都没有,不能直接把NAND映射到0x00000000,只好使用片内SRAM做一个载体。通过这个载体把nandflash中大代码复制到RAM(一般是SDRAM)中去执行
片选信号
arm中最大可以有1G的存储器空间,它们是映射在最低的1G空间中。就是:0x00000000 - 0x3fffffff ,而arm又把这一快空间分成了8个bank,每bank是128M,所以它们的起始地址分别是:0x00000000, 0x08000000,0x10000000,0x18000000,0x20000000,0x28000000,0x30000000,0x3xxxxxxx,最后一个bank有些特殊,它的起始地址是可变的,由倒数第二个决定。从0x40000000 - 0x40000fff 这4KB空间就是arm自带的4KB内存,它是静态的,SRAM。它的的用处就是启动系统。在启动时由arm的内部电路把nand的前4KB空间的内容拷贝到开始说的那个静态的SRAM中。就可以执行了。注意,它只有4KB,所以在我们在nand中的uboot是分为两部分的,第一部分只有4KB,它主要完成的工作是硬件初始化,以及拷贝到第二部分并执行。在第二部分才是更为详细的工作。0x40001000 - 0x47ffffff是没有用到的。从0x48000000 - 0x60000000 就是IO的映射空间。剩下的都没有用到。