大容量NAND Flash在多媒体手机中的应用
完成ReadMode(1)的伪码如下:
ReadMode1_Func(Cmd, Addr)
{
RE=1;
ALE = 0 ;
CLE = 1 ;
WE = 0 ;
CE=0;
SendCmd(Cmd); // 向NAND 发送操作命令,此例中应该是00H
WE = 1 ; / / NAND 取走命令
CE = 1 ;
CLE=0; // 发送命令结束
ALE=1; // 开始发送起始地址
for(i=0;i<3;i++)
{
WE = 0 ;
CE=0;
SendAddr(Addr);
WE=1; // 取走指令
CE=1;
} // 发送完所有地址
CE=1;
WE = 1 ;
ALE = 0 ;
Delay(2);
while(BUSY)
Wait; // 判断等待状态是否结束
RE=0;
CE=0;
ReadData(Buf); // 读取数据到buffer
}
2.5 NANDFlashDiver的特殊功能
NANDFlash的访问是串行的,比较类似硬盘的存储方式。NANDFlash必须有Driver的支持才能在手机使用。Driver除了提供对NANDFlash的Read,Program,Erase外,还应该提供以下基本的功能:
BadBlockManagement
WearLevelingTreatment
ECC(ErrorCorrectCode)
NANDFlash是通过Driver分配的逻辑地址来进行访问的。BadBlockManagement对坏块不分配逻辑地址,这样会形成连续的逻辑地址。WearLevelingTreatment避免对某一区域进行大量的读写操作,这样就会延长NANDFlash的使用时间。ECC主要完成读写过程中的纠错,但是ECC只能对1bit的数据进行纠错。
3 结语
在多媒体手机中NANDFlash主要用来存储多媒体数据(图片、语音文件等)。在实际应用中不会对NANDFlash进行频繁的写入和擦除操作,而且多媒体数据对数据的完整性要求也不是很高,但是多媒体数据的数据量较大。这些特征决定了使用NANDFlash来存储多媒体数据是十分恰当的,这也正是业界的通行做法。
评论