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

如何在嵌入式Linux中设置USB设备的VID和PID,usb,embedded-linux,Usb,Embedded Linux,我有一个嵌入式Linux设备,我想设置VID、PID和名称。这通常在哪里进行?是在文件系统中还是编译到内核中?它是在内核中完成的:我假定您有一个USB小工具驱动程序,您已经开发或正在使用,以便您的嵌入式Linux设备可以用作USB设备 这个驱动程序肯定有一个在某处声明的struct-usb\u-device\u描述符。如您所见,此结构有一些idVendor,idProduct字段。人类可读的字符串是iManufacturer、iProduct和iSerialNum。以下是完整的结构: /* US

我有一个嵌入式Linux设备,我想设置VID、PID和名称。这通常在哪里进行?是在文件系统中还是编译到内核中?

它是在内核中完成的:我假定您有一个USB小工具驱动程序,您已经开发或正在使用,以便您的嵌入式Linux设备可以用作USB设备

这个驱动程序肯定有一个在某处声明的
struct-usb\u-device\u描述符。如您所见,此结构有一些
idVendor
idProduct
字段。人类可读的字符串是
iManufacturer
iProduct
iSerialNum
。以下是完整的结构:

/* 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));
如果您使用的是已开发的驱动程序,有些驱动程序允许您使用作为模块参数传递的一些值来设置这些字段,请参见
drivers/usb/gadget/printer.c
,了解一个非常好的示例。通过这种方式,您可以将值从用户空间传递到内核