阅读:1923回复:11
急,为什么我枚举不成功?
我用D12开发Firmware,但是列举不成功,我监控了INTERRUPT REGISTER,ReadLastTransactionStatus,DCPDeviceRequest三个参数得如下数据,请帮忙看看出了什么问题。
INTERRUPT REGISTER=8000 INTERRUPT REGISTER=C000 ReadLastTransactionStatus=21 INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=1,wIndex=0,wLength=4000 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=21 INTERRUPT REGISTER=4100 bmRequestType=0,bRequest=5,wValue=200,wIndex=0,wLength=0 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=21 INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=1,wIndex=0,wLength=1200 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=A1 ReadLastTransactionStatus=1 INTERRUPT REGISTER=300 bmRequestType=80,bRequest=6,wValue=2,wIndex=0,wLength=900 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=A1 INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=3,wIndex=0,wLength=FF00 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=A1 INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=303,wIndex=904,wLength=FF00 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=A1 ReadLastTransactionStatus=1 INTERRUPT REGISTER=300 bmRequestType=80,bRequest=6,wValue=2,wIndex=0,wLength=FF00 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=1 INTERRUPT REGISTER=200 ReadLastTransactionStatus=41 ReadLastTransactionStatus=41 INTERRUPT REGISTER=300 INTERRUPT REGISTER=0 INTERRUPT REGISTER=4000 INTERRUPT REGISTER=0 ReadLastTransactionStatus=21 INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=1,wIndex=0,wLength=4000 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=21 INTERRUPT REGISTER=4100 bmRequestType=0,bRequest=5,wValue=200,wIndex=0,wLength=0 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=21 INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=1,wIndex=0,wLength=1200 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=A1 ReadLastTransactionStatus=1 INTERRUPT REGISTER=300 bmRequestType=80,bRequest=6,wValue=2,wIndex=0,wLength=900 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=A1 INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=3,wIndex=0,wLength=FF00 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=A1 INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=303,wIndex=904,wLength=FF00 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=A1 ReadLastTransactionStatus=1 INTERRUPT REGISTER=300 bmRequestType=80,bRequest=6,wValue=2,wIndex=0,wLength=FF00 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=1 INTERRUPT REGISTER=200 ReadLastTransactionStatus=41 ReadLastTransactionStatus=41 INTERRUPT REGISTER=300 INTERRUPT REGISTER=0 INTERRUPT REGISTER=4000 ReadLastTransactionStatus=21 INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=1,wIndex=0,wLength=4000 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=21 INTERRUPT REGISTER=4100 bmRequestType=0,bRequest=5,wValue=200,wIndex=0,wLength=0 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=21 INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=1,wIndex=0,wLength=1200 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=A1 ReadLastTransactionStatus=1 INTERRUPT REGISTER=300 bmRequestType=80,bRequest=6,wValue=2,wIndex=0,wLength=900 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=A1 INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=3,wIndex=0,wLength=FF00 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=A1 INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=303,wIndex=904,wLength=FF00 INTERRUPT REGISTER=0 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=A1 ReadLastTransactionStatus=1 INTERRUPT REGISTER=300 bmRequestType=80,bRequest=6,wValue=2,wIndex=0,wLength=FF00 ReadLastTransactionStatus=41 INTERRUPT REGISTER=200 ReadLastTransactionStatus=1 INTERRUPT REGISTER=200 ReadLastTransactionStatus=41 ReadLastTransactionStatus=41 INTERRUPT REGISTER=300 INTERRUPT REGISTER=0 INTERRUPT REGISTER=8000 INTERRUPT REGISTER=0 数据到这就停止了输出,但列举没成功。 我已停留了好几天了,请各位大侠和斑竹帮帮我。 谢谢! |
|
沙发#
发布于:2001-12-14 18:10
我没用dma方式,我只需块传输就可以了。
|
|
板凳#
发布于:2001-12-12 11:26
再问刘先生一下,你们的设备用D12的DMA吗,怎么实现的
|
|
地板#
发布于:2001-12-11 20:31
请问你是怎样成功的。
|
|
|
地下室#
发布于:2001-12-11 13:14
谢谢JH.quand的大力帮助,我刚才已经枚举成功了。
|
|
5楼#
发布于:2001-12-11 10:13
应该是配置描述符不对:U8 bLength不对,接口描述符也不对啊
|
|
6楼#
发布于:2001-12-11 09:18
typedef struct _USB_CONFIGURATION_DESCRIPTOR {
U8 bLength; U8 bDescriptorType; U16 wTotalLength; U8 bNumInterfaces; U8 bConfigurationValue; U8 iConfiguration; U8 bmAttributes; U8 MaxPower; } USB_CONFIGURATION_DESCRIPTOR sizeof(USB_CONFIGURATION_DESCRIPTOR)应该为9,但是软件得到的却是A,是不是有问题? |
|
7楼#
发布于:2001-12-10 13:32
我收到的PC请求如下:
(收到)0x80,0x06,0x0001,0x0000,0x4000 我返回(0x12,0x01,0x00,0x01,0x00,0x00,0x00,0x10,0x84, 0x05,0x01,0x00,0x00,0x01,0x01,0x02,0x03,0x01 ) (收到)0x00,0x05,0x0200,0x0000,0x0000 (收到)0x80,0x06,0x0001,0x0000,0x1200 我返回(0x12,0x01,0x00,0x01,0x00,0x00,0x00,0x10,0x84, 0x05,0x01,0x00,0x00,0x01,0x01,0x02,0x03,0x01) (收到)0x80,0x06,0x0002,0x0000,0x0900 我返回(0x0A,0x02,0x24,0x00,0x01,0x01,0x00,0x40,0x32) (收到)0x80,0x06,0x0003,0x0000,0xff00 我返回(0x04,0x03,0x09,0x04) (收到)0x80,0x06,0x0303,0x0904,0xff00 我返回(0x1A,0x03,0x30,0x00,0x30,0x00,0x30,0x00,0x30, 0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00, 0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00) (收到)0x80,0x06,0x0002,0x0000,0xff00 我返回 (0x0A,0x02,0x24,0x00,0x01,0x01,0x00,0x40,0x32, 0x00,0x04,0x03,0x09,0x04,0x1A,0x03,0x50,0x00,0x68, 0x00,0x69,0x00,0x6C,0x00,0x69,0x00,0x70,0x00,0x73, 0x00,0x20,0x00,0x41,0x00,0x50,0x00) 然后pc重复三次就停止发送。 [编辑 - 12/10/01 作者: liuwen] [编辑 - 12/10/01 作者: liuwen] |
|
8楼#
发布于:2001-12-10 11:51
有没有收到获取配置描述符请求:08 06 02 00 00 00 09 00
若收到,应该描述符发送没问题 我也在做D12usb 设备,刚通过枚举,以后多交流,我的OICQ:28460399 |
|
9楼#
发布于:2001-12-10 11:10
另外我返回的DeviceDescr是:0x12,0x01,0x0001,0x00,0x00,0x00,0x10,0x8405,0x0100,0x01,
0x02,0x03,0x01这是philips的数据,有问题吗? |
|
10楼#
发布于:2001-12-10 10:51
谢谢你的答复。
我有监控每次CONTROL OUT 中断后收到的请求命令, ...... INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=1,wIndex=0,wLength=4000 ...... INTERRUPT REGISTER=4100 bmRequestType=0,bRequest=5,wValue=200,wIndex=0,wLength=0 ...... INTERRUPT REGISTER=100 bmRequestType=80,bRequest=6,wValue=1,wIndex=0,wLength=1200 ...... 就是呀,我是参考了Philips的USB Mass Storage Device Evaluation Kit的Firmware,因我用的cpu是mc68vz328所以改动了一些,另外我发现pc重复三次后就停了,不知哪里出了问题。 |
|
11楼#
发布于:2001-12-10 10:35
你没有监控每次CONTROL OUT 中断后收到的请求命令吗,若能读到,就可知道枚举到那儿了
你自己写的FIRMWARE?还是用例程? |
|