1. 程式人生 > >norflash啟動和nandflash啟動

norflash啟動和nandflash啟動

S3C2440的啟動時讀取的第一條指令是在0x00上,分為成nand flash和nor flash上啟動。

   1)nand flash:適合大容量資料儲存,類似硬碟;

   2)nor flash:適合小容量的程式或資料儲存,類似小硬碟;

   3)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一般從ROMFlash啟動完成初始化,然後將應用程式拷貝到RAM,然後跳到RAM執行。

NORflash啟動:支援XIP即程式碼直接在NOR Flash上執行,無需複製到記憶體中。這是由於NORFlash的介面與RAM完全相同,可隨機訪問任意地址資料。NORflash

速度快,資料不易失,可作為儲存並執行起到程式碼和應用程式的儲存器,norflash可像記憶體一樣讀操作,但擦初和寫操作效率很低,遠不及記憶體,一般先在程式碼的開始部分使用匯編指令初始化外接的的記憶體部件(外存SDRAM),最後跳到外存中繼續執行。對於小程式一般把它燒到NAND Flash中,藉助cpu內部RAMSRAM)直接執行。

       Nor Flash被對映到0x00000000地址(就是nGCS0,這裡就不需要片內SRAM來輔助了,所以片內SRAM的起始地址還是0x40000000). 然後cpu從0x00000000開始執行(也就是在Norfalsh中執行)。

      NORflash速度快,資料不易失,可作為儲存並執行起到程式碼和應用程式的儲存器,norflash可像記憶體一樣讀操作,但擦初和寫操作效率很低,價格很昂貴。SDRAMnandflash的價格比較適中。根據這些特點,一些人產生了這樣一種想法:外部nandflash中執行啟動程式碼,SDRAM中執行主程式。NANDFlash控制器自動把nandflash儲存器的前4K載到Steppingstone(內部SRAM緩衝器),並把0x00000000S設定為內部SRAM的起始地址,cpu從內部SRAM的0x00000000開始啟動,這個過程不需要程式干涉。這4K的啟動程式碼需要將NANDFlash中的內容複製到SDRAM中執行。NANDFlash的前4K空間放啟動程式碼,SDRAM速度較快,用來執行主程式的程式碼。ARM一般從ROMFlash啟動完成初始化,然後將應用程式拷貝到RAM,然後跳到RAM執行。