liuwan
驱动小牛
驱动小牛
  • 注册日期2001-10-15
  • 最后登录2004-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1454回复:2

现在才发现,这个帖子应该发在这里――使用过BUS HOUND工具的高手们请进,40分题。

楼主#
更多 发布于:2002-07-02 09:11
我的任务是采用USB连接把三星FLASH设备实现成移动硬盘,我的USB芯片用D12,设备类当然是使用MASS STORAGE类,命令格式是SCSI 传输命令集,传输协议用BULK ONLY协议。在固件中的端点描述符中我共定义了两个端点,BULK IN和BULK OUT端点,根据D12手册,它们都是2号端点。我用BUS HOUND捕捉到目前我的程序在插入枚举时总线上的数据如下:
9.0 CTL 80 06 00 01 - 00 00 12 00 GET DESCRIPTR 0us 1.1.0
9.0 DI 12 01 10 01 - 00 00 00 10 ........ 4.2ms 1.2.0
a0 0e 03 68 - 00 01 00 00 ...h.... 1.2.8
00 01 .. 1.2.16
9.0 CTL 80 06 00 02 - 00 00 09 00 GET DESCRIPTR 31us 2.1.0
9.0 DI 09 02 20 00 - 01 01 00 80 .. ..... 3.9ms 2.2.0
32 2 2.2.8
9.0 CTL 80 06 00 02 - 00 00 20 00 GET DESCRIPTR 34us 3.1.0
9.0 DI 09 02 20 00 - 01 01 00 80 .. ..... 4.9ms 3.2.0
32 09 04 00 - 00 02 08 06 2....... 3.2.8
50 00 07 05 - 82 02 40 00 P.....@. 3.2.16
00 07 05 02 - 02 40 00 00 .....@.. 3.2.24
9.0 CTL 00 09 01 00 - 00 00 00 00 SET CONFIG 28us 4.1.0
9.2 DO 55 53 42 43 - c8 3a 3d 81 USBC.:=. 4.9ms 5.1.0
24 00 00 00 - 80 00 06 12 $....... 5.1.8
00 00 00 24 - 00 00 00 00 ...$.... 5.1.16
00 00 00 00 - 00 00 00 ....... 5.1.24
(*出问题处*)9 DI 00 80 02 02 - 1f 00 00 00 ........ 997us 7.1.0
4f 54 69 20 - 20 20 20 20 OTi 7.1.8
55 6c 74 72 - 61 20 46 6c Ultra Fl 7.1.16
6f 70 70 79 - 20 20 20 20 oppy 7.1.24
31 2e 30 30 1.00 7.1.32
9.2 DO 55 53 42 43 - c8 3a 3d 81 USBC.:=. 20sc 8.1.0
24 00 00 00 - 80 00 06 12 $....... 8.1.8
00 00 00 24 - 00 00 00 00 ...$.... 8.1.16
00 00 00 00 - 00 00 00 ....... 8.1.24

可惜帖子中无法清晰的排版,前面的9代表我的设备序号,9.0代表控制管道,9.2代表我的批管道。DI 表示数据方向由设备往主机,DO表示数据方向由主机往设备。
现在我的问题出在我标识处,本来此处应该是响应上一个BULK OUT(9.2) 通道发来的CBW命令块,命令块中包含了INQUIRY命令,此处应该由BULK IN(9.2)通道向主机发回该命令的数据部分,事实上我发回的数据部分格式没有问题,但是前面的通道标识号却不知为何变成了 9 !!而我希望的是9.2,请问各位大侠:我的问题出在何处?为何bus hound不能识别我的bulk in通道序号,我在描述符中可是正确的送出了这两个端点的描述符啊。
问题很急,恳请各位大虾援手,一定给分。
菜菜
liuwan
驱动小牛
驱动小牛
  • 注册日期2001-10-15
  • 最后登录2004-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-02 09:11
附:我的固件程序中的端点描述符部分,我觉得这里面我没有问题。大家人多眼睛亮,帮我看看:(注:D12的两个批端点都是2号端点)
const USB_ENDPOINT_DESCRIPTOR BulkInDescriptor =
{
0x07,
USB_ENDPOINT_DESCRIPTOR_TYPE,
0x82, //方向为IN的2号端点
USB_ENDPOINT_TYPE_BULK,
SWAP(0x0040),
0,
};

const USB_ENDPOINT_DESCRIPTOR BulkOutDescriptor =
{
0x07,
USB_ENDPOINT_DESCRIPTOR_TYPE,
0x02, //方向为OUT的2号端点
USB_ENDPOINT_TYPE_BULK,
SWAP(0x0040),
0
};
菜菜
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-02 11:44
我在那个版回答了,不知对不对呢? :D
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
游客

返回顶部