實驗目的:突破4KB的Steppingstone存儲空間限制,讀取NandFlash中4KB后的代碼實現(xiàn)“點燈大法”,借此掌握NandFlash的操作。
實驗環(huán)境及說明:恒頤S3C2410開發(fā)板H2410。H2410核心板的NandFlash選用的是三星片上(SOP)K9F1208U0M,該NandFlash容量為64MB。
實驗思路:開發(fā)板上電啟動后,自動將NandFlash開始的4K數(shù)據(jù)復制到SRAM中,然后跳轉到0地址開始執(zhí)行。然后初始化存儲控制器SDRAM,調(diào)用NandFlash讀函數(shù)操作把4KB后的點燈代碼復制到SDRAM中,跳到點燈代碼的入口點實現(xiàn)點燈操作。
知識掌握:NandFlash內(nèi)部結構、命令字及存儲控制器
一、NandFlash內(nèi)部結構
不同開發(fā)板使用的NandFlash的型號可能不一樣,本文只是以K9F1208U0M為例做個簡單介紹。引腳描述如下所示:
NandFlash存儲單元結構圖如下所示:
Device、Block和Page之間的關系---1 Device = 4,096 Blocks = 4096*32 Pages = 128K Pages;1 Block = 32 Page;1 Page = 528 Byte = 512 Byte + 16 Byte。其中1 Page中包含有數(shù)據(jù)寄存器512 Byte和16 Byte的備用位用于ECC校驗存儲。所以有528 columns * 128K rows(Pages)。1 Page中的512 Byte的數(shù)據(jù)寄存器又分為兩個部分1st 256 Bytes和 2nd 256 Bytes。用于數(shù)據(jù)存儲的單元有 512 Bytes * 32 Pages * 4096 Blocks = 64 MB,用于ECC校驗單元有16 Bytes * 32 Pages * 4096 Blocks = 2MB 。
二、NandFlash命令字
操作NandFlash時,先傳輸命令,然后傳輸?shù)刂?,最后進行數(shù)據(jù)的讀/寫。K9F1208U0M的命令字如下所示:
由于尋址需要26bit的地址,該26bit地址通過四個周期發(fā)送到NandFlash,如下圖所示: