Я разработал USB-устройство с использованием LPC2148 и стека LPCUSB USB. Он хорошо работает, когда я устанавливаю его как устройство HID (клавиатура), но когда я устанавливаю его как составное устройство, хранилище (SD-карта памяти) и HID, он работает только в Windows XP. Я пробовал на двух разных компьютерах с Windows 7, и оба показали мне, что устройство не может запуститься (ошибка кода 10).
Я использовал две программы для отслеживания USB (USBTrace и USBlyzer) и не смог найти, что происходит. Устройство отображается как установленное в Win 7, за исключением того, что оно указывает, что оно не может быть запущено в свойствах устройства. Так кто-нибудь знает, что отличается от XP и Win7 при работе с композитным устройством USB?
Вот дескриптор в исходном коде, а ниже - вывод из USBlyzer:
Connection Status Device connected Current Configuration 0 Speed Full (12 Mbit/s) Device Address 5 Number Of Open Pipes 0 * Device Descriptor Teleboard Offset Field Size Value Description 0 bLength 1 12h 1 bDescriptorType 1 01h Device 2 bcdUSB 2 0200h USB Spec 2.0 4 bDeviceClass 1 00h Class info in Ifc Descriptors 5 bDeviceSubClass 1 00h 6 bDeviceProtocol 1 00h 7 bMaxPacketSize0 1 40h 64 bytes 8 idVendor 2 FFFFh 10 idProduct 2 0003h 12 bcdDevice 2 0100h 1.00 14 iManufacturer 1 01h "Acme" 15 iProduct 1 02h "Testboard" 16 iSerialNumber 1 03h "ADR2012" 17 bNumConfigurations 1 01h * Configuration Descriptor 1 Configuration Descriptor 1 Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 02h Configuration 2 wTotalLength 2 0042h 4 bNumInterfaces 1 02h 5 bConfigurationValue 1 01h 6 iConfiguration 1 00h 7 bmAttributes 1 C0h Self Powered 4..0: Reserved ...00000 5: Remote Wakeup ..0..... No 6: Self Powered .1...... Yes 7: Reserved 1....... (bus-powered for 1.0) 8 bMaxPower 1 32h 100 mA * Interface Descriptor 0/0 Mass Storage, 2 Endpoints Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 04h Interface 2 bInterfaceNumber 1 00h 3 bAlternateSetting 1 00h 4 bNumEndpoints 1 02h 5 bInterfaceClass 1 08h Mass Storage 6 bInterfaceSubClass 1 06h SCSI Transparent Command Set 7 bInterfaceProtocol 1 50h Bulk-Only Transport 8 iInterface 1 00h * Endpoint Descriptor 85 5 In, Bulk, 64 bytes Offset Field Size Value Description 0 bLength 1 07h 1 bDescriptorType 1 05h Endpoint 2 bEndpointAddress 1 85h 5 In 3 bmAttributes 1 02h Bulk 1..0: Transfer Type ......10 Bulk 7..2: Reserved 000000.. 4 wMaxPacketSize 2 0040h 64 bytes 6 bInterval 1 00h * Endpoint Descriptor 02 2 Out, Bulk, 64 bytes Offset Field Size Value Description 0 bLength 1 07h 1 bDescriptorType 1 05h Endpoint 2 bEndpointAddress 1 02h 2 Out 3 bmAttributes 1 02h Bulk 1..0: Transfer Type ......10 Bulk 7..2: Reserved 000000.. 4 wMaxPacketSize 2 0040h 64 bytes 6 bInterval 1 00h * Interface Descriptor 1/0 HID, 1 Endpoint Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 04h Interface 2 bInterfaceNumber 1 01h 3 bAlternateSetting 1 00h 4 bNumEndpoints 1 01h 5 bInterfaceClass 1 03h HID 6 bInterfaceSubClass 1 00h 7 bInterfaceProtocol 1 01h 8 iInterface 1 00h * HID Descriptor Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 21h HID 2 bcdHID 2 0110h 1.10 4 bCountryCode 1 00h 5 bNumDescriptors 1 01h 6 bDescriptorType 1 22h Report 7 wDescriptorLength 2 0040h 64 bytes * Endpoint Descriptor 81 1 In, Interrupt, 32 ms Offset Field Size Value Description 0 bLength 1 07h 1 bDescriptorType 1 05h Endpoint 2 bEndpointAddress 1 81h 1 In 3 bmAttributes 1 03h Interrupt 1..0: Transfer Type ......11 Interrupt 7..2: Reserved 000000.. 4 wMaxPacketSize 2 0008h 8 bytes 6 bInterval 1 20h 32 ms * String Descriptor Offset Field Size Value Description 0 bLength 1 04h 1 bDescriptorType 1 03h String 2 wLANGID[0] 2 0409h English (United States)