2009-01-15 16:51 321人閱讀
收藏舉報
s3c2410讀寫nand flash分析
一、結構分析
s3c2410處理器整合了8位nandflash控制器。目前市場上常見的8位nandflash有三星公司的k9f1208、k9f1g08、k9f2g08等。k9f1208、k9f1g08、k9f2g08的資料頁大小分別為512byte、2kbyte、2kbyte。它們在定址方式上有一定差異,所以程式**並不通用。本文以s3c2410處理器和k9f1208系統為例,講述nandflash的讀寫方法。
nandflash的資料是以bit 的方式儲存在memory cell裡的,一般來說,乙個cell 中只能儲存乙個bit,這些cell 以8 個或者16 個為單位,連成bit line,形成所謂的byte(x8)/word(x16),這就是nand device 的位寬。這些line 組成page, page 再組織形成乙個block。k9f1208的相關資料如下:
1block=32page;1page=528byte=512byte(main area)+16byte(spare area)。
總容量為=4096(block數量)*32(page/block)*512(byte/page)=64mbyte
column address表示資料在半頁中的位址,大小範圍0~255,用a[0:7]表示;
halfpage pointer表示半頁在整頁中的位置,即在0~255空間還是在256~511空間,用a[8]表示;
page address表示頁在塊中的位址,大小範圍0~31,用a[13:9]表示;
block address表示塊在flash中的位置,大小範圍0~4095,a[25:14] 表示;
二、讀操作過程
k9f1208的定址分為4個cycle。分別是:a[0:7]、a[9:16]、a[17:24]、a[25]。
讀操作的過程為: 1、傳送讀取指令;2、傳送第1個cycle位址;3、傳送第2個cycle位址;4、傳送第3個cycle位址;5、傳送第4個cycle位址;6、讀取資料至頁末。
k9f1208提供了兩個讀指令,『0x00』、『0x01』。這兩個指令區別在於『0x00』可以將a[8]置為0,選中上半頁;而『0x01』可以將a[8]置為1,選中下半頁。
雖然讀寫過程可以不從頁邊界開始,但在正式場合下還是建議從頁邊界開始讀寫至頁結束。下面通過分析讀取頁的**,闡述讀過程。
static void readpage(u32 addr, u8 *buf) //addr表示flash中的第幾頁,即『flash位址》9』
三、寫操作過程
寫操作的過程為: 1、傳送寫開始指令;2、傳送第1個cycle位址;3、傳送第2個cycle位址;4、傳送第3個cycle位址;5、傳送第4個cycle位址;6、寫入資料至頁末;7、傳送寫結束指令
下面通過分析寫入頁的**,闡述讀寫過程。
static void writepage(u32 addr, u8 *buf) //addr表示flash中的第幾頁,即『flash位址》9』
s3c2410的nand flash的驅動分析
以前都是把別人寫好的 直接拿過來用,而沒有去關心裡面到底怎麼實現的,昨晚對照著samsung 2410和k 9f1208的晶元資料把這些 讀了一遍,終於明白了對nand flash的操作一步步是怎麼實現的了。以下的這些 可以在vivi或者kernel裡面找到 對乙個nand flash的操作,總體上...
S3C2410快速啟動的實現
嵌入式系統對功能 可靠性 成本 體積 功耗等均有嚴格要求,以arm體系結構為基礎的各種risc微處理器具有靈活的特性和強大的效能,在嵌入式系統中得到了廣泛的應用。s3c2410是三星公司基於arm920t設計的一款處理器,在開發基於s3c2410的系統的過程中,如何讓系統快速穩定地啟動是乙個重要問題...
S3C2410下DMA的使用
dma優點是其進行資料傳輸時不需要cpu的干涉,可以大大提高cpu的工作效率。dma大容量資料傳輸中非常重要,比如影象資料傳輸,sd卡資料傳輸,usb資料傳輸等等。s 3c2410有四個dma,每個dma支援工作方式基本相同,但支援的source dest可能略有不同。那麼怎麼使用dma呢,s3c2...