轉自:http://blog.csdn.net/neqelee/article/details/6600737
NOR FLASH
型號:AM29LV160DB/EN29LV160AB/S29AL016D70TFI02
AM29LV160DB是2M位元組的NOR FLASH
nGCS0接晶片nCE,OM0接高電平,OM1接低電平,資料寬度為16位,A0~A19選址1M,共計2M位元組
分配地址為0x0000_0000~0x07ff_ffff,共計128MB
TQ2440的NORFLASH地址為0x0000_0000~0x001f_ffff,共計2MB
nGCS6接SDRAM的nSCS6引腳,分配地址為0x3000_0000~0x37ff_ffff,共計128MB
TQ2440採用64MSDRAM,分配地址為0x3000_0000~0x33ff_ffff,共計64M
OM[1:0]=00 從NAND FLASH啟動 OM[1:0]=01 從NOR FLASH啟動
上電時,程式會從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中,系統會從起始地址是0x00000000的內部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都是從0x00000000地址開始執行的。