Перейти к содержанию
    

USB device class посоветуйте

Добрый день!

 

Хочу сделать USB-device на 7-ом АРМе. Задача классическая: с хоста (Win >= XP) отображаем состояние железяки и гоняем туда/обратно пачки данных (до 500КБит/с). Но я НЕ ХОЧУ делать виртуальный СОМ-порт! Надо сделать так, чтобы:

1) При подключении устройства у юзера в трее появилось сообщение о проприетарном устр-ве, а не "USB<->Serial" или как-то еще.

2) Юзер не должен в нашем управляющем софте выбирать из списка устройств "СОМ51" или "Съемный диск Q:" чтобы подключиться к устр-ву. Софт сам должен определить, что устройсво подключено и коннектиться к нему.

Короче, надо сделать вполне презентабельную "собственную" железку.

Отсюда вопрос: какой выбрать device class чтобы разработка дров под винду не вылилась в долгие месяцы/годы? И что использовать под винды в качестве стартового SDK/DDK?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я у себя в устройстве имитировал FTDI-устройство. Программа в компе ищет его по строковым дескрипторам и ей не надо указывать номер компорта. Драйвера FTDI D2XX

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но я НЕ ХОЧУ делать виртуальный СОМ-порт!

Виртуальный СОМ-порт не так плох. Перечисляемые вами недостатки - это не его недостатки, а программного обеспечения.

 

1) При подключении устройства у юзера в трее появилось сообщение о проприетарном устр-ве, а не "USB<->Serial" или как-то еще.

Это как назовете, так оно и представится. Думаете, это Windows сама придумывает названия типа "USB<->Serial"? Нет! Такое имя ей сообщает внешнее USB-устройство. У него есть строковые дескрипторы, и оно может там заказать для себя любое имя. Однако в скобочках номер порта Windows все-таки допишет. Будет выглядеть типа "Мой прибамбас (COM7)". Но это не страшно.

 

2) Юзер не должен в нашем управляющем софте выбирать из списка устройств "СОМ51" или "Съемный диск Q:" чтобы подключиться к устр-ву. Софт сам должен определить, что устройсво подключено и коннектиться к нему.

Ну как пусть софт и определяет! В чем тут вина виртуального СОМ-порта, если вы софт писать не умеете? Обратитесь к программисту. Найти номер COM-порта, у которого имя "Мой прибамбас" не так уж и сложно.

 

Таким образом, оба перечисленных вами недостака являются не недостатками виртуального СОМ-порта, а недостатками софта: 1-ый - недостатком прошивки USB-устройства, а 2-ой - недостатком приложения, с ним работающим.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

 

Хочу сделать USB-device на 7-ом АРМе. Задача классическая: с хоста (Win >= XP) отображаем состояние железяки и гоняем туда/обратно пачки данных (до 500КБит/с). Но я НЕ ХОЧУ делать виртуальный СОМ-порт! Надо сделать так, чтобы:

1) При подключении устройства у юзера в трее появилось сообщение о проприетарном устр-ве, а не "USB<->Serial" или как-то еще.

2) Юзер не должен в нашем управляющем софте выбирать из списка устройств "СОМ51" или "Съемный диск Q:" чтобы подключиться к устр-ву. Софт сам должен определить, что устройсво подключено и коннектиться к нему.

Короче, надо сделать вполне презентабельную "собственную" железку.

Отсюда вопрос: какой выбрать device class чтобы разработка дров под винду не вылилась в долгие месяцы/годы? И что использовать под винды в качестве стартового SDK/DDK?

 

HID не подойдет??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

HID не подойдет??

 

Может и подойдет, его и рассматриваю. Но вообще-то мне кажется что при моих скоростях мне наиболее подходит Bulk EP, а в HIDe его по-моему нет. Поправьте, если не прав.

 

 

А неужели так сложно сделать свой, "нативный" драйвер? Дело в том, что лично для меня если в диспетчере устройств появляется виртуальный ком-порт, это попахивает радилюбительской поделухой. Да, для себя самое оно. Но я работаю в серьезной компании, которая хочет начать производство своего USB утройства. Для меня вариант эмуляции кома выглядит несолидно.

Хочу чтобы было, например, как известный многим отладчик от Segger, он же MT-Link: воткнул, система опознала, добавила в USB устройства и работает.

Почему-то в рунете практически не нахожу упоминаний о разработке УСБ-девайса чтобы он был не ХИД и не СОМ. Люди, кто пробовал, поделитесь мнением: это настолько сложно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но я работаю в серьезной компании, которая хочет начать производство своего USB утройства.

Для начала выбейте от руководства серьезной компании $4000 на членство в USB Implementers Forum или хотя бы $2000 на покупку Vendor ID.

Рекомендую еще заказать книжки USB System Architecture и USB Complete.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала выбейте от руководства серьезной компании $4000 на членство в USB Implementers Forum или хотя бы $2000 на покупку Vendor ID.

Рекомендую еще заказать книжки USB System Architecture и USB Complete.

 

Уже выбил и уже читаю. А по теме можно ответить?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уже выбил и уже читаю. А по теме можно ответить?

О! Поздравляю! Значит действительно серьезная компания.

По теме - на мой взгляд стандартный класс предпочтительнее. В этом случае не нужно заниматься написанием и сертификацией в Микрософт собственного драйвера, а можно воспользоваться готовым, встроенным в Windows: Drivers for the Supported USB Device Classes.

Исходя из вышеизложенных требований, я бы тоже посоветовал HID. Единственное сомнение - даст ли он требуемую скорость передачи.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Исходя из вышеизложенных требований, я бы тоже посоветовал HID. Единственное сомнение - даст ли он требуемую скорость передачи.

HID всем хорош. К тому выбивание не нужно, т.к. он не требует членства в USB или покупки VID, т.к. будет работать при VID=PID=0. И 512 кбит/сек туда и сюда обеспечивает. HID это 1000 пакетов по 64 байта в секунду с каждую сторону. Если не хватает, то можно сделать составное устройство в котором будут 2 или больше HID-а. В общем столько, сколько EP у железа имеется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делал HID устройство, которое работало через BUKL EP.

Из винды работал через через libusb-win32.

Но есть и буржуйские девайсы, которые работают через BULK EP, правда со своим драйвером (подглядел конфигурацию).

Так что больших проблем, думаю, нет.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делал HID устройство, которое работало через BUKL EP.

Как это??? Можно дескрипторы посмотреть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С HID непонятки.. Ну к примеру в контроллере накопилось много данных в буфере, то толку что скорость HID 64кбит/с (и откуда взяли 512кбит/c?) - всеравно следующая передача 64 байт будет через 1мс, и буфер переполнится. Или я не прав?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С HID непонятки.. Ну к примеру в контроллере накопилось много данных в буфере, то толку что скорость HID 64кбит/с (и откуда взяли 512кбит/c?) - всеравно следующая передача 64 байт будет через 1мс, и буфер переполнится. Или я не прав?

1000(пакетов в секунду)*64(байта в пакете)*8(бит в байте)=512000(бит за секунду)=512кбит/с

А без буфера достаточной величины в любом случае делать нечего...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

Хочу сделать USB-device на 7-ом АРМе...Но я НЕ ХОЧУ делать виртуальный СОМ-порт!...

...Из винды работал через через libusb-win32...

То есть, изучаете использование libusb-win32 или libusbdotnet (попутно WinUSB) и получаете все, что Вы хотите. Если будете использовать libusbdotnet/WinUSB, то не будет проблем с подписыванием драйвера под Win7 x64.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делал HID устройство, которое работало через BUKL EP.

Как это??? Можно дескрипторы посмотреть?

 

Присоединюсь к просьбе. Если и правда получится к HID прикрутить bulk то это для меня будет самым правильным решением.

 

То есть, изучаете использование libusb-win32 или libusbdotnet (попутно WinUSB) и получаете все, что Вы хотите. Если будете использовать libusbdotnet/WinUSB, то не будет проблем с подписыванием драйвера под Win7 x64.

 

Всем спасибо! В голове начало проясняться :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...