阅读:2008回复:11
做u盘的一些问题(坏块管理等)
在win2k环境下,做u盘时,pc端的驱动程序和设备端的
固件程序需要做坏块管理吗? 另外,ddk中关于Storage Drivers的资料那么多,我该看哪些部分?用DriverStudio好不好摆平(我用这个比较习惯)? 请知情大侠给我指点指点,感激不尽! |
|
沙发#
发布于:2002-11-27 16:01
pc端的驱动程序不需要,但设备端的固件程序需要做坏块管理。
有空的话,你都可以看一下,对你还是有帮助的 DriverStudio还行,他产生了一个基于C++的框架,但有些代码还是要你自己来添加,就像MFC一样。 |
|
板凳#
发布于:2002-11-27 16:38
如果由固件来做坏块管理的话,那么flash的地址影射算法
就会有点复杂,而且读写速度也受影响。 我们的猜测是,win2k的某一层系统已经有了坏块管理功能, 当发现坏块时,windows会修改fat表上的文件链接,使它避开坏块, 以后windows对u盘进行访问时,就会发出正确的逻辑地址,而不会 对坏块进行读写操作。 不知道我的猜测有无可能? 谢谢! |
|
地板#
发布于:2002-11-27 17:15
刚才写了许多,但网断了,又得重写一次 :(
我的U盘是没有坏块管理的,因为Fat读写是Windwos自己的事,因此,如果你的Flash中有坏块,你应该在格式化的时候在对应的文件分配表项中标出来(即手工将Fat表中的对应项标为已坏),这些Windows在分配空间的时候就不会分配, 在实际存取文件的时候,PC机会给出数据,并告诉写到哪里,你只要保证可以成功写入就可以了. 我所指的格式化是指你的固件对Flash进行格式化,Windows系统的格式化我不知道为什么总是讲我的U盘格式化不成功. |
|
地下室#
发布于:2002-11-27 17:20
刚才写了许多,但网断了,又得重写一次 :( 瘟悼司是不会给你管理坏块的。 |
|
5楼#
发布于:2002-11-27 17:46
刚才写了许多,但网断了,又得重写一次 你说你能把坏块信息写到fat中去?fat好象没有存储这种信息的地方啊! |
|
6楼#
发布于:2002-11-27 18:23
[quote] 刚才写了许多,但网断了,又得重写一次 你说你能把坏块信息写到fat中去?fat好象没有存储这种信息的地方啊! [/quote] 坏块也不是写到FAT中去的。你自己要记的哪个是坏块。 |
|
7楼#
发布于:2002-11-27 21:47
如果用FLASH则firmware部分是需要做坏块管理的,因为FLASH上如果有一个坏块,则坏块所在的整个物理BLOCK必须登记为不可使用,这部分工作需要由FIRMWARE来完成
|
|
8楼#
发布于:2002-11-27 22:05
如果用FLASH则firmware部分是需要做坏块管理的,因为FLASH上如果有一个坏块,则坏块所在的整个物理BLOCK必须登记为不可使用,这部分工作需要由FIRMWARE来完成 既然坏块管理需要固件自己来完成,那么固件中的地址影射情况对于win2k来说,应该是透明的才对,那固件如何记录坏块(是只标记该块为不可用,或者是标记整个物理block为不可用),都可以的吧?只要保证逻辑--》物理地址转换是正确的。 不知道我的理解对不对? |
|
9楼#
发布于:2002-11-27 22:15
将Fat中表项标记为FFFF即表示此簇已坏,Windows便不会使用了.
这就是所谓的记录坏块的方法. 至于再有别的什么坏块管理我就不知道了. |
|
10楼#
发布于:2002-11-27 22:26
有一个问题,我感觉我与大家讲的不一样,我刚才说的坏块是指Flash物理损坏,如果是数据成功写入后过一段时间坏了,这种坏块管理应该利用Flash中512-528的这段空间来加入校验码.
|
|
11楼#
发布于:2002-11-28 14:27
明白了,还是要自己来管理。不过我看肯定不是通过修改fat来
管理的,fat没有有效的表项,再说,通过固件自己来访问fat表, 还是有点麻烦,至少是容易出错。 另外,还是麻烦大家帮我回答我的第二个问题: win2k ddk里关于存储驱动的资料那么多,我要速成的话应该 怎么看?时间太紧张了,而且我显示器不好,看起来很痛苦的呵呵。望大侠们出手,谢谢! 今天放分! |
|