阅读:1632回复:10
向高手征求坏块处理的程序思路,给分!决不食言!!!
向个位顶尖高手讨教,本人DIY的MP3已经接近尾声,但再读写大的
文件时(大于5M)会出错,我想这个问题应该是出在 《坏块处理》 上,因为本人程序没有进行坏块处理。在此,我向高手征求坏块处理的程序思路,给分!决不食言!!! |
|
沙发#
发布于:2004-03-31 09:04
重新读一下 不对则去掉
|
|
|
板凳#
发布于:2004-03-31 09:07
能不能说清楚一点,太笼统啦。
|
|
地板#
发布于:2004-03-31 09:45
晕啊
如果写错概率极小 你用的FLASH有个尾巴吗 就是多余的空间 那你就加个校验 一个扇区一个扇区的去处理 我想如果不对则唱到这就报错 如果每次都有问题 你只好写一个扇区 读一遍 不然你只有 用个好点的flash |
|
|
地下室#
发布于:2004-03-31 10:33
可以事先对每个扇区检测一下,对坏扇区建立一个坏扇区表,并给它一个好扇区的索引.这样就能把对坏扇区的读写操作切换到对另一个好扇区读写.
在对扇区读写操作的时候用16字节ECC校验,写扇区的时候计算ECC,读扇区的时候检测ECC. |
|
|
5楼#
发布于:2004-03-31 11:52
谢谢上面的兄才:
不过我觉得在U盘中建坏扇区表有点多余,因为FAT中可以标示坏簇(FFF7),这样WINDOW就不会对这个坏簇近行写操作。 我想提醒个位,我想知道有什么方法可以让WINDOWS在写U盘时:突然出现一个错误,怎样可以把出错的信系回复给WINDOWS,然后标示坏簇(FFF7)和另写一个好簇。(象软盘一样处理出错); |
|
6楼#
发布于:2004-03-31 16:49
用逻辑地址和物理地址分开的方法,建立两种地址的对应表,写U盘时用从逻辑地址来找物理地址,对出错的扇区在该BLOCK的16字节(通常NAND FLASH中都是有这16字节)中表明,建立对照表时扫描每个BLOCK,这样对照表中就没有错误扇区的物理地址了
|
|
7楼#
发布于:2004-03-31 17:11
下午我请教过Sunplus公司的工程师,于上面兄才说的方法相似,不过它们是用动态的方法实现,这样在写NF出现错误时可以自由调过。不过再构思程序流程,还有很多地方想不明白。
例如:(1)在写NF时如果出错,程序可以跳过坏块,但是容量不是减少16K吗?程序应该如何把容量减少这个事实报告给WINDOWS呢? |
|
8楼#
发布于:2004-04-01 13:49
谢谢上面的兄才: FAT的确可以处理,但是你会买一个WINDOWS报告有坏扇区的U盘吗? |
|
|
9楼#
发布于:2004-04-01 13:51
下午我请教过Sunplus公司的工程师,于上面兄才说的方法相似,不过它们是用动态的方法实现,这样在写NF出现错误时可以自由调过。不过再构思程序流程,还有很多地方想不明白。 容量的确会减少,但WINDOWS会通过GetCapacity来获取容量,所以只要U盘在回答GetCapacity时注意就行了. |
|
|
10楼#
发布于:2004-04-20 08:04
我代码供你参考
|
|