PDIUSBD12 u盘设计:给入门者(1)
从这个帖子开始,将提供一个以Brk-D12为平台的u盘设计。本人最初设计u盘的目的是为了了解读写u盘过程中的操作细节,现在的u盘已经很便宜,并且也大都用专用芯片控制,看不出自己设计u盘的“实用性”,但是可以拿来深入的学习USB的相关知识。在本设计方案中,并不是一个真正的u盘,因为Brk-D12本身没有任何存储设备(FLASH);在实现时,使用了一个u盘的镜像文件(格式化或者没有格式化),并在运行时调入内存,所有对u盘的读写实际上是对该内存读写,这个操作相当于把硬盘上的一个文件虚拟成一个移动硬盘(u盘)。
在给出实际的代码之前,请先阅读以下资料(这些资料可以从网上下载,感谢相关网友的付出):
*USB 项目技术报告 2002 年12 月北航frank,这篇资料对u盘的相关内容都做了描述,具有相当的参考价值,其使用的也是PDIUSBD12,故更容易理解与实现。不过在最后一页中,作者提到Host传送数据包的问题,其陈述不太对,对于512个字节,主机每次64个字节分8次传输,但是由于以前提到的D12具有双缓冲,误判为7次,而作者的处理方法正好歪打正着,作者回传一个CSW(我想在CSW中,应该设置了还剩64个字节未收到),Host虽然有疑问(已经发送完了,为什么还要让我发?),但是还是得按照u盘的协议从新发送最后的一个数据包,这样就可以收到最后的64个字节。
[upload=zip]viewFile.asp?ID=5670[/upload]
*u盘传输协议框架,该文件对u盘的基本协议框架做了描述,对于u盘的控制命令,可以到如下网址www.t10.org下载相关文档。
[upload=zip]viewFile.asp?ID=5672[/upload]
*FAT/FAT32资料 [upload=zip]viewFile.asp?ID=5671[/upload]
(未完待续)