如何设置嵌入式Linux中USB设备的VID和PID

问题描述:

我有一个嵌入式Linux设备,我想设置VID,PID和名称。这通常在哪里完成?在文件系统中还是被编译进内核?如何设置嵌入式Linux中USB设备的VID和PID

它在内核中完成:我推测你有一个你已经开发或者你正在使用的USB gadget驱动,这样你的嵌入式Linux设备可以被用作USB设备。

此驱动程序肯定有一个struct usb_device_descriptor声明某处。正如你所看到的,这个结构有一些idVendor,idProduct字段。人类可读的字符串是iManufacturer,iProductiSerialNum。下面是完整的结构:

/* USB_DT_DEVICE: Device descriptor */ 
struct usb_device_descriptor { 
    __u8 bLength; 
    __u8 bDescriptorType; 

    __le16 bcdUSB; 
    __u8 bDeviceClass; 
    __u8 bDeviceSubClass; 
    __u8 bDeviceProtocol; 
    __u8 bMaxPacketSize0; 
    __le16 idVendor; 
    __le16 idProduct; 
    __le16 bcdDevice; 
    __u8 iManufacturer; 
    __u8 iProduct; 
    __u8 iSerialNumber; 
    __u8 bNumConfigurations; 
} __attribute__ ((packed)); 

如果您使用的是已经developped驱动程序,有的给你设置这些字段与您传递的模块参数的一些值,看看drivers/usb/gadget/printer.c一个很好的例子的可能性。这样,您可以将值从用户空间传递给内核。