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) 
Adriano P
la source