dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1425回复:7

枚举问题,给分拉

楼主#
更多 发布于:2005-02-22 13:12
  14.0  CTL    80 06 00 01  00 00 40 00                                                                                GET DESCRIPTOR         724.1.0        
  14.0  DI     12 01 10 01  00 00 00 10  71 04 01 18  00 01 00 00                                                      ........q.......          14.0  CTL    80 06 00 01  00 00 12 00                                                                                GET DESCRIPTOR         731.1.0        
  14.0  DI     12 01 10 01  00 00 00 10  71 04 01 18  00 01 00 00  00 01                                               ........q.......       731.2.0        
  14.0  CTL    80 06 00 02  00 00 09 00                                                                                GET DESCRIPTOR         732.1.0        
  14.0  DI     09 02 2e 00  01 01 00 60  96                                                                            .......`.                                                                                           CLEAR FEATURE          743.1.0        
  14.0  CTL    80 06 00 01  00 00 40 00                                                                                GET DESCRIPTOR         744.1.0        
  14.0  DI     12 01 10 01  00 00 00 10  71 04 01 18  00 01 00 00                                                      ........q.......       744.2.0        
    14.0  CTL    00 05 02 00  00 00 00 00                                                                                SET ADDRESS            750.1.0        
  14.0  CTL    80 06 00 01  00 00 12 00                                                                                GET DESCRIPTOR         751.1.0        
  14.0  DI     12 01 10 01  00 00 00 10  71 04 01 18  00 01 00 00  00 01                                               ........q.......       751.2.0        
  14.0  CTL    80 06 00 02  00 00 09 00                                                                                GET DESCRIPTOR         752.1.0        
  14.0  DI     09 02 2e 00  01 01 00 60  96                                                                            .......`.              752.2.0        
  14.0  CTL    23 01 01 00  01 00 00 00                                                                                CLEAR FEATURE          753.1.0        
  14.0  CTL    a3 00 00 00  02 00 04 00                                                                                GET STATUS             754.1.0        
  14.0  DI     00 01 00 00                                                                                             ....                   754.2.0        
  14.0  CTL    a3 00 00 00  01 00 04 00                                                                                GET STATUS             755.1.0        
  14.0  DI     01 01 00 00                                                                                             ....                   755.2.0        
  14.0  CTL    a3 00 00 00  02 00 04 00                                                                                GET STATUS             756.1.0        
  14.0  DI     00 01 00 00

下面是描述符集合了,可是没有包在来了而是重复上面的请求?怎么回事?
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-28 11:09
我想,看不到描述符集合的原因是因为回复的描述符是错误的,
09 02 2e 00  01 01 00 60 96 00 00 f0  ff ff 80 f0  ff ff 00 00  01 02 01 00  00 00 98 1f  00 02 00 00

后面从接口描述符就错误了,但前面的回复都很正确
80 06 00 01  00 00 40 00
 。。。。12 01 10 01  00 00 00 10  71 04 01 18  00 01 00 00                                                       00

05 02 00  00 00 00 00                                                          
80 06 00 01  00 00 12 00          
。。。12 01 10 01  00 00 00 10  71 04 01 18  00 01 00 00  00 01                                               ........q.
.
。。。。 80 06 00 02  00 00 09 00                                                          09 02 2e 00  01 01 00 60  96  
那后面的接口描述符错误的原因是什么呢?
else if (bDescriptor == 0x02)   //USB_CONFIGURATION_DESCRIPTOR_TYPE)
          {
          
          code_transmit((unsigned char *)&ConfigDescr,ControlData.DeviceRequest.wLength);
  }
 :( :(

[编辑 -  2/28/05 by  dxyldl]
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-28 11:29
那个描述符集合是这句话执行的
else if (bDescriptor == 0x02)      //USB_CONFIGURATION_DESCRIPTOR_TYPE)
{
code_transmit((unsigned char *)&ConfigDescr,ControlData.DeviceRequest.wLength);
}
可是指针的地址是 &ConfigDescr  读出配置描述符可以理解,那怎么会将&InterfaceDescr的数据读出呢?还有后面的端点配置,就是这个描述符集合
 USB_INTERFACE_DESCRIPTOR InterfaceDescr=
{
0x09,                                
0x04,  
0,    
0,
0x04,
0x08,
0x01,
0,
0                                                            
};
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-01 08:25

如果我把接口描述符加到配置描述符后面
typedef struct _USB_CONFIGURATION_DESCRIPTOR {
  // USHORT bLength;
    UCHAR bLength;  
    UCHAR bDescriptorType;
    USHORT wTotalLength;
    UCHAR bNumInterfaces;
    UCHAR bConfigurationValue;
    UCHAR iConfiguration;
    UCHAR bmAttributes;
    UCHAR MaxPower;
    
    UCHAR ibLength;
    UCHAR ibDescriptorType;
    UCHAR ibInterfaceNumber;
    UCHAR ibAlternateSetting;
    UCHAR ibNumEndpoints;
    UCHAR ibInterfaceClass;
    UCHAR ibInterfaceSubClass;
    UCHAR ibInterfaceProtocol;
    UCHAR iiInterface;}
 USB_CONFIGURATION_DESCRIPTOR ConfigDescr=
{
    0x09,                            
    USB_CONFIGURATION_DESCRIPTOR_TYPE,       //bDescriptorType  =02H
    0x2E,     //wTotalLength   =2EH
1,                  //bNumInterfaces
1,                   //bConfigurationValue
         0,                    //iConfiguratuion
0xa0,        //bmAttributes自供电,支持远程唤醒
0x96,                                 //MaxPower

0x09,               //bLength  =09h
        0x04,  //bDescriptorType  =04h
       0,             //bInterfaceNumber 接口编号,只有一个
         0,            //bAlternativeSetting
0x04,// bNumEndpoints 除端点0的端点索引数目,=04H
0x08, //bInterfaceClass  =0dch
0x01,  //bInterfaceSubClass =0A0H子类代码
0,  //bInterfaceProtocol =0B0H协议代码
0
}
就可以收到回复的数据是
80 06 00 02  00 00 ff 00         GET DESCRIPTOR             09 02 2e 00  01 01 00 a0  96 09 04 00  00 04 08 01。
        
00 00 00 f0  ff ff 80 f0  ff ff 00 00  01 02 02 00 。

00 00 30 5d  00 02 00 00  fd ff 00 c0  fc ff
收到46个字节,可是后面的端点描述符是错误的,不过这个时候,电脑可以找到新硬件,提示装驱动程序,我装了一个驱动程序(ZLG的)在设备管理器中可以看到Philips PDIUSBD12 SMART Evaluation Board,但设备有惊叹号,错误提示(10),我是XP,用ARM,ADS调试,这么长时间,也没人回帖???~~~~~~愚昧中,
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-01 08:26

如果我把接口描述符加到配置描述符后面
typedef struct _USB_CONFIGURATION_DESCRIPTOR {
  // USHORT bLength;
    UCHAR bLength;  
    UCHAR bDescriptorType;
    USHORT wTotalLength;
    UCHAR bNumInterfaces;
    UCHAR bConfigurationValue;
    UCHAR iConfiguration;
    UCHAR bmAttributes;
    UCHAR MaxPower;
    
    UCHAR ibLength;
    UCHAR ibDescriptorType;
    UCHAR ibInterfaceNumber;
    UCHAR ibAlternateSetting;
    UCHAR ibNumEndpoints;
    UCHAR ibInterfaceClass;
    UCHAR ibInterfaceSubClass;
    UCHAR ibInterfaceProtocol;
    UCHAR iiInterface;}
 USB_CONFIGURATION_DESCRIPTOR ConfigDescr=
{
    0x09,                            
    USB_CONFIGURATION_DESCRIPTOR_TYPE,       //bDescriptorType  =02H
    0x2E,     //wTotalLength   =2EH
1,                  //bNumInterfaces
1,                   //bConfigurationValue
         0,                    //iConfiguratuion
0xa0,        //bmAttributes自供电,支持远程唤醒
0x96,                                 //MaxPower

0x09,               //bLength  =09h
        0x04,  //bDescriptorType  =04h
       0,             //bInterfaceNumber 接口编号,只有一个
         0,            //bAlternativeSetting
0x04,// bNumEndpoints 除端点0的端点索引数目,=04H
0x08, //bInterfaceClass  =0dch
0x01,  //bInterfaceSubClass =0A0H子类代码
0,  //bInterfaceProtocol =0B0H协议代码
0
}
就可以收到回复的数据是
80 06 00 02  00 00 ff 00         GET DESCRIPTOR             09 02 2e 00  01 01 00 a0  96 09 04 00  00 04 08 01。
        
00 00 00 f0  ff ff 80 f0  ff ff 00 00  01 02 02 00 。

00 00 30 5d  00 02 00 00  fd ff 00 c0  fc ff
收到46个字节,可是后面的端点描述符是错误的,不过这个时候,电脑可以找到新硬件,提示装驱动程序,我装了一个驱动程序(ZLG的)在设备管理器中可以看到Philips PDIUSBD12 SMART Evaluation Board,但设备有惊叹号,错误提示(10),我是XP,用ARM,ADS调试,这么长时间,也没人回帖???~~~~~~郁闷中,
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-03 08:29
有人与我一起讨论吗? :(
lettertoxw
驱动牛犊
驱动牛犊
  • 注册日期2004-09-02
  • 最后登录2007-08-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-03 10:15
我想是由于你的端点描述符是错误的,可能和你装到pc上的驱动的某些设置不符合,从而导致了设备管理器中的错误提示。
嘿嘿,我也不是很明白,只是想到了这一点,希望能给你个小小的提示啦。
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-03-04 14:13
大哥,现在不是驱动的问题,问题是在描述符集合的时候出错,就是说只可以返回配置描述符,我想原因是
else if (bDescriptor == 0x02) //USB_CONFIGURATION_DESCRIPTOR_TYPE)
{
code_transmit((unsigned char *)&ConfigDescr,ControlData.DeviceRequest.wLength);
}
后面的接口和端点描述符读不出,还有就是很不稳定,就是枚举的步骤经常进行不下去就没反映了,有时候2步有时候3步,有时候4步
游客

返回顶部