TQ2440 開發板的NOR FLASH是16bit數據位寬,選擇從NOR FLASH啓動,所以OM0接VDD,OM1接VSS,NOR FLASH接的是ngcs0,也就是接在BANK0.因爲選擇的NOR FLASH是2Mbyte,所以NOR FLASH的地址範圍是0x0000 0000 --- 0x001f ffff。上電時,程序會從Norflash中啓動,ARM直接取Norflash中的指令運行。
NAND FLASH 以頁爲單位讀寫,要先命令,再給地址,才能讀到NAND的數據。NAND FLASH是接在NAND FLASH控制器上而不是系統總線上,所以沒有在8個BANK中分配地址。如果S3C2440被配置成從Nand Flash啓動, S3C2440的Nand Flash控制器有一個特殊的功能,在S3C2440上電後,Nand Flash控制器會自動的把Nand Flash上的前4K數據搬移到4K內部SRAM中,系統會從起始地址是0x0000 0000的內部SRAM啓動。程序員需要完成的工作,是把最核心的啓動程序放在Nand Flash的前4K中,也就是說,你需要編寫一個長度小於4K的引導程序,作用是將主程序拷貝到SDRAM中運行。
由於Nand Flash控制器從Nand Flash中搬移到內部RAM的代碼是有限的,所以在啓動代碼的前4K裏,我們必須完成S3C2440的核心配置以及把啓動代碼(U-BOOT)剩餘部分搬到RAM中運行,至於將2440當做單片機玩裸跑程序的時候,就不要做這樣的事情,當代碼小於4K的時候,只要下到nand flash中就會被搬運到內部RAM中執行了。
不管是從NOR FLASH啓動還是從NAND FLASH啓動,ARM都是從0x0000 0000地址開始執行的。