大容量NAND Flash在多媒體手機(jī)中的應(yīng)用
完成ReadMode(1)的偽碼如下:
ReadMode1_Func(Cmd, Addr)
{
RE=1;
ALE = 0 ;
CLE = 1 ;
WE = 0 ;
CE=0;
SendCmd(Cmd); // 向NAND 發(fā)送操作命令,此例中應(yīng)該是00H
WE = 1 ; / / NAND 取走命令
CE = 1 ;
CLE=0; // 發(fā)送命令結(jié)束
ALE=1; // 開(kāi)始發(fā)送起始地址
for(i=0;i<3;i++)
{
WE = 0 ;
CE=0;
SendAddr(Addr);
WE=1; // 取走指令
CE=1;
} // 發(fā)送完所有地址
CE=1;
WE = 1 ;
ALE = 0 ;
Delay(2);
while(BUSY)
Wait; // 判斷等待狀態(tài)是否結(jié)束
RE=0;
CE=0;
ReadData(Buf); // 讀取數(shù)據(jù)到buffer
}
2.5 NANDFlashDiver的特殊功能
NANDFlash的訪(fǎng)問(wèn)是串行的,比較類(lèi)似硬盤(pán)的存儲(chǔ)方式。NANDFlash必須有Driver的支持才能在手機(jī)使用。Driver除了提供對(duì)NANDFlash的Read,Program,Erase外,還應(yīng)該提供以下基本的功能:
BadBlockManagement
WearLevelingTreatment
ECC(ErrorCorrectCode)
NANDFlash是通過(guò)Driver分配的邏輯地址來(lái)進(jìn)行訪(fǎng)問(wèn)的。BadBlockManagement對(duì)壞塊不分配邏輯地址,這樣會(huì)形成連續(xù)的邏輯地址。WearLevelingTreatment避免對(duì)某一區(qū)域進(jìn)行大量的讀寫(xiě)操作,這樣就會(huì)延長(zhǎng)NANDFlash的使用時(shí)間。ECC主要完成讀寫(xiě)過(guò)程中的糾錯(cuò),但是ECC只能對(duì)1bit的數(shù)據(jù)進(jìn)行糾錯(cuò)。
3 結(jié)語(yǔ)
在多媒體手機(jī)中NANDFlash主要用來(lái)存儲(chǔ)多媒體數(shù)據(jù)(圖片、語(yǔ)音文件等)。在實(shí)際應(yīng)用中不會(huì)對(duì)NANDFlash進(jìn)行頻繁的寫(xiě)入和擦除操作,而且多媒體數(shù)據(jù)對(duì)數(shù)據(jù)的完整性要求也不是很高,但是多媒體數(shù)據(jù)的數(shù)據(jù)量較大。這些特征決定了使用NANDFlash來(lái)存儲(chǔ)多媒體數(shù)據(jù)是十分恰當(dāng)?shù)?,這也正是業(yè)界的通行做法。
評(píng)論