阅读:1292回复:5
请教host和device之间的枚举问题
我现在遇到一个问题!
就是档设备刚刚插上主机的usb端口的时候 主机发送一个get_Descriptor() device收到后,会发送相应的18个Bytes的数据给主机 接下来主机就应该再发送Set_Address() 可是我在测试的时候,主机确没有发送这个请求包 这会是什么原因呢? 是我发送给主机的Get_descripter的数据不正确 还是因为什么其他的原因 这时候设备驱动程序已经开始起作用了吗? |
|
沙发#
发布于:2004-04-15 16:21
看看以前的帖子很多这方面的内容啊。
一般是先get description(要求取9个字节) 设备发送9个字节的应答 然后主机会再次发送get description(这次要求20个字节) 设备发送20个字节的应答就可以了。不过设备描述符不要弄错了。 |
|
板凳#
发布于:2004-04-15 21:30
可是我现在遇到的问题就是device送给主机get_descriptor()的回应包之后,主机没有继续发送下一个数据包,这是什么原因呢?
|
|
地板#
发布于:2004-04-15 21:35
嗯,刚才可能没有说清楚
现在只是到get_descriptor()的device请求的阶段, 我看了以前的介绍 下一步应该是主机发送set_address()啊 可是我现在遇到的问题就是主机什么都不发了 这是驱动的问题吗? 还是我的硬件问题啊 |
|
地下室#
发布于:2004-04-16 10:22
你的程序有问题。
一般这种情况的话,首先怀疑自己的程序。 你用BUS HOUND抓一下包看看。看主机有没有发出来你没有收到。 如果你的应答包不对的话,主机会继续请求三次的,没理由不动的。 |
|
5楼#
发布于:2004-04-16 13:50
我也觉得应该是我的程序的问题
克现在的关键就是我不知道是那里出的问题!:( 我用bushound看过了 没有出现get_descriptot() (80,06,00,01,00,00,40,ffh) 但是我在逻辑分析仪上观察到了这组数据 而且firmware已经有了反应 活送给主机相应的数据了 (12,01,00,02,00,00,00,40,7c,8d,5e,6f,00,00,00,00,00,01) 然后主机发送了status状态的数据包! 我发送了相应的握手信号ack 这又什么问题吗? 接下来主机就没有反应了 why? |
|