阅读:928回复:4
中断过去了,新问题又来了,wly76&likeddk,帮帮俺阿!!
呵呵,破中断坑了我好几天,电路查了其实没毛病,一个弱智的错误导致中断不好用,,就是。。。。。在注册中断函数的时候,中断函数不应该加括号。。。。 :D,,,害得很多人都跟着找急
尤其是wly76和likeddk!!!!多谢你们了 不过我这次中断可以进了,现在出现了新问题,下面是我用bus bound得到的数据!!!请大家帮我分析一下问题出再什么地方!! --------------------------------------------------------- Dev Phase Data Info Time Cmd.Phase.Ofs --- ----- ------------------------- ------------- ----- ------------------ 6 DI 02 . 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 01 01 01 00 .... 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 01 01 01 00 .... 6 CTL 23 01 10 00 - 01 00 00 00 CLASS 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 01 01 00 00 .... 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 CTL 23 03 04 00 - 01 00 00 00 CLASS 6 DI 02 . 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 03 01 10 00 .... 6 CTL 23 01 14 00 - 01 00 00 00 CLASS 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 03 01 00 00 .... 6 DI 12 01 01 10 - dc 00 00 10 ........ 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 03 01 00 00 .... 6 CTL 23 03 04 00 - 01 00 00 00 CLASS 6 DI 02 . 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 03 01 10 00 .... 6 CTL 23 01 14 00 - 01 00 00 00 CLASS 6 USTS 05 00 00 80 no response 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 03 01 00 00 .... 6 CTL 23 03 04 00 - 01 00 00 00 CLASS 6 DI 02 . 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 03 01 10 00 .... 6 CTL 23 01 14 00 - 01 00 00 00 CLASS 6 DI 12 01 01 10 - dc 00 00 10 ........ 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 03 01 00 00 .... 6 CTL 23 03 04 00 - 01 00 00 00 CLASS 6 DI 02 . 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 03 01 10 00 .... 6 CTL 23 01 14 00 - 01 00 00 00 CLASS 6 USTS 05 00 00 80 no response 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 03 01 00 00 .... 6 CTL 23 03 04 00 - 01 00 00 00 CLASS 6 DI 02 . 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 03 01 10 00 .... 6 CTL 23 01 14 00 - 01 00 00 00 CLASS 6 DI 12 01 01 10 - dc 00 00 10 ........ 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 03 01 00 00 .... 6 CTL 23 03 04 00 - 01 00 00 00 CLASS 6 DI 02 . 6 CTL a3 00 00 00 - 01 00 04 00 CLASS 6 DI 03 01 10 00 .... 6 CTL 23 01 14 00 - 01 00 00 00 CLASS 6 USTS 05 00 00 80 no response 6 CTL 23 01 01 00 - 01 00 00 00 CLASS 6 CTL a3 00 00 00 - 02 00 04 00 CLASS 6 DI 00 01 00 00 .... 怎么就是看不到80 06 00 01 00 00 40 00 这组数据呢??这组数据应该是主机发出的还是d12发出的啊? 我怎么感觉应该是主机发出的呢??? 还有一个问题,我在发设备描述符的时候,,,,我看到别人的前八个字节是:12 01 00 10 - dc 00 00 10 而我的是:12 01 01 10 - dc 00 00 10 第三个字节不一样阿,但是按照我的理解,应该是我得对阿 可是书上说的是上面的那种,而且我看周立功的板子也是上面那组数据。大家说说我的问题处在哪里啊?最后结果出不来,和这个地方有关系嘛? 谢谢大家帮忙了!!!!!! |
|
沙发#
发布于:2004-08-28 22:41
bushound看不到get descriptor可能是版本问题。我的系统win2k,用bushound3.0也是看到一堆CLASS,用5.0则可以看到Get descriptor。对于D12,如果硬件可靠的话,收到Get Descriptor是好容易的,只要soft connect之后,必定会收到。
建议:既然现在可以进入中断,那么检查检查一下是否有控制输出的中断(即是中断寄存器的最低位是否置1)。当然,最先的中断会是总线复位和挂起改变,然后才是控制输出中断。如果有的话,进一步读ep0缓冲,看看有没有get descriptor。 |
|
板凳#
发布于:2004-08-28 09:48
前面是共军的塔山防线,我们的任务是强攻塔山,攻下塔山,重站
锦州指日可待。 |
|
地板#
发布于:2004-08-28 09:29
主机对USB设备的识别过程叫做枚举,一个完整的Windows对USB设备枚举的过程为
1) Get Device Descriptor。主机的第一个命令要求得到设备描述符,此SETUP包为8个字节数据(80,06,00,01,00,00,40,00),其具体含义请参考表5-1和5-2。“40”表示返回数据长度最大为40H个字节。实际上,只返回一个包,即数组DEV_DESC[ ]中的前8个字节,用于说明设备的描述符的真实长度和设备的类型。 2) Set Address。接着是设置设备地址处理事件,主机发送一个含有指定地址的数据包(00,05,02,00,00,00,00,00),在主机只有一个USB设备的时候,这个地址一般会是2,最大地址127,USB协议中可以连接127个设备。设置地址事件处理结束后,设备进入地址状态,主机以后会在新的指定地址处访问设备。 3) Get Device Descriptor。主机再次发送请求得到设备描述符的数据包(80,06,00,01,00,00,12,00),与上次不同的是,要求的数据的长度是实际的数据长度。因为D12设备每次只能发送16个字节,因此它会分两次完成此要求(“12”指12H,十进制值为18)。 4) Get Configuration Descriptor。接着主机要求得到设备的配置描述符(80,06,00,02,00,00,09,00),包中数据“09”指定设备发送9个字节,这正是设备配置描述符的长度。 5) 读取全部Configuration Descriptor。接着主机要求得到设备全部的配置描述符、接口描述符和节点描述符(80,06,00,02,00,00,FF,00),由于主机不知道设备描述符的真实长度,因此它要求得到256个字节,实际上本系统中的D12发送46个字节就完成了此任务。 6) 如果以上步骤都正确,主机将找到新设备,提示安装驱动程序;否则找到未知设备,不可用。 如果驱动程序安装成功,主机会再次以描述符的实际长度要求设备重新发送设备描述符和配置描述符;接着主机发送设置设备配置SETUP包,设备处理此事件,将允许所有节点进入工作状态;最后主机请求得到设备和接口的配置,如果设备成功应答,枚举过程结束。此后D12状态灯应该一直亮。 |
|
地下室#
发布于:2004-08-28 09:12
0100――usb 协议1.00
0101――usb 协议1.01 没有关系的 没有8006是根本没接收到主机数据,bushound就不会显示 |
|