阅读:1637回复:7
有关mass storage协议的疑问
刚刚阅读了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] |
|
沙发#
发布于: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. |
|
板凳#
发布于: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?
|
|
地板#
发布于:2003-06-11 12:33
这其实是很简单的问题,你能不能讲的清楚一些!把具体的过程描述一下!或者bushound收到的全部都贴出来!
|
|
地下室#
发布于: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。这样行不行? |
|
5楼#
发布于:2003-06-12 10:15
你的发送过程有错!因该发送完全部的数据,再回送CSW,就这么简单!
|
|
6楼#
发布于:2003-06-12 10:58
回送csw是发送完数据马上会送吗?还是等待endpoint 2 IN的中断到来再回送?呵呵,分不多,将就点吧。
|
|
7楼#
发布于:2003-06-12 15:26
我不知道你用的控制器,你试一下如果每次发送完成都有中断,就应该在下次收到中断后,否则就。。。。 :)
祝你好运! |
|