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

[复制链接]
2972|4
 楼主| kokoromi 发表于 2013-8-19 13:29 | 显示全部楼层 |阅读模式
把设备枚举为 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请求,这两个请求都是通过控制传输发送的,你看下数据写出错时有没有收到这两个命令,并正常反回。
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部