2440自带的RAM是:16K Instruction cache + 16K data cache + 4K Boot Internal SRAM。但是我们能用到的只有4K Boot Internal SRAM;2440不自带ROM。
2440的启动方式有两种,norflash和nandflash,怎么选择?
OM[1:0] = 01,10为norflash启动,分别对应16bit和32bit,OM[1:0] = 00为nandflash启动。
两种启动方式:先贴张图。
可以观察到,s3c2440总共有8个内存banks,6个内存bank可以当作ROM或者SRAM来使用,留下的2个bank除了当作ROM 或者SRAM,还可以用SDRAM,7个bank的起始地址是固定的 还有一个灵活的bank的内存地址,并且bank大小也可以改变。
Norflash启动:选择从NOR FLASH启动,上电,nGCS0控制的bank0直接连接了nor flash,S3C2440芯片就会去运行nor flash上地址为0x0处的指令。读nor flash可以像读内存那样读,但是要用额外的命令向nor flash写入数据。如果nor flash像内存那样读和那样写,那nor flash完全可以被内存所替代。
Nandflash启动:CPU上点后,首先会通过几个引脚的电平确定Nandflash的类型,从而读取flash,cpu会自动从NAND flash中读取前4KB的数据放置在片内SRAM里(s3c2440是soc),同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000)。cpu是从0x00000000开始执行,也就是NAND flash里的前4KB内容。因为NAND FLASH连地址线都没有,不能直接把NAND映射到0x00000000,只好使用片内SRAM做一个载体。通过这个载体把nandflash中大代码复制到RAM(一般是SDRAM)中去执行。
大概流程: