實驗目的:突破4KB的Steppingstone存儲空間限制,讀取NandFlash中4KB后的代碼實現“點燈大法”,借此掌握NandFlash的操作。
實驗環境及說明:恒頤S3C2410開發板H2410。H2410核心板的NandFlash選用的是三星片上(SOP)K9F1208U0M,該NandFlash容量為64MB。
實驗思路:開發板上電啟動后,自動將NandFlash開始的4K數據復制到SRAM中,然后跳轉到0地址開始執行。然后初始化存儲控制器SDRAM,調用NandFlash讀函數操作把4KB后的點燈代碼復制到SDRAM中,跳到點燈代碼的入口點實現點燈操作。
知識掌握:NandFlash內部結構、命令字及存儲控制器
一、NandFlash內部結構
不同開發板使用的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中包含有數據寄存器512 Byte和16 Byte的備用位用于ECC校驗存儲。所以有528 columns * 128K rows(Pages)。1 Page中的512 Byte的數據寄存器又分為兩個部分1st 256 Bytes和 2nd 256 Bytes。用于數據存儲的單元有 512 Bytes * 32 Pages * 4096 Blocks = 64 MB,用于ECC校驗單元有16 Bytes * 32 Pages * 4096 Blocks = 2MB 。
二、NandFlash命令字
操作NandFlash時,先傳輸命令,然后傳輸地址,最后進行數據的讀/寫。K9F1208U0M的命令字如下所示:
由于尋址需要26bit的地址,該26bit地址通過四個周期發送到NandFlash,如下圖所示: