2009-11-13 2 views
3

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

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

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

ответ

6

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

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

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

+0

Спасибо. Кажется, что «USB Composite Device Framework» - это то, что мне нужно, если это вызывает вашу память? Я отредактировал этот вопрос, и теперь у меня есть опыт опроса, а не ответ «да/нет». – Clifford

0

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

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

0

Вам не нужно ничего осложнять здесь, это просто вопрос правильности дескрипторов.

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

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