J'ai développé un périphérique USB à l'aide d'un LPC2148 et du LPCUSB Pile USB. Cela fonctionne bien lorsque je le configure en tant que périphérique HID (un clavier), mais lorsque je le configure en tant que périphérique composite, stockage (carte flash SD) et HID, il ne fonctionne que sous Windows XP. J'ai essayé sur deux ordinateurs Windows 7 différents et les deux m'ont montré que le périphérique ne peut pas démarrer (erreur de code 10).
J'ai utilisé deux logiciels pour tracer l'USB (USBTrace et USBlyzer) et je ne pouvais pas trouver ce qui se passait. Le périphérique est montré comme étant installé sur Windows 7, sauf qu'il est indiqué qu'il ne peut pas être démarré dans les propriétés du périphérique matériel. Donc, tout le monde sait ce qui différencie XP et Win7 de la manipulation d’un périphérique composite USB?
Ici est le descripteur dans le code source et en dessous la sortie de 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)