2016-05-31 10 views
2

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

Проблема:

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

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

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

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

ответ

1

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

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