[请教]向U盘发SCSI命令返回stall的问题

[复制链接]
6382|9
 楼主| fjh 发表于 2008-5-12 09:33 | 显示全部楼层 |阅读模式
ST, U盘, se, AC, AD
在51上使用SL811扩展的USB接口,枚举过程通过了,开始发送Inquiry,<br />ReadFormatCapacity等SCSI命令初始化U盘。但是发现手头两个牌子U盘都<br />会在发送完ReadFormatCapacity后,返回stall。<br /><br />参考网友的经验,在此时发送两条ClearFeature清除端点1和2的hatl状态,从<br />getstatus的返回打印看,halt状态是清除了,但是不知道为何接着发送的<br />RequestSense命令总是又返回stall。接下来的readcapacity命令的bulksend<br />阶段一直NAK过不去.<br /><br />用bus houd抓了一下其中一个U盘的打印,发现PC在ReadFormatCapacity<br />后有个RESET过程,却没有clearfeature.现在特想知道PC在这个RESET里到<br />底是做了什么事情,我在单片机这里应该如何做,感觉是个解决问题的关键。<br />希望知情网友帮帮忙,谢谢。<br /><br />附:bus houd的关于RESET的打印。有我的简略注释。<br /><br /><br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/20076/200762794831996.rar'>https://bbs.21ic.com/upfiles/img/20076/200762794831996.rar</a>
computer00 发表于 2008-5-12 10:49 | 显示全部楼层

RESET就是reset了总线,重新设置地址,获取描述符,设置配置

  
 楼主| fjh 发表于 2008-5-12 11:58 | 显示全部楼层

继续请教:)

RESET总线的话,那是否就是把U盘重新复位到地址0端口0重新配置的意思?但是看BUS&nbsp;HOUND里不像是这样哦,RST后接着是获取ReadFormatCapacity的status&nbsp;阶段了,并无重新配置阿。如下:<br /><br /><br />&nbsp;&nbsp;21.2&nbsp;&nbsp;55&nbsp;53&nbsp;42&nbsp;43&nbsp;&nbsp;e0&nbsp;44&nbsp;c4&nbsp;fe&nbsp;&nbsp;fc&nbsp;00&nbsp;00&nbsp;00&nbsp;&nbsp;80&nbsp;00&nbsp;0a&nbsp;23&nbsp;&nbsp;ReadFormatCapacityDO&nbsp;&nbsp;&nbsp;&nbsp;2us&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;&nbsp;00&nbsp;00&nbsp;00&nbsp;fc&nbsp;&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;&nbsp;00&nbsp;00&nbsp;00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...............&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;21.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(这里抓不到任何数据,PC到底干了什么?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RSET&nbsp;&nbsp;&nbsp;123us&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;21.1&nbsp;&nbsp;55&nbsp;53&nbsp;42&nbsp;53&nbsp;&nbsp;e0&nbsp;44&nbsp;c4&nbsp;fe&nbsp;&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;&nbsp;01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Readformat的status&nbsp;DI&nbsp;&nbsp;&nbsp;2us<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;返回&nbsp;&nbsp;<br /><br /><br /><br /><br />
 楼主| fjh 发表于 2008-5-12 11:59 | 显示全部楼层

补充贴一下我在串口抓的打印

main:&nbsp;Program&nbsp;Started!!!<br /><br /><br />*********************<br />*&nbsp;ENTER&nbsp;-&nbsp;IsMassDev&nbsp;*<br />*********************<br />======================<br />=&nbsp;Enter&nbsp;-&nbsp;EnumMassDev&nbsp;=<br />======================<br />=&nbsp;BEGIN&nbsp;-&nbsp;Get&nbsp;USB&nbsp;Device&nbsp;Descriptors<br />ep0Xfer&nbsp;cmd:&nbsp;80&nbsp;06&nbsp;00&nbsp;01&nbsp;00&nbsp;00&nbsp;12&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br />USB&nbsp;Device&nbsp;Descriptors:&nbsp;12&nbsp;01&nbsp;00&nbsp;02&nbsp;00&nbsp;00&nbsp;00&nbsp;40&nbsp;fe&nbsp;13&nbsp;00&nbsp;1d&nbsp;00&nbsp;01&nbsp;01&nbsp;02&nbsp;03&nbsp;01&nbsp;<br /><br /><br />=&nbsp;BEGIN&nbsp;-&nbsp;SetAddress(2)<br />ep0Xfer&nbsp;cmd:&nbsp;00&nbsp;05&nbsp;02&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Terminate&nbsp;on&nbsp;short&nbsp;packets!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br /><br /><br />=&nbsp;BEGIN&nbsp;-&nbsp;Get&nbsp;USB&nbsp;Device&nbsp;Descriptors&nbsp;again<br />ep0Xfer&nbsp;cmd:&nbsp;80&nbsp;06&nbsp;00&nbsp;01&nbsp;00&nbsp;00&nbsp;12&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br />Device&nbsp;Descriptors&nbsp;again:&nbsp;12&nbsp;01&nbsp;00&nbsp;02&nbsp;00&nbsp;00&nbsp;00&nbsp;40&nbsp;fe&nbsp;13&nbsp;00&nbsp;1d&nbsp;00&nbsp;01&nbsp;01&nbsp;02&nbsp;03&nbsp;01&nbsp;<br /><br /><br />=&nbsp;BEGIN&nbsp;-&nbsp;Get&nbsp;USB&nbsp;Configuration&nbsp;Descriptors<br />ep0Xfer&nbsp;cmd:&nbsp;80&nbsp;06&nbsp;00&nbsp;02&nbsp;00&nbsp;00&nbsp;09&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br />9bytes&nbsp;Configuration&nbsp;Descriptors:&nbsp;09&nbsp;02&nbsp;20&nbsp;00&nbsp;01&nbsp;01&nbsp;00&nbsp;80&nbsp;64&nbsp;<br />ep0Xfer&nbsp;cmd:&nbsp;80&nbsp;06&nbsp;00&nbsp;02&nbsp;00&nbsp;00&nbsp;20&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br />32btyes&nbsp;Configuration&nbsp;Descriptors:&nbsp;09&nbsp;02&nbsp;20&nbsp;00&nbsp;01&nbsp;01&nbsp;00&nbsp;80&nbsp;64&nbsp;09&nbsp;04&nbsp;00&nbsp;00&nbsp;02&nbsp;08&nbsp;06&nbsp;50&nbsp;00&nbsp;07&nbsp;05&nbsp;81&nbsp;02&nbsp;40&nbsp;00&nbsp;00&nbsp;07&nbsp;05&nbsp;02&nbsp;02&nbsp;40&nbsp;00&nbsp;00&nbsp;<br /><br /><br />=&nbsp;BEGIN&nbsp;-&nbsp;Get&nbsp;Slave&nbsp;USB&nbsp;String&nbsp;Descriptors<br />ep0Xfer&nbsp;cmd:&nbsp;80&nbsp;06&nbsp;00&nbsp;03&nbsp;00&nbsp;00&nbsp;02&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br />2bytes&nbsp;String&nbsp;Descriptors:&nbsp;04&nbsp;03&nbsp;<br />ep0Xfer&nbsp;cmd:&nbsp;80&nbsp;06&nbsp;00&nbsp;03&nbsp;00&nbsp;00&nbsp;04&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br />4btyes&nbsp;String&nbsp;Descriptors:&nbsp;04&nbsp;03&nbsp;09&nbsp;04&nbsp;<br /><br /><br />=&nbsp;BEGIN&nbsp;-&nbsp;Get&nbsp;Slave&nbsp;USB&nbsp;Unkown&nbsp;Descriptors<br />ep0Xfer&nbsp;cmd:&nbsp;80&nbsp;06&nbsp;03&nbsp;03&nbsp;09&nbsp;04&nbsp;02&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br />2bytes&nbsp;Unkown&nbsp;Descriptors:&nbsp;1a&nbsp;03&nbsp;<br />ep0Xfer&nbsp;cmd:&nbsp;80&nbsp;06&nbsp;03&nbsp;03&nbsp;09&nbsp;04&nbsp;1a&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br />32bytes&nbsp;Unkown&nbsp;Descriptors:&nbsp;1a&nbsp;03&nbsp;35&nbsp;00&nbsp;42&nbsp;00&nbsp;37&nbsp;00&nbsp;42&nbsp;00&nbsp;31&nbsp;00&nbsp;43&nbsp;00&nbsp;30&nbsp;00&nbsp;30&nbsp;00&nbsp;30&nbsp;00&nbsp;45&nbsp;00&nbsp;36&nbsp;00&nbsp;42&nbsp;00&nbsp;<br /><br /><br />=&nbsp;BEGIN&nbsp;-&nbsp;Set_Configuration<br />ep0Xfer&nbsp;cmd:&nbsp;00&nbsp;09&nbsp;01&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Terminate&nbsp;on&nbsp;short&nbsp;packets!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br /><br /><br />=&nbsp;BEGIN&nbsp;-&nbsp;SetInterface<br />ep0Xfer&nbsp;cmd:&nbsp;01&nbsp;0b&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Terminate&nbsp;on&nbsp;short&nbsp;packets!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br />======================<br />=&nbsp;FINISH&nbsp;-&nbsp;EnumMassDev&nbsp;=<br />======================<br /><br />======================<br />=&nbsp;ENTER&nbsp;-&nbsp;IsMassDev&nbsp;&nbsp;=<br />======================<br /><br />IsMassDev:&nbsp;BulkIN&nbsp;&nbsp;Endpoint&nbsp;=&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MaxPkgSize&nbsp;=&nbsp;64<br />IsMassDev:&nbsp;BulkOUT&nbsp;Endpoint&nbsp;=&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MaxPkgSize&nbsp;=&nbsp;64<br />ep0Xfer&nbsp;cmd:&nbsp;a1&nbsp;fe&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;01&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br />======================<br />=&nbsp;FINISH&nbsp;-&nbsp;IsMassDev&nbsp;=<br />======================<br /><br />InitMassDev:&nbsp;Enter&nbsp;...<br /><br />***********************<br />*&nbsp;ENTER&nbsp;-&nbsp;SPC_Inquiry&nbsp;*<br />***********************<br />BulkSend:&nbsp;Enter&nbsp;---<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />BulkSend:&nbsp;Exit&nbsp;===<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;BulkRcv:&nbsp;Enter&nbsp;---<br />&nbsp;&nbsp;&nbsp;&nbsp;****BulkRcv:&nbsp;BytesRcv&nbsp;=&nbsp;36&nbsp;RetryNum&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;BulkRcv:&nbsp;exit&nbsp;---<br />SPC_Inquiry:&nbsp;return&nbsp;data=:00&nbsp;80&nbsp;00&nbsp;01&nbsp;1f&nbsp;00&nbsp;00&nbsp;00&nbsp;4b&nbsp;69&nbsp;6e&nbsp;67&nbsp;73&nbsp;74&nbsp;6f&nbsp;6e&nbsp;44&nbsp;61&nbsp;74&nbsp;61&nbsp;54&nbsp;72&nbsp;61&nbsp;76&nbsp;65&nbsp;6c&nbsp;65&nbsp;72&nbsp;20&nbsp;32&nbsp;2e&nbsp;30&nbsp;50&nbsp;4d&nbsp;41&nbsp;50&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BulkRcv:&nbsp;Enter&nbsp;---<br />&nbsp;&nbsp;&nbsp;&nbsp;****BulkRcv:&nbsp;BytesRcv&nbsp;=&nbsp;13&nbsp;RetryNum&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;BulkRcv:&nbsp;exit&nbsp;---<br />SPC_Inquiry:&nbsp;CSW=:55&nbsp;53&nbsp;42&nbsp;53&nbsp;60&nbsp;a6&nbsp;24&nbsp;de&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;<br /><br /><br />**********************************<br />*&nbsp;ENTER&nbsp;-&nbsp;RBC_ReadFormatCapacity&nbsp;*<br />**********************************<br />BulkSend:&nbsp;Enter&nbsp;---<br />BulkSend:&nbsp;Exit&nbsp;===<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;BulkRcv:&nbsp;Enter&nbsp;---<br />=&nbsp;USBXfer-&nbsp;Terminate&nbsp;on&nbsp;STALL!<br />&nbsp;&nbsp;&nbsp;&nbsp;****BulkRcv:&nbsp;BytesRcv&nbsp;=&nbsp;-80&nbsp;RetryNum&nbsp;=&nbsp;0<br /><br />ClearFeature:&nbsp;END&nbsp;point&nbsp;1<br />ep0Xfer&nbsp;cmd:&nbsp;02&nbsp;01&nbsp;00&nbsp;00&nbsp;01&nbsp;00&nbsp;00&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Terminate&nbsp;on&nbsp;short&nbsp;packets!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br /><br />ClearFeature:&nbsp;END&nbsp;point&nbsp;2<br />ep0Xfer&nbsp;cmd:&nbsp;02&nbsp;01&nbsp;00&nbsp;00&nbsp;02&nbsp;00&nbsp;00&nbsp;00&nbsp;<br />=&nbsp;ep0Xfer-&nbsp;SETUP&nbsp;stage&nbsp;finish!<br />=&nbsp;ep0Xfer-&nbsp;data&nbsp;stage&nbsp;finish!<br />=&nbsp;USBXfer-&nbsp;Terminate&nbsp;on&nbsp;short&nbsp;packets!<br />=&nbsp;ep0Xfer-&nbsp;status&nbsp;stage&nbsp;finish!<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BulkRcv:&nbsp;Enter&nbsp;---<br />&nbsp;&nbsp;&nbsp;&nbsp;****BulkRcv:&nbsp;BytesRcv&nbsp;=&nbsp;13&nbsp;RetryNum&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;BulkRcv:&nbsp;exit&nbsp;---<br />RBC_ReadFormatCapacity:&nbsp;CSW=:55&nbsp;53&nbsp;42&nbsp;53&nbsp;60&nbsp;a6&nbsp;24&nbsp;de&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;01&nbsp;<br /><br /><br />****************************<br />*&nbsp;ENTER&nbsp;-&nbsp;SPC_RequestSense&nbsp;*<br />****************************<br />BulkSend:&nbsp;Enter&nbsp;---<br />BulkSend:&nbsp;Exit&nbsp;===<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;BulkRcv:&nbsp;Enter&nbsp;---<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Terminate&nbsp;on&nbsp;NAK!<br />&nbsp;&nbsp;&nbsp;&nbsp;****BulkRcv:&nbsp;BytesRcv&nbsp;=&nbsp;-40&nbsp;RetryNum&nbsp;=&nbsp;0<br />****************************<br />*&nbsp;ENTER&nbsp;-&nbsp;RBC_ReadCapacity&nbsp;*<br />****************************<br />BulkSend:&nbsp;Enter&nbsp;---<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Retry&nbsp;on&nbsp;NAK!<br />=&nbsp;USBXfer-&nbsp;Terminate&nbsp;on&nbsp;NAK!<br />BulkSend:&nbsp;usbXferRtnVal&nbsp;=&nbsp;-40<br />BulkSend:&nbsp;usbXfer&nbsp;FAIL&nbsp;---<br />
 楼主| fjh 发表于 2008-5-12 12:04 | 显示全部楼层

请00同学帮帮忙分析一下

请00同学帮帮忙分析一下,俺接触这个才几天,1.1协议翻烂了都没得要领。<br /><br />PS.&nbsp;俺也是SCUT的,00我跟你有几面之缘呢:)
 楼主| fjh 发表于 2008-5-12 12:11 | 显示全部楼层

有点奇怪的是

有点奇怪的是,这个kingston的U盘在format 或者 在PC写入过后,插单片机的板子上上电,第一次都如上,不过,然后断电,再上电,就次次都能过(RequestSense那里能过了,而不是NAK),真是有点摸不着头脑。<br /><br />我的NAK重发间隔是15毫秒(感觉已经大得离谱了...),重发次数最多20次.
computer00 发表于 2008-5-12 20:34 | 显示全部楼层

你可以复位总线,重新枚举试试。

另外,对NAK的重试,可以一直试的,不用留什么间隔。
 楼主| fjh 发表于 2008-5-13 10:32 | 显示全部楼层

问题暂时解决

允许了最多3次复位device的重试,缩短NAK重发间隔到若干个微秒,增大重发次数<br />至1000次.结果RequestSense那里重发了176次后就过了(无语...).<br /><br />不过手头这个U盘是解决了,还会碰到哪些钉子U盘还不清楚....<br />U盘兼容性问题确实不好解决.
平常人 发表于 2008-5-13 21:54 | 显示全部楼层

如果是自己做的Host,没有必要发那些你不需要的命令

ReadFormatCapacity&nbsp;就属于不需要的命令;试试不要发这个命令。
 楼主| fjh 发表于 2008-5-14 10:38 | 显示全部楼层

是这样的

此前调过一个U盘,不发ReadFormatCapacity就搞不定.发了就好了.<br />所以只能照发,加差错处理程序来补救了.@@
您需要登录后才可以回帖 登录 | 注册

本版积分规则

fjh

16

主题

56

帖子

0

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