U盘 固件程序格式化问题

zhushuping   2010-3-23 09:47 楼主
在开发U盘固件程序的时候,不知道U盘在接收到格式化命令后,该有什么样的动作?
格式化的原理和过程是什么?
谢谢

回复评论 (11)

5555555
点赞  2010-3-26 17:06
格式化不过是文件系统的一个初始化过程而已。对于U盘固件程序来说,就是一般数据罢了。找到空闲存储区的一个地址,存储好即可。当然要维护好这个映射关系(文件系统LBA到存储区地址的转换关系)。
点赞  2010-3-26 22:10
对于U盘固件来说,它不知何为格式化。上位机给U盘发送的是一般的读写数据的命令。唯一的区别就是读写的区域不同。
[url=http://blog.eeworld.net/kevinyujm/archive/2010/03/27/5423098.aspx][/url]
点赞  2010-3-28 16:13
既然格式化只是读写,那么是不是只要读写功能正常就可以格式化了?
现在我的程序读写都可以,格式化的时候window就是会提示“window无法完成格式化”
是不是格式化主机是不是还有进行其他的动作???
点赞  2010-3-29 16:57
我设置断点调试,格式化的时候根本还没有执行到write,就提示错误了
点赞  2010-3-29 17:49
问题猜不出来。
建议你使用bushound配合程序调试,以确定具体原因。

点赞  2010-3-29 17:54
当PC执行格式化之后,PC都发送了那些命令??U盘该如何回复这些命令呢?
点赞  2010-3-29 18:20
引用: 引用 7 楼 asanpyx 的回复:
当PC执行格式化之后,PC都发送了那些命令??U盘该如何回复这些命令呢?


你既然读写都正常了,为什么还不了解PC文件系统对磁盘操作?
首先你在主机上通过文件系统操作U盘(格式化,格式化后读写磁盘),都是文件系统完成。格式化是文件系统的初始化,当然这些数据也要写到磁盘上的固定位置(对于U盘来说,就是逻辑扇区固定,具体物理地址就是你固件程序所要完成的工作了)。U盘一般都是使用SCSI协议完成数据包解析的吧(Usb协议只是传输协议,具体使用什么协议解析数据,那是根据具体USB设备而定了-- 看了几个月USB的理解,应该如此)。你可以到网上找些USB Mass Storage实现的SCSI协议文档。
点赞  2010-3-30 22:11
引用: 引用 6 楼 kevinyujm 的回复:

问题猜不出来。
建议你使用bushound配合程序调试,以确定具体原因。

点赞  2010-3-31 12:18
这个是U盘自己的事情了。
点赞  2010-3-31 12:26

格式化就是重写文件系统的基本扇区。你执行它发来的读写命令就可以了。
点赞  2010-4-1 19:26
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复