我在微软技术论坛上看到一篇帖子,原文如下:
他是在起动时要读取,在剩余空间里标注了扇区号的FLAH的页的INFO,对未标注的就只读取好坏块的INFO,
也就是说你的文件或删掉的文件,只要曾使用过的页都会被标注扇区号,都会被读,即如国你的扇区越小越浪费时间!
FMD这块,我认为微软做的很差径,卡卡!
请问下,什么样的扇区标注了扇区号?标注在哪里?是不是使用过的扇区都会标明扇区号?那未标注的就是指空闲的扇区?
我的系统基于wce4.2平台,nand flash为1GB,共8192个block,每个block256个扇区,系统每次开机时,都会去调用FMD_ReadSector函数读取每个扇区的状态,同时还会调用FMD_GetBlockStatus去读每个block的好坏。由于扇区数目庞大,导致开机很慢。奇怪的现象是,系统也不是每个扇区都会去读,而是跳跃式的,比如从第0个开始,读到第10万个的时候,直接就去读第80万了,而且读到大概160万个的时候就停止了,此时nand flash才能正常被识别。
请问,为什么每次开机都会去读扇区的状态?是不是因为这些扇区保留有数据,系统需要验证这些数据的正确与否?空闲的扇区就跳过?如果nand flash接近饱和,可能导致开机速度越来越慢,有没有什么办法呢?
因为上层FAL层代码不可见,导致分析起来捉襟见肘,恳请英雄指点迷津,不胜感激!
|