|
本帖最后由 FSL_TICS_ZJJ 于 2014-6-4 13:12 编辑
最近做一个项目,用到了三星的一款NandFlash,K9G8G08U0M,因为NandFlash的坏块问题,可能会导致产品在使用一段时间后不会太稳定,所以现在想做一个小程序,专门检测Flash的坏块,大体思路构建如下,希望坛友帮忙补充算法,使小程序高效运行!框架设计是基于该Flash擦时可按块擦,写却只能按页写...
继续补充下,片子在使用过程中是会不断产生坏块的,厂商的标记只能在片子刚使用的时候有所帮助...
附件是使用的Flash的datasheet。
#define K9G8_ID_MAKERCODE 0xEC
U8 m_u8Buffer[1024];
NFlash_Init()
......
U16 u16FlashID;
NFlash_ReadID(&u16FlashID);
if (((u16FlashID>>8)&0xFF)==K9G8_ID_MAKERCODE) {
...; // Flash初始化成功
}
...
// 擦除所有块
U32 u32;
for(u32=0;u32<NFlash_GetTotalBlocks();u32++) {
if (NFlash_EraseBlock(u32)==FALSE) {
... // 擦除失败
}
}
// 依次读入各个页面
for(u32= 0;u32<NFlash_GetTotalSubPages();u32++) {
if (NFlash_ReadSubPage(u32,m_u8Buffer)==FALSE {
.... // 读入失败
}
else {
... // 依次比较是不是0xFF
}
}
....
// 编程
memset(m_Buffer,0,256);
for(u32 = 0;u32<NFlash_GetTotalSubPages();u32++) {
if (NFlash_ProgramSubPage(u32,m_Buffer)==FALSE) {
... // 编程失败
}
else {
... // 读入本页,看看是不是全0x00
}
}
} |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|