shaoshengli
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2022-02-14
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望77点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1631回复:10

向高手征求坏块处理的程序思路,给分!决不食言!!!

楼主#
更多 发布于:2004-03-31 08:50
向个位顶尖高手讨教,本人DIY的MP3已经接近尾声,但再读写大的
文件时(大于5M)会出错,我想这个问题应该是出在 《坏块处理》 上,因为本人程序没有进行坏块处理。在此,我向高手征求坏块处理的程序思路,给分!决不食言!!!
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-31 09:04
重新读一下 不对则去掉
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
shaoshengli
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2022-02-14
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望77点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-03-31 09:07
能不能说清楚一点,太笼统啦。
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-31 09:45
晕啊
如果写错概率极小
你用的FLASH有个尾巴吗 就是多余的空间
那你就加个校验 一个扇区一个扇区的去处理
我想如果不对则唱到这就报错
如果每次都有问题
你只好写一个扇区 读一遍 不然你只有
用个好点的flash
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-31 10:33
可以事先对每个扇区检测一下,对坏扇区建立一个坏扇区表,并给它一个好扇区的索引.这样就能把对坏扇区的读写操作切换到对另一个好扇区读写.
在对扇区读写操作的时候用16字节ECC校验,写扇区的时候计算ECC,读扇区的时候检测ECC.
www.dragon-2008.com 欢迎交流
shaoshengli
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2022-02-14
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望77点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2004-03-31 11:52
谢谢上面的兄才:
    不过我觉得在U盘中建坏扇区表有点多余,因为FAT中可以标示坏簇(FFF7),这样WINDOW就不会对这个坏簇近行写操作。

我想提醒个位,我想知道有什么方法可以让WINDOWS在写U盘时:突然出现一个错误,怎样可以把出错的信系回复给WINDOWS,然后标示坏簇(FFF7)和另写一个好簇。(象软盘一样处理出错);
linjunchao
驱动牛犊
驱动牛犊
  • 注册日期2003-01-14
  • 最后登录2005-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-03-31 16:49
用逻辑地址和物理地址分开的方法,建立两种地址的对应表,写U盘时用从逻辑地址来找物理地址,对出错的扇区在该BLOCK的16字节(通常NAND FLASH中都是有这16字节)中表明,建立对照表时扫描每个BLOCK,这样对照表中就没有错误扇区的物理地址了
shaoshengli
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2022-02-14
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望77点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2004-03-31 17:11
   下午我请教过Sunplus公司的工程师,于上面兄才说的方法相似,不过它们是用动态的方法实现,这样在写NF出现错误时可以自由调过。不过再构思程序流程,还有很多地方想不明白。
例如:(1)在写NF时如果出错,程序可以跳过坏块,但是容量不是减少16K吗?程序应该如何把容量减少这个事实报告给WINDOWS呢?
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-04-01 13:49
谢谢上面的兄才:
    不过我觉得在U盘中建坏扇区表有点多余,因为FAT中可以标示坏簇(FFF7),这样WINDOW就不会对这个坏簇近行写操作。

我想提醒个位,我想知道有什么方法可以让WINDOWS在写U盘时:突然出现一个错误,怎样可以把出错的信系回复给WINDOWS,然后标示坏簇(FFF7)和另写一个好簇。(象软盘一样处理出错);
 

FAT的确可以处理,但是你会买一个WINDOWS报告有坏扇区的U盘吗?
www.dragon-2008.com 欢迎交流
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-04-01 13:51
  下午我请教过Sunplus公司的工程师,于上面兄才说的方法相似,不过它们是用动态的方法实现,这样在写NF出现错误时可以自由调过。不过再构思程序流程,还有很多地方想不明白。
例如:(1)在写NF时如果出错,程序可以跳过坏块,但是容量不是减少16K吗?程序应该如何把容量减少这个事实报告给WINDOWS呢?
 

容量的确会减少,但WINDOWS会通过GetCapacity来获取容量,所以只要U盘在回答GetCapacity时注意就行了.
www.dragon-2008.com 欢迎交流
zhanghb
驱动牛犊
驱动牛犊
  • 注册日期2004-02-11
  • 最后登录2009-10-11
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望78点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-04-20 08:04
我代码供你参考
游客

返回顶部