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

时间:2011-03-23 18:56:08

标签: usb embedded-linux

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

1 个答案:

答案 0 :(得分:3)

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

这个驱动程序肯定有一个struct usb_device_descriptor声明在某处。如您所见,此结构包含一些idVendoridProduct字段。人类可读的字符串为iManufactureriProductiSerialNum。这是完整的结构:

/* 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以获得一个非常好的示例。这样,您就可以从用户空间将值传递给内核。