Возможно ли, чтобы одно физическое USB-устройство отображалось как два отдельных класса устройств? - PullRequest
3 голосов
/ 13 ноября 2009

Я нахожусь на ранней стадии разработки устройства, требующего подключения через USB. Как минимум, устройство должно отображаться как устаревший последовательный порт, но было бы полезно, если бы оно могло одновременно отображаться как устройство большой емкости.

Возможно ли это, или устройству нужно будет переключаться между запоминающим устройством и коммуникационным устройством, чтобы оно было одновременно только одним?

** [править] ** Я, вероятно, был немного быстр в вопросе; это предполагает, что это действительно можно сделать, используя USB Composite Device Framework . Мне все еще было бы интересно, если у кого-то есть опыт в этом деле и могут быть какие-то советы или указатели, какая платформа использовалась, и что, если какие-либо сторонние инструменты или стеки они могли использовать.

Ответы [ 3 ]

6 голосов
/ 13 ноября 2009

Да, вы можете сделать так, чтобы одно и то же устройство отображалось как два (или более) логических устройства.

Я сделал это для проекта пару лет назад, но это было давно, и я забыл детали. Я думаю, что у меня одновременно были запоминающее устройство, видео и последовательный порт.

Да, композитное устройство звучит знакомо. В проекте, над которым я работал, не использовались сторонние ОС или библиотеки USB; это был весь «голый металлический» код для процессора Freescale i.MX21. USB Complete от Jan Axelson был бесценным, как и USB-анализатор Packet-Master .

0 голосов
/ 13 ноября 2009

Здесь не нужно делать ничего сложного, нужно просто правильно описать дескрипторы.

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

Я бы посоветовал, если вы собираетесь заниматься какой-либо даже слегка серьезной USB-разработкой, для которой вы получите USB-анализатор - вы можете не только анализировать свои собственные вещи, но и подключить комплект других людей и посмотреть, как они это делали. дескрипторы ...

0 голосов
/ 13 ноября 2009

Да, это возможно. Например. У меня есть USB-накопитель Huawei E220 для подключения UMTS (3G mobile), который имеет четыре интерфейса: два зависят от поставщика (драйвер ядра в конечном итоге отображает их как /dev/ttyUSB{0,1}), а два - запоминающее устройство.

Я знаю, что вы можете использовать два /dev/ttyUSB{0,1} одновременно.

...