NAND FLASH坏块检测时不同块的检测时间不同

daigua04 2008-11-05 11:13:14
pxa255+wce4.2系统,nand flash一共8192个block,开机检测坏块时,前面1000个左右非常慢,后面的非常快,不知道什么原因?我把FMD_GetBlockStatus设置为固定值还是同样的结果...是不是FAL层对不同的block处理过程不一样,导致检测时间不同呢?
...全文
274 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Seven_zhangxw 2008-11-07
  • 打赏
  • 举报
回复
不清楚,帮你顶。。。
anngy 2008-11-06
  • 打赏
  • 举报
回复
检查一下驱动,该不会是根本没操作到后面的块吧。
daigua04 2008-11-06
  • 打赏
  • 举报
回复
我的系统开机后不光是读sector的状态,还要读每个块的好块状态的。
能不能给我看看你的platform.reg中关于nand flash的部分?我看看跟我的有什么区别?谢谢了!
daigua04 2008-11-06
  • 打赏
  • 举报
回复
googleman英雄,你的也是wce4.2平台吗?你是不读sector的状态还是不检测坏块啊?
  • 打赏
  • 举报
回复
没有吧,我的怎么没有检测呢?
daigua04 2008-11-06
  • 打赏
  • 举报
回复
通过调试发现,系统也不是每个sector都去读,nand flash一共有290万个sector,只读到大概160万个的时候,就不再读了。

而且读的时候,也不是连续的读,而是跳跃式的,如下所示(第一个数字表示sector序号):

FMD_ReadSector(50000,0,40AEE54,1)
FMD_ReadSector(100000,0,40AEE54,1)
FMD_ReadSector(150000,0,40AEE54,1)
FMD_ReadSector(200000,0,40AEE54,1)
FMD_ReadSector(250000,0,40AEE54,1)
FMD_ReadSector(300000,0,40AEE54,1)
FMD_ReadSector(350000,0,40AEE54,1)
FMD_ReadSector(800000,0,40AEE54,1)
FMD_ReadSector(1600000,0,40AEE54,1)

我每隔50000打印一次信息,但是到了350000的时候,就直接跳到800000,然后就1600000,接着就不读了。

系统读sector时为什么不是连续的?而且也不是读到最后一个sector?是不是因为后续的sector没有存放数据,所以不读了?中间不连续的部分也是因为没有有效数据?

另外,系统要知道当前nand flash上存放了什么数据,可以通过读取FAT表什么的(FAT文件系统提供的),肯定比读那么多sector要来得快吧?
xjfox 2008-11-06
  • 打赏
  • 举报
回复
没有办法,系统得知道你每个sector的状态,否则它怎么知道你的磁盘信息和上面已经存在的文件信息?
daigua04 2008-11-06
  • 打赏
  • 举报
回复
没有,现在发现,每次开机系统(wce4.2)都会去循环调用FMD_ReadSector去读取每个sector的信息,同时还会去调用FMD_GetBlockStatus去读取坏块,也就是同时做两件事情,导致前面部分检测比较慢,后面检测比较快!

系统为什么要循环读取每个sector的信息?1GB的nand flash一共有8192个block,每个block有256个sector,这样读下去太浪费时间了吧?而且同时还要去读取坏块的信息,能不能有方法不让它去读这些信息啊?

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧