打印
[USB编程]

USB枚举成MSC类后的复位失败,什么原因?

[复制链接]
2237|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
把设备枚举为 MSC类成功,传输数据过程中,读取数据没有问题,但是写入数据时会偶尔出现问题,导致我发送CSW后主机也无反应,直到主机复位设备,但是我用 USBlyzer 抓取数据看到主机复位三次均失败,原因是 设备数据错误,不明白是怎么回事,我这个复位程序一直都是好用的,怎么可能复位失败呢,什么原因?


相关帖子

沙发
yezhenqin| | 2013-8-25 09:29 | 只看该作者
MSC中主机复位从机(发送clear_feature请求,msc的Reset请求),很可能是你发csw的时间点不对,或CSW的cswsignature和cswtag有误,比如cswsignature没有做小端处理,cswtag没有和cbw命令块的cbwtag一致。

使用特权

评论回复
板凳
kokoromi|  楼主 | 2013-8-26 10:21 | 只看该作者
yezhenqin 发表于 2013-8-25 09:29
MSC中主机复位从机(发送clear_feature请求,msc的Reset请求),很可能是你发csw的时间点不对,或CSW的cswsign ...

谢谢回复,不过你说的是导致MSC主机复位设备的原因,我想问的是主机复位设备失败的原因,就是我图里的那个红色字体的部分。

使用特权

评论回复
地板
yezhenqin| | 2013-8-26 11:45 | 只看该作者
不客气,你是接了一个HUB,再接你的设备吗? ,根据我做过的项目, MSC复位时先发送MSC类复位请求,如果MSC设备没有正确响应就认为MSC复位失败,如果MSC设备正确响应此请求,主机接着发clear_feature请求,这两个请求都是通过控制传输发送的,你看下数据写出错时有没有收到这两个命令,并正常反回。

使用特权

评论回复
5
kokoromi|  楼主 | 2013-8-27 10:23 | 只看该作者
yezhenqin 发表于 2013-8-26 11:45
不客气,你是接了一个HUB,再接你的设备吗? ,根据我做过的项目, MSC复位时先发送MSC类复位请求,如果MSC ...

我就是把我的设备直接接到 笔记本电脑的USB口。
还有就是你说的“MSC复位时先发送MSC类复位请求,如果MSC设备没有正确响应就认为MSC复位失败”,你说的这个MSC类复位请求是不是这个: Bulk-Only Mass Storage Reset 请求代码为0xFF,如果是这个的话,据我调试观察发现这个请求电脑从来不曾发送,复位的时候执行的是USB总线复位,就是枚举之前或者设置地址之后的那个USB总线复位,不知到怎么回事。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

111

主题

344

帖子

3

粉丝