Linux USB Gadget пользовательская конфигурация
Я использую плату i.Mx6 Sabre Lite под Linux Kernel 3.14.18, и плата должна выступать в качестве устройства USB (USB-гаджет). Один конкретный интерфейс поставщика необходимо добавить в конфигурацию CDC/NCM. Конфигурация CDC/NCM по умолчанию имеет два стандартных интерфейса - Связь и Данные. Я добавил третий интерфейс (специфичный для поставщика) в конфигурацию CDC/NCM. Этот интерфейс имеет две массовые (IN & OUT) конечные точки. Я могу проверить этот недавно добавленный интерфейс, как только плата подключена к ПК, используя "lsusb".
Проблема:
Я не могу видеть, как добавленный интерфейс становится доступным для пользовательского пространства на плате i.Mx или ПК, как стандартные интерфейсы NCM можно видеть как usb0 (устройство Ethernet) на плате i.Mx, а также на ПК, и я могу выполнить PING для / с доски используя usb0.
Если мне нужно подключить этот недавно добавленный интерфейс с некоторым драйвером g_ (точно так же, как стандартные интерфейсы NCM подключены к g_ether); то, что является лучшим выбором для BULK I/O?
Как сделать этот недавно добавленный специфичный для поставщика интерфейс доступным для пользовательского пространства i.MX6, чтобы выполнять чтение / запись на нем из приложения Linux? Я узнал о GadgetFS; но любой пример будет
Надеюсь, кто-то пробовал подобное в Linux-USB и может помочь.
1 ответ
Специфичный для поставщика интерфейс не использует стандартный протокол, поэтому невозможно использовать один из стандартных драйверов. (И основная масса - это не протокол, это механизм реализации вашего собственного протокола.)
Чтобы получить доступ к такому интерфейсу, вы должны использовать низкоуровневые функции из чего-то вроде libusb.