阅读:1257回复:8
关于U盘开发中的READ 10的问题?
最近的u盘开发,走到处理read10命令。该命令要求读取512字节的LBA地址为0的一个BLOCK的FLASH数据,我发送了512字节的数据过去,用BUSHOUND抓包发现,发生了bus reset事件。
比较其他的u盘的抓包,分析发现设备在响应read10请求的时候只发送了128字节的数据包,然后就发送CSW包。是不是一定要这样?因为我发送512字节是不成功的。 |
|
沙发#
发布于:2004-04-26 13:59
关于bbiliu所说的write10的问题,确实存在这种情况,在有的硬件上就不存在提前发Csw的问题。
|
|
板凳#
发布于:2004-04-26 13:56
我的也都调完了,非常感谢大家的支持,尤其是frank和floppydisk,以后会在速度以及动态插拔上作一些处理,另外我是用了我们公司操作系统的一些功能,愿意和大家讨论。
|
|
地板#
发布于:2004-04-26 11:51
各位老大,我的u盘基本完成了。
write10好像也没有出现你们说的那种情况,可能和usb芯片有关系。 目前正在整理文档,等整理完了,传上来和大家共享。 哦对了,我的format命令还没有做。 |
|
地下室#
发布于:2004-04-26 10:01
谢谢LJ1978纠正,差点误导人家了,以下是我的程序设计方法:
WRITE10在第七个包后就发CSW; READ10在第八个包后才发送CSW; 以上针对一个扇区,EP大小为64B的情况 |
|
|
5楼#
发布于:2004-04-24 20:49
我的read10也不需要提前发csw,write10倒是好像需要,但现在还没有完全调好。
|
|
6楼#
发布于:2004-04-19 14:56
楼上的是WRITE10才需要在第七个包后才发CSW。
我做READ10并不需要这么做 楼主的原因可能还是你软件问题。就是可能你根本没发够512个字节或者多发了几个字节。我曾试过这种情况。你好好检查程序。 |
|
7楼#
发布于:2004-04-19 12:57
假设你的BULK端点大小为64BYTES。
1.发送7次数据.64×7=448字节数据 2.发送CSW 3.发送剩余的64字节 传输结束 |
|
|
8楼#
发布于:2004-04-19 09:48
不好意思,搞错了,应该是发送了512字节,我的BUSHOUND只能抓127个字节。
但是现在还是不成功。用bushound看到的是。 我的设备发送了512字节过去后,主机连发了两个urb请求。 然后主机发送了一个bus reset动作,然后重新进行列举过程。 谁能告诉我,read10的操作过程(和主机的数据应答过程)。 |
|