如何设置嵌入式Linux中USB设备的VID和PID
答
它在内核中完成:我推测你有一个你已经开发或者你正在使用的USB gadget驱动,这样你的嵌入式Linux设备可以被用作USB设备。
此驱动程序肯定有一个struct usb_device_descriptor
声明某处。正如你所看到的,这个结构有一些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));
如果您使用的是已经developped驱动程序,有的给你设置这些字段与您传递的模块参数的一些值,看看drivers/usb/gadget/printer.c
一个很好的例子的可能性。这样,您可以将值从用户空间传递给内核。