2440 nand flash和nor flash上启动
S3C2440的啟動時分為成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。(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速度較快,用來執行主程序的代碼。?
NORflash啟動:支持XIP即代碼直接在NOR Flash上執行,無需復制到內存中。這是由于NORFlash的接口與RAM完全相同,可隨機訪問任意地址數據。NORflash速度快,數據不易失,可作為存儲并執行起到代碼和應用程序的存儲器,nor flash被映射到0x00000000地址(就是nGCS0,這里就不需要片內SRAM來輔助了,所以片內SRAM的起始地址還是0x40000000). 然后cpu從0x00000000開始執行(也就是在Norfalsh中執行)。
?
?
nandflash中執行啟動代碼:?NORflash速度快,數據不易失,可作為存儲并執行起到代碼和應用程序的存儲器,norflash可像內存一樣讀操作,但擦初和寫操作效率很低,價格很昂貴。SDRAM和nandflash的價格比較適中。根據這些特點,一些人產生了這樣一種想法:外部nandflash中執行啟動代碼,SDRAM中執行主程序。NANDFlash控制器自動把nandflash存儲器的前4K載到Steppingstone(內部SRAM緩沖器),并把0x00000000S設置為內部SRAM的起始地址,cpu從內部SRAM的0x00000000開始啟動,這個過程不需要程序干涉。這4K的啟動代碼需要將NANDFlash(包括內核代碼,應用程序代碼)中的內容復制到SDRAM中執行。NANDFlash的前4K空間放啟動代碼,SDRAM速度較快,用來執行主程序的代碼。?
?
總結
以上是生活随笔為你收集整理的2440 nand flash和nor flash上启动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cortex_m3的启动过程
- 下一篇: 又见国产化高性能芯片——“魂芯一号”