Linux USB Gadget пользовательская конфигурация

Я использую плату i.Mx6 Sabre Lite под Linux Kernel 3.14.18, и плата должна выступать в качестве устройства USB (USB-гаджет). Один конкретный интерфейс поставщика необходимо добавить в конфигурацию CDC/NCM. Конфигурация CDC/NCM по умолчанию имеет два стандартных интерфейса - Связь и Данные. Я добавил третий интерфейс (специфичный для поставщика) в конфигурацию CDC/NCM. Этот интерфейс имеет две массовые (IN & OUT) конечные точки. Я могу проверить этот недавно добавленный интерфейс, как только плата подключена к ПК, используя "lsusb".

Проблема:

  1. Я не могу видеть, как добавленный интерфейс становится доступным для пользовательского пространства на плате i.Mx или ПК, как стандартные интерфейсы NCM можно видеть как usb0 (устройство Ethernet) на плате i.Mx, а также на ПК, и я могу выполнить PING для / с доски используя usb0.

  2. Если мне нужно подключить этот недавно добавленный интерфейс с некоторым драйвером g_ (точно так же, как стандартные интерфейсы NCM подключены к g_ether); то, что является лучшим выбором для BULK I/O?

  3. Как сделать этот недавно добавленный специфичный для поставщика интерфейс доступным для пользовательского пространства i.MX6, чтобы выполнять чтение / запись на нем из приложения Linux? Я узнал о GadgetFS; но любой пример будет

Надеюсь, кто-то пробовал подобное в Linux-USB и может помочь.

1 ответ

Специфичный для поставщика интерфейс не использует стандартный протокол, поэтому невозможно использовать один из стандартных драйверов. (И основная масса - это не протокол, это механизм реализации вашего собственного протокола.)

Чтобы получить доступ к такому интерфейсу, вы должны использовать низкоуровневые функции из чего-то вроде libusb.

Другие вопросы по тегам