阅读:1515回复:8
枚举过程中出现pid check failed.12.0 CTL 00 05 02 00 00 00 00 00 SET ADDRESS 20.1.0 12.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 21.1.0 12.0 DI 12 01 00 02 00 00 00 40 71 04 34 12 00 02 00 00 00 01 .......@q.4..... 21.2.0 12.0 CTL 80 06 00 02 00 00 09 00 GET DESCRIPTOR 22.1.0 12.0 DI 09 02 25 00 01 01 00 a0 64 ..%.....d 22.2.0 12.0 CTL a3 00 00 00 03 00 04 00 GET STATUS 23.1.0 12.0 DI 03 01 00 00 .... 23.2.0 12.0 CTL 23 03 04 00 03 00 00 00 SET FEATURE 24.1.0 12.1 DI 08 00 00 00 e0 3f 42 f2 .....?B. 25.1.0 12.0 CTL a3 00 00 00 03 00 04 00 GET STATUS 26.1.0 12.0 DI 03 01 10 00 .... 26.2.0 12.0 CTL 23 01 14 00 03 00 00 00 CLEAR FEATURE 27.1.0 12.0 CTL 80 06 00 01 00 00 40 00 GET DESCRIPTOR 28.1.0 12.0 DI 12 01 00 02 00 00 00 40 71 04 34 12 00 02 00 00 00 01 .......@q.4..... 28.2.0 12.0 CTL a3 00 00 00 03 00 04 00 GET STATUS 29.1.0 12.0 DI 03 01 00 00 .... 29.2.0 12.0 CTL 23 03 04 00 03 00 00 00 SET FEATURE 30.1.0 12.1 DI 08 00 00 00 e0 3f 42 f2 .....?B. 31.1.0 12.0 CTL a3 00 00 00 03 00 04 00 GET STATUS 32.1.0 12.0 DI 03 01 10 00 .... 32.2.0 12.0 CTL 23 01 14 00 03 00 00 00 CLEAR FEATURE 33.1.0 12.0 CTL 00 05 02 00 00 00 00 00 SET ADDRESS 34.1.0 12.0 USTS 06 00 00 c0 pid check failed 34.2.0 12.0 CTL a3 00 00 00 03 00 04 00 GET STATUS 35.1.0 12.0 DI 03 01 00 00 .... 35.2.0 12.0 CTL 23 03 04 00 03 00 00 00 SET FEATURE 36.1.0 12.1 DI 08 00 00 00 90 06 47 80 ......G. 37.1.0 12.0 CTL a3 00 00 00 03 00 04 00 GET STATUS 38.1.0 12.0 DI 03 01 10 00 .... 38.2.0 12.0 CTL 23 01 14 00 03 00 00 00 CLEAR FEATURE 39.1.0 12.0 CTL 80 06 00 01 00 00 40 00 GET DESCRIPTOR 40.1.0 12.0 USTS 06 00 00 c0 pid check failed 40.2.0 12.0 CTL 23 01 01 00 03 00 00 00 CLEAR FEATURE 41.1.0 以上是我在枚举过程中抓到的数据,多次出现pid check failed,枚举不能成功。 我是这样理解的,PID是硬件层的东西,固件对其不作任何的处理。但是不知道为什么会出现pid错误。各位同仁有没有遇到同样的问题?这有可能是硬件的问题吗? |
|
最新喜欢:![]() |
沙发#
发布于:2004-12-26 12:13
这样理解不对吧,PID要通过固件从硬件里面读出来,然后通过usb发上来给主机,所以可以查查这个过程有没有错。当然首先要看看主机收到的PID数据是什么?一般不会是硬件问题。 |
|
板凳#
发布于:2004-12-26 14:41
PID 不是IN,OUT等等吗?我在固件里能读到吗?我好像觉得读不到呢
|
|
地板#
发布于:2004-12-27 13:55
你没有响应HOST发给你的GET DESCRIPTOR命令.
|
|
|
地下室#
发布于:2004-12-27 14:12
12.0 CTL 80 06 00 01 00 00 40 00 GET DESCRIPTOR 28.1.0
12.0 DI 12 01 00 02 00 00 00 40 71 04 34 12 00 02 00 00 00 01 .......@q.4..... 28.2.0 这个不说明我响应get descriptor了吗? 这个描述符是我设置的描述符。 |
|
5楼#
发布于:2004-12-27 14:35
12.0 CTL 00 05 02 00 00 00 00 00 SET ADDRESS 20.1.0
12.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 21.1.0 12.0 DI 12 01 00 02 00 00 00 40 71 04 34 12 00 02 00 00 00 01 .......@q.4..... 21.2.0 12.0 CTL 80 06 00 02 00 00 09 00 GET DESCRIPTOR 22.1.0 12.0 DI 09 02 25 00 01 01 00 a0 64 ..%.....d 22.2.0 这些都是正确的.但后面: 12.0 CTL a3 00 00 00 03 00 04 00 GET STATUS 23.1.0 12.0 DI 03 01 00 00 .... 23.2.0 这是HOST发送给HUB的命令,表示有一个有效的设备接入. 然后就乱了. PID是PACKAGE ID,这个在BUSHOUND里是被屏蔽的. 你最好跟一下中断,看看各个中断的顺序是什么. |
|
|
6楼#
发布于:2004-12-27 14:47
多谢,我的中断可能有问题,比如reset,一次连接到主机有3个reset.而get device descriptor有时也会有两三个。不知这是什么原因?
|
|
7楼#
发布于:2004-12-27 18:36
设备接入后,一般只会产生一次中断,如果再产生中断那可能是HOST没
有识别到你的设备或识别过程错误,这样它就会在给你发个中断.还有 就是你的USB控制芯片重新连接,就好象你拔除了设备,再插上一样. 你查查你的程序吧. |
|
|
8楼#
发布于:2004-12-28 19:20
bus hound抓到数据的顺序是正确 的。先get descriptor,这部分说明host已经接收到数据,接下来set address.bus hound 也抓到了。再下来的get descriptor好像就不可以了。
这会不会是descriptor的错误造成的呢? |
|