Как установить VID и PID устройства USB в Embedded Linux - PullRequest
2 голосов
/ 23 марта 2011

У меня есть устройство Embedded Linux, и я хотел бы установить VID, PID и имя.Где это обычно делается?В файловой системе или скомпилировано в ядро?

1 Ответ

3 голосов
/ 24 марта 2011

Это делается в ядре: я предполагаю, что у вас есть драйвер USB-гаджета, который вы разработали или используете, чтобы ваше устройство Embedded 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));

Если вы используете уже разработанный драйвер, некоторые дают вам возможность установить эти поля с некоторыми значениями, которые вы передаете в качестве параметра модуля, см. drivers/usb/gadget/printer.cхороший пример.Таким образом, вы можете передать значения в ядро ​​из пространства пользователя.

...