SET CONFIG 与GET DESCRIPTOR的几个小问题,请高手指点

[复制链接]
8333|8
 楼主| icecut 发表于 2007-10-4 13:34 | 显示全部楼层 |阅读模式
我用at97sam7s64的USB口:<br />Hlr&nbsp;Ept0&nbsp;Stp&nbsp;NewReq&nbsp;Std&nbsp;gDesc&nbsp;Cfg&nbsp;<br />-------1024-------.//这是配置请求包的wLength的大小<br />Write0(67)&nbsp;-9--2--67--0--2--1--0--224-//这是回发的数据的10进制共67个<br />&nbsp;Hlr&nbsp;Ept0&nbsp;Wr&nbsp;8&nbsp;-50--9--4--0--0--1--2--2-<br />&nbsp;Hlr&nbsp;Ept0&nbsp;Wr&nbsp;8&nbsp;-1--0--5--36--0--16--1--5-<br />&nbsp;Hlr&nbsp;Ept0&nbsp;Wr&nbsp;8&nbsp;-36--1--1--1--4--36--2--7-<br />&nbsp;Hlr&nbsp;Ept0&nbsp;Wr&nbsp;8&nbsp;-5--36--6--0--1--7--5--131-<br />&nbsp;Hlr&nbsp;Ept0&nbsp;Wr&nbsp;8&nbsp;-3--64--0--16--9--4--1--0-<br />&nbsp;Hlr&nbsp;Ept0&nbsp;Wr&nbsp;8&nbsp;-2--10--0--0--0--7--5--1-<br />&nbsp;Hlr&nbsp;Ept0&nbsp;Wr&nbsp;8&nbsp;-2--64--0--0--7--5--130--2-<br />&nbsp;Hlr&nbsp;Ept0&nbsp;Wr&nbsp;8&nbsp;-64--0--0-<br />&nbsp;Hlr&nbsp;Ept0&nbsp;Wr&nbsp;3&nbsp;EoT&nbsp;<br />&nbsp;Hlr&nbsp;Ept0&nbsp;Rd&nbsp;Ack&nbsp;<br />&nbsp;Hlr&nbsp;Ept0&nbsp;Stp&nbsp;NewReq&nbsp;Std&nbsp;sCfg&nbsp;Write0(0)&nbsp;<br />&nbsp;Hlr&nbsp;Ept0&nbsp;Wr&nbsp;0&nbsp;EoT&nbsp;SetCfg()&nbsp;CfgEpt1&nbsp;CfgEpt2&nbsp;CfgEpt3&nbsp;<br />&nbsp;&nbsp;24.0&nbsp;&nbsp;CTL&nbsp;&nbsp;&nbsp;80&nbsp;06&nbsp;00&nbsp;02&nbsp;&nbsp;00&nbsp;00&nbsp;00&nbsp;04&nbsp;&nbsp;GET&nbsp;DESCRIPTOR&nbsp;&nbsp;1.1.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;24.0&nbsp;&nbsp;DI&nbsp;&nbsp;&nbsp;&nbsp;09&nbsp;02&nbsp;43&nbsp;00&nbsp;&nbsp;02&nbsp;01&nbsp;00&nbsp;e0&nbsp;&nbsp;..C.....&nbsp;&nbsp;&nbsp;2.2.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32&nbsp;09&nbsp;04&nbsp;00&nbsp;&nbsp;00&nbsp;01&nbsp;02&nbsp;02&nbsp;&nbsp;2.......&nbsp;&nbsp;&nbsp;2.2.8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;01&nbsp;00&nbsp;05&nbsp;24&nbsp;&nbsp;00&nbsp;10&nbsp;01&nbsp;05&nbsp;&nbsp;...$....&nbsp;&nbsp;&nbsp;2.2.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24&nbsp;01&nbsp;01&nbsp;01&nbsp;&nbsp;04&nbsp;24&nbsp;02&nbsp;07&nbsp;&nbsp;$....$..&nbsp;&nbsp;&nbsp;2.2.24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;05&nbsp;24&nbsp;06&nbsp;00&nbsp;&nbsp;01&nbsp;07&nbsp;05&nbsp;83&nbsp;&nbsp;.$......&nbsp;&nbsp;&nbsp;2.2.32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;03&nbsp;40&nbsp;00&nbsp;10&nbsp;&nbsp;09&nbsp;04&nbsp;01&nbsp;00&nbsp;&nbsp;.@......&nbsp;&nbsp;&nbsp;2.2.40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;02&nbsp;0a&nbsp;00&nbsp;00&nbsp;&nbsp;00&nbsp;07&nbsp;05&nbsp;01&nbsp;&nbsp;........&nbsp;&nbsp;&nbsp;2.2.48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;02&nbsp;40&nbsp;00&nbsp;00&nbsp;&nbsp;07&nbsp;05&nbsp;82&nbsp;02&nbsp;&nbsp;.@......&nbsp;&nbsp;&nbsp;2.2.56&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;24.0&nbsp;&nbsp;CTL&nbsp;&nbsp;&nbsp;&nbsp;00&nbsp;09&nbsp;01&nbsp;00&nbsp;&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;&nbsp;SET&nbsp;CONFIG&nbsp;3.1.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;24.0&nbsp;&nbsp;USTS&nbsp;&nbsp;&nbsp;00&nbsp;0f&nbsp;00&nbsp;c0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bad&nbsp;config&nbsp;desc&nbsp;3.2.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;24.0&nbsp;&nbsp;CTL&nbsp;&nbsp;&nbsp;&nbsp;00&nbsp;09&nbsp;00&nbsp;00&nbsp;&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;&nbsp;SET&nbsp;CONFIG&nbsp;&nbsp;&nbsp;&nbsp;4.1.0&nbsp;&nbsp;&nbsp;<br />//问题是BUSBOUND收到了64个字符,与发送的相同。最后三个丢失了?哪里去了?<br />在SET_CONFIG这一项,出现的四个字符我不知道哪里来到。到现在没找到。SET_CONFIG这里第三个配置值是01和00,是什么意思,DDK上我没找到,书上也没发现。<br />配置没有成功,从DEBUG信息上看,最后一个SET_CONFIG没有响应。是吗?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />
 楼主| icecut 发表于 2007-10-4 13:37 | 显示全部楼层

附加

typedef&nbsp;struct&nbsp;{<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;&nbsp;bmRequestType;//:8;&nbsp;&nbsp;&nbsp;&nbsp;//!&lt&nbsp;Characteristics&nbsp;of&nbsp;the&nbsp;request<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;&nbsp;bRequest;//:8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//!&lt&nbsp;Particular&nbsp;request<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;short&nbsp;&nbsp;wValue;//:16;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//!&lt&nbsp;Request-specific&nbsp;parameter<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;short&nbsp;&nbsp;wIndex;//:16;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//!&lt&nbsp;Request-specific&nbsp;parameter<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;short&nbsp;&nbsp;wLength;//:16;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//!&lt&nbsp;Length&nbsp;of&nbsp;data&nbsp;for&nbsp;the&nbsp;data&nbsp;phase<br /><br />}&nbsp;S_usb_request;<br />这里我注释过了位数,是不是ADS1.2的数据长度我没搞明白?谢谢指点
devusb 发表于 2007-10-4 20:18 | 显示全部楼层

SET_CONFIG之后没有出现bus reset,time out之类的说明正常

SET_CONFIG是一个没有数据传输的,SETUP命令包里已经有一些参数了。<br />所以如果这条命令正确应答,就是DEVICE回一个空包就表示命令应答正常,BUSHOUND只会抓到如你所抓的信息。<br />ADS1.2也有结构体的字对齐问题的话,可能默认的结构体的任何变量都是占2个/4个字节的,不管你申明成什么类型。
computer00 发表于 2007-10-4 21:21 | 显示全部楼层

bushound没有看到后面的部分,也许是你bushound设置了只显示64

  
 楼主| icecut 发表于 2007-10-4 21:52 | 显示全部楼层

没有找到结果。

我把BUSBOUND修改了,显示正确67个字符了。<br />用一个好用的固件,改成我驱动的PID,同样的不正确,问题定位在驱动方面。<br /><br />135.250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;Usb_6125Device::DefaultPnp++.&nbsp;&nbsp;IRP&nbsp;856C8790<br />135.250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;IRP:&nbsp;Major=IRP_MJ_PNP&nbsp;Minor=&ltunknown&nbsp;minor&nbsp;function&gt&nbsp;(0x18)&nbsp;Flags=0x0<br />135.250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;Usb_6125Device::DefaultPnp--.&nbsp;&nbsp;IRP&nbsp;856C8790,&nbsp;STATUS&nbsp;c00000bb<br />135.250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;Usb_6125Device::DefaultPnp++.&nbsp;&nbsp;IRP&nbsp;856C8790<br />135.250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;IRP:&nbsp;Major=IRP_MJ_PNP&nbsp;Minor=IRP_MN_QUERY_RESOURCE_REQUIREMENTS&nbsp;(0xb)&nbsp;Flags=0x0<br />135.250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;Usb_6125Device::DefaultPnp--.&nbsp;&nbsp;IRP&nbsp;856C8790,&nbsp;STATUS&nbsp;0<br />135.250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;Usb_6125Device::DefaultPnp++.&nbsp;&nbsp;IRP&nbsp;856C8790<br />135.250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;IRP:&nbsp;Major=IRP_MJ_PNP&nbsp;Minor=IRP_MN_FILTER_RESOURCE_REQUIREMENTS&nbsp;(0xd)&nbsp;Flags=0x0<br />135.250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;Usb_6125Device::DefaultPnp--.&nbsp;&nbsp;IRP&nbsp;856C8790,&nbsp;STATUS&nbsp;c00000bb<br />135.266&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;Usb_6125Device::SystemControl++.&nbsp;&nbsp;IRP&nbsp;856C2008<br />135.266&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;IRP:&nbsp;Major=IRP_MJ_SYSTEM_CONTROL&nbsp;Minor=IRP_MN_REGINFO_EX&nbsp;(0xb)&nbsp;Flags=0x0<br />135.266&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;Usb_6125Device::SystemControl--.&nbsp;&nbsp;IRP&nbsp;856C2008,&nbsp;STATUS&nbsp;0<br />135.266&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;Usb_6125Device::OnStartDevice++.&nbsp;&nbsp;IRP&nbsp;856C8790<br />135.313&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;ActivateConfiguration&nbsp;Error:&nbsp;H/W&nbsp;did&nbsp;not&nbsp;accept&nbsp;configuration&nbsp;URB<br />135.313&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usb_6125:&nbsp;Usb_6125Device::OnStartDevice--.&nbsp;&nbsp;IRP&nbsp;856C8790,&nbsp;STATUS&nbsp;c0000001<br />这是MONITER监视到的结果,说明我自己生成的驱动可能有问题。出问题的地方都是我没处理的默认DS3.2生成的。这些输出也是它自动生成的。你们有没有见过此类问题啊?谢谢版主和圈圈
 楼主| icecut 发表于 2007-10-5 16:06 | 显示全部楼层

疯了……

现在采用串口监视程序运行状态,busbound监视USB状态,USB通过虚拟机驱动到虚拟机xp,然后在虚拟机上开busbound和驱动MONITor,结果是:外部机器成功枚举,虚拟机机器出错。并且最后一个<br />24.0&nbsp;&nbsp;CTL&nbsp;&nbsp;&nbsp;&nbsp;00&nbsp;09&nbsp;00&nbsp;00&nbsp;&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;&nbsp;SET&nbsp;CONFIG&nbsp;&nbsp;&nbsp;&nbsp;4.1.0&nbsp;&nbsp;&nbsp;<br />虚拟机没有发到外部环境中,就是说通过外部busbound可以与硬件通信。而虚拟机上的不能。我的softic还不能用,一用就死机。
computer00 发表于 2007-10-6 08:28 | 显示全部楼层

也许虚拟机的bug吧,着可难说了...

  
 楼主| icecut 发表于 2007-10-6 12:22 | 显示全部楼层

唉,ds3.2不可信啊

确切说就是ds3.2的配置函数有误。我现在用DDK提供的源代码,改了一下PID和VID,就能枚举成功,也不蓝屏了。然后改改端点设置,试试有没有其他问题。微软的东西,还要靠微软的提过的例程啊。
computer00 发表于 2007-10-7 10:01 | 显示全部楼层

呵呵,DS生成的代码的确会有点小问题,刚开始还会编译不过

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1120

主题

15359

帖子

588

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