基于SEP4O20的Linux NandFlash驅(qū)動(dòng)設(shè)計(jì)
3.1 NandFlash讀函數(shù)的核心代碼
//讀取數(shù)據(jù),長度可能為528,512,16;但由于NandFlash的控制器只支持整頁的讀寫和//oob區(qū)的讀,而這里發(fā)送的命令是讀取數(shù)據(jù),所以要整頁讀,數(shù)據(jù)長度為528。本文引用地址:http://cafeforensic.com/article/151948.htm
3.2 NandFlash寫函數(shù)的核心代碼
由于NandFlash本身只支持整頁的寫,而不支持直接對oob區(qū)的寫操作,而MTD上層需要對oob區(qū)進(jìn)行一系列的操作,因此在對oob進(jìn)行操作時(shí)需要先讀取該頁數(shù)據(jù)區(qū),并將上層傳送的oob區(qū)數(shù)據(jù)一起組成一整頁,然后才能寫入NandFlash。
4 結(jié)束語
本文以NandFlash芯片的特點(diǎn)入手,分析了LinuxMTD層架構(gòu)及優(yōu)點(diǎn),給出了基于SEP4020微處理器的NandFlash驅(qū)動(dòng)設(shè)計(jì),并利用SEP4020內(nèi)置的dma技術(shù),提高了對NandFlash的讀寫速度。根據(jù)實(shí)驗(yàn)表明,本文實(shí)現(xiàn)的NandFlash驅(qū)動(dòng)提供的平均讀寫速度穩(wěn)定在250kB/s,這樣的速度在一般的嵌入式應(yīng)用中已經(jīng)足夠。
評論