norflash啟動,nandflash啟動,SDRAM總結
S3C2440的啟動時讀取的第一條指令是在0x00上,分為成nand flash和nor flash上啟動。
nand flash:適合大容量資料存放區,類似硬碟;
nor flash:適合小容量的程式或資料存放區,類似小硬碟;
sdram:主要用於程式執行時的程式儲存、執行或計算,類似記憶體。
Nor flash的有自己的地址線和資料線,可以採用類似於memory的隨機訪問方式,在nor flash上可以直接運行程式,所以nor flash可以直接用來做boot,採用nor flash啟動的時候會把地址映射到0x00上。
Nand flash是IO裝置,資料、地址、控制線都是共用的,需要軟體區控制讀取時序,所以不能像nor flash、記憶體一樣隨機訪問,不能EIP(片上運行),因此不能直接作為boot。
NANDFlash啟動: NANDFlash控制器自動把nandflash儲存空間的前4K載到Steppingstone(內部SRAM緩衝器),並把0x00000000S設定為內部SRAM的起始地址,cpu從內部SRAM的0x00000000開始啟動,這個過程不需要程式幹涉。
(cpu會自動從NAND flash中讀取前4KB的資料放置在片內SRAM裡(s3c2440是soc),同時把這段片內SRAM映射到nGCS0片選的空間(即0x00000000)。cpu是從0x00000000開始執行,也就是NAND flash裡的前4KB內容。因為NAND FLASH連地址線都沒有,不能直接把NAND映射到0x00000000,只好使用片內SRAM做一個載體。通過這個載體把nandflash中大代碼複製到RAM(一般是SDRAM)中去執行)。
程式員要完成的工作是把最核心的代碼放在nandflash的前4K中。4K代碼要完成S3C2440的核心配置以及啟動代碼(U-boot)的剩餘部分拷貝到SDRAM中。
這4K的啟動代碼需要將NANDFlash中的內容複寫到SDRAM中執行。NANDFlash的前4K空間放啟動代碼,SDRAM速度較快,用來執行主程式的代碼。ARM一般從ROM或Flash啟動完成初始化,然後將應用程式拷貝到RAM,然後跳到RAM執行。
NORflash啟動:支援XIP即代碼直接在NOR Flash上執行,無需複製到記憶體中。這是由於NORFlash的介面與RAM完全相同,可隨機訪問任意地址資料。NORflash速度快,資料不易失,可作為儲存並執行起到代碼和應用程式的儲存空間,norflash可像記憶體一樣讀操作,但擦初和寫操作效率很低,遠不及記憶體,一般先在代碼的開始部分使用彙編指令初始化外接的的記憶體組件(外存SDRAM),最後跳到外存中繼續執行。對於小程式一般把它燒到NANDflash中,藉助cpu內部RAM(SRAM)直接雲行。
nor flash被映射到0x00000000地址(就是nGCS0,這裡就不需要片內SRAM來輔助了,所以片內SRAM的起始地址還是0x40000000). 然後cpu從0x00000000開始執行(也就是在Norfalsh中執行)。
。NORflash速度快,資料不易失,可作為儲存並執行起到代碼和應用程式的儲存空間,norflash可像記憶體一樣讀操作,但擦初和寫操作效率很低,價格很昂貴。SDRAM和nandflash的價格比較適中。根
據這些特點,一些人產生了這樣一種想法:外部nandflash中執行啟動代碼,SDRAM中執行主程式。NANDFlash控制器自動把nandflash儲存空間的前4K載到Steppingstone(內部SRAM緩衝器),並把0x00000000S設定為內部SRAM的起始地址,cpu從內部SRAM的0x00000000開始啟動,這個過程不需要程式幹涉。這4K的啟動代碼需要將NANDFlash中的內容複寫到SDRAM中執行。NANDFlash的前4K空間放啟動代碼,SDRAM速度較快,用來執行主程式的代碼。ARM一般從ROM或Flash啟動完成初始化,然後將應用程式拷貝到RAM,然後跳到RAM執行。