clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1638回复:7

有关mass storage协议的疑问

楼主#
更多 发布于:2003-06-10 16:56
刚刚阅读了frank大哥的usb项目技术报告,其中提到bulk-out接收到命令,进行解释,根据UFI再发送数据。而bulk-IN在数据传输完了,发送csw。我的程序一直都是这样写的,在完成INQUIRY、MED REMOVAL、TEST UNIT RDY后,处理READ CAPACITY时发现问题:
DO 55 53 42 43 - 64 54 ac da  USBCdT..      
 08 00 00 00 - 80 00 0a
 00 00 00 00 - 00 00 00
 00 00 00 00 - 00 00
USTS 0c 00 00 c0                overrun        
DI 55 53 42 53 - 64 54 ac da  USBSdT..(奇怪的地方)
SSTS 0e                         bus reset
DI 55 53 42 53 - 64 54 ac da  USBSdT..
设备并没有返回8 byte的数据,而是8 byte的csw!
这是怎么回事?我的csw在endpoint 2 IN中输出,普通数据返回在外部循环中处理。这样行不行?

[编辑 -  6/11/03 by  clementzhao]
hwfdriver
驱动牛犊
驱动牛犊
  • 注册日期2003-05-01
  • 最后登录2004-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-10 19:15
Your strange is a CBW which is \"usbc\" ASCII code!
and it should be transmitted to bulk out endpoint.
I use an english OS,it is difficult to write Chinese.
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-11 09:22
CBW does transmitted to bulk out endpoint.And I have done INQUIRY、MED REMOVAL、TEST UNIT RDY steps.The problem is when I sent the Data of \"READ CAPACITY\",it`s wrong!Can you answer it clearly?
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-11 12:33
这其实是很简单的问题,你能不能讲的清楚一些!把具体的过程描述一下!或者bushound收到的全部都贴出来!
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-11 15:48
  7  CDB    25 00 00 00 - 00 00 00 00  READ CAPACITY
            00 00                                  
  6  DO     55 53 42 43 - 54 39 a0 da  USBCT9..    
            08 00 00 00 - 80 00 0a 25  .......%    
            00 00 00 00 - 00 00 00 00  ........    
            00 00 00 00 - 00 00 00     .......      
  6  DI     00 00 f9 ff - 00 00 02 00  ........    
  6  DI     55 52 42 53 - 54 39 a0 da  URBST9..    
            00 00 00 00 - 00           .....        
  7  DI     00 00 f9 ff - 00 00 02 00  ........    
  7  SSTS   01                         ok          
  7  CDB    28 00 00 00 - 00 00 00 00  READ10      
            01 00                                  
  6  DO     55 53 42 43 - 54 39 a0 da  USBCT9..    
            00 02 00 00 - 80 00 0a 28  .......(    
            00 00 00 00 - 00 00 00 01  ........    
            00 00 00 00 - 00 00 00     .......      
  6  DI     fa 33 c0 8e - d0 bc 00 7c  .3......    
            8b f4 50 07 - 50 1f fb fc  ..P.P...    
            bf 00 06 b9 - 00 01 f2 a5  ........    
            ea 1d 06 00 - 00 be be 07  ........    
            b3 04 80 3c - 80 74 0e 80  ...<.t..    
            3c 00 75 1c - 83 c6 10 fe  <.u.....    
            cb 75 ef cd - 18 8b 14 8b  .u......    
            4c 02 8b ee - 83 c6 10 fe  L.......    
            55 52 42 53 - 54 39 a0 da  URBST9..    
            00 00 00 00 - 00           .....        
  6  DI     55 52 42 53 - 54 39 a0 da  URBST9..    
            00 00 00 00 - 00           .....        
  7  DI     fa 33 c0 8e - d0 bc 00 7c  .3......    
            8b f4 50 07 - 50 1f fb fc  ..P.P...    
            bf 00 06 b9 - 00 01 f2 a5  ........    
            ea 1d 06 00 - 00 be be 07  ........    
            b3 04 80 3c - 80 74 0e 80  ...<.t..    
            3c 00 75 1c - 83 c6 10 fe  <.u.....    
            cb 75 ef cd - 18 8b 14 8b  .u......    
            4c 02 8b ee - 83 c6 10 fe  L.......    
            55 52 42 53 - 54 39 a0 da  URBST9..(注意这里,csw)    
            00 00 00 00 - 00           .....        
  7  SSTS   12                         data overrun
修改了一下,稍微好点,能到read 10那步了。现在的问题是连续512 bytes发送不正确。第一次发完64个,后面跟的是csw!而且无法继续发送剩下的。我怀疑是csw,cbw处理的时序有问题。请教一下,究竟csw,cbw在那里处理比较好。我现在在中断中读cbw、发csw,在外部发送data。我想在中断设标志,在外部清中断寄存器,再读cbw、发data、发csw。这样行不行?
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-12 10:15
你的发送过程有错!因该发送完全部的数据,再回送CSW,就这么简单!
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-12 10:58
回送csw是发送完数据马上会送吗?还是等待endpoint 2 IN的中断到来再回送?呵呵,分不多,将就点吧。
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-12 15:26
我不知道你用的控制器,你试一下如果每次发送完成都有中断,就应该在下次收到中断后,否则就。。。。 :)
祝你好运!
游客

返回顶部