Jump to content

    
Sign in to follow this  
gladov

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

Recommended Posts

Добрый день!

 

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Но я НЕ ХОЧУ делать виртуальный СОМ-порт!

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

 

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

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

 

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

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

 

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

Share this post


Link to post
Share on other sites
Добрый день!

 

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

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

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

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

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

 

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

Share this post


Link to post
Share on other sites
HID не подойдет??

 

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

 

 

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

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

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

Share this post


Link to post
Share on other sites
Но я работаю в серьезной компании, которая хочет начать производство своего USB утройства.

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

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

 

Share this post


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

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

 

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

 

Share this post


Link to post
Share on other sites
Уже выбил и уже читаю. А по теме можно ответить?

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

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

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

 

Share this post


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

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

Share this post


Link to post
Share on other sites

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

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

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

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

 

 

Share this post


Link to post
Share on other sites

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites
...

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

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

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

Share this post


Link to post
Share on other sites
Делал HID устройство, которое работало через BUKL EP.

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this