我已经使用 LPC2148 开发了一个 USB 设备,并且串行总线USB 堆栈。当我将其设置为 HID 设备(键盘)时,它工作正常,但当我将其设置为复合设备、存储(SD 闪存卡)和 HID 时,它仅在 Windows XP 上工作。我在两台不同的 Windows 7 计算机上尝试过,但都显示设备无法启动(代码 10 错误)。
我使用了两个软件来跟踪 USB(USBTrace 和 USBlyzer),但找不到发生了什么。该设备显示为已安装在 Win 7 上,但它在硬件设备属性中显示无法启动。那么有人知道在处理 USB 复合设备时 XP 和 Win7 之间有什么不同吗?
这里是源代码中的描述符,下面是 USBlyzer 的输出:
连接状态 设备已连接 当前配置 0 全速(12 Mbit/s) 设备地址 5 开放管道数量 0 * 设备描述符 Teleboard 偏移量 字段 大小 值 描述 0 b长度 1 12h 1 bDescriptorType 1 01h 设备 2 bcdUSB 2 0200h USB 规格 2.0 4 bDeviceClass 1 00h Ifc 描述符中的类别信息 5 b设备子类 1 00h 6 b设备协议 1 00h 7 bMaxPacketSize0 1 40h 64 字节 8 ID供应商 2 FFFFh 10 id产品 2 0003h 12 bcd设备 2 0100h 1.00 14 iManufacturer 1 01h “Acme” 15 iProduct 1 02h “测试板” 16 iSerialNumber 1 03h “ADR2012” 17 bNumConfigurations 1 01h * 配置描述符 1 配置描述符 1 偏移量 字段 大小 值 描述 0 b长度 1 09h 1 bDescriptorType 1 02h 配置 2 wTotalLength 2 0042h 4 bNumInterfaces 1 02h 5 b配置值 1 01h 6 配置 1 00h 7 bmAttributes 1 C0h 自供电 4..0:保留...00000 5:远程唤醒..0.....否 6:自供电.1......是 7:保留1....... (1.0 版采用总线供电) 8 bMaxPower 1 32h 100 mA * 接口描述符 0/0 大容量存储,2 个端点 偏移量 字段 大小 值 描述 0 b长度 1 09h 1 bDescriptorType 1 04h 接口 2 b接口编号 1 00h 3 bAlternateSetting 1 00h 4 bNumEndpoints 1 02h 5 bInterfaceClass 1 08h 大容量存储 6 bInterfaceSubClass 1 06h SCSI 透明命令集 7 bInterfaceProtocol 1 50h 仅批量传输 8 i接口 1 00h * 端点描述符 85 5 In,批量,64 字节 偏移量 字段 大小 值 描述 0 b长度 1 07h 1 bDescriptorType 1 05h 端点 2 b端点地址 1 85h 5 输入 3 bmAttributes 1 02h 批量 1..0:传输类型......10 批量 7..2:保留 000000.. 4 wMaxPacketSize 2 0040h 64 字节 6 b间隔 1 00h * 端点描述符 02 2 输出,批量,64 字节 偏移量 字段 大小 值 描述 0 b长度 1 07h 1 bDescriptorType 1 05h 端点 2 b端点地址 1 02h 2 输出 3 bmAttributes 1 02h 批量 1..0:传输类型......10 批量 7..2:保留 000000.. 4 wMaxPacketSize 2 0040h 64 字节 6 b间隔 1 00h * 接口描述符 1/0 HID,1 端点 偏移量 字段 大小 值 描述 0 b长度 1 09h 1 bDescriptorType 1 04h 接口 2 b接口编号 1 01h 3 bAlternateSetting 1 00h 4 bNumEndpoints 1 01h 5 bInterfaceClass 1 03h HID 6 bInterfaceSubClass 1 00h 7 b接口协议 1 01h 8 i接口 1 00h * HID 描述符 偏移量 字段 大小 值 描述 0 b长度 1 09h 1 bDescriptorType 1 21h HID 2 bcdHID 2 0110h 1.10 4 b国家代码 1 00h 5 bNumDescriptors 1 01h 6 bDescriptorType 1 22h 报告 7 wDescriptorLength 2 0040h 64字节 * 端点描述符 81 1 输入,中断,32 毫秒 偏移量 字段 大小 值 描述 0 b长度 1 07h 1 bDescriptorType 1 05h 端点 2 b端点地址 1 81h 1 输入 3 bmAttributes 1 03h 中断 1..0:传输类型......11中断 7..2:保留 000000.. 4 wMaxPacketSize 2 0008h 8字节 6 b间隔 1 20小时32毫秒 * 字符串描述符 偏移量 字段 大小 值 描述 0 b长度 1 04h 1 bDescriptorType 1 03h 字符串 2 wLANGID[0] 2 0409h 英语(美国)