Easyelectronics.ru

Электроника для всех
Текущее время: 23 окт 2019, 18:14

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: USB Feed Driver
СообщениеДобавлено: 24 май 2015, 03:25 
Только пришел

Зарегистрирован: 24 май 2015, 03:09
Сообщения: 7
Для тех кто хочет замутить по-быстрому своё USB устройство на STM32
хочу предложить свой вариант реализации
USBFeedDriver
простота + универсальность
если будут вопросы пишите


Последний раз редактировалось JohnMcLaren 25 май 2015, 05:09, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 24 май 2015, 17:51 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1454
Мне нравится идея именованных каналов-интерфейсов к девайсу по usb, и что 4 символа имени == номеру и-фейса, и что страший бит это r/w, но не нравится cdc на хосте. Во-первых, странно поверх уже готового пакетного usb с аппаратным контролем целостности данных искусственно городить потоковый и вводить софтовый контроль, во-вторых для приложения на хосте это ж будет просто поток байтов, в котором нужно будет выделять и кодировать-декодировать пакеты-фреймы протокола, обрабатывать ошибочные ситуации, синхронизировать запросы-ответы и т.п. Как вам такая идея - один фрейм протокола == одна транзакция usb без всяких cdc?

_________________
less is more


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 24 май 2015, 18:37 
Только пришел

Зарегистрирован: 24 май 2015, 03:09
Сообщения: 7
vt340
CDC был выбран чтоб не писать свой Kernel Driver для Windows.
Т.е. на комп не требуется вообще устанавливать драйверы подключаемого устройства.
Оно уже известно системе.. и это стандартный CDC.
Если заметили по коду, инициализация CDC номинальная, лишь бы поднять линк с хостом а дальше всё делает фид.

Насчёт своего протокола. По сути это аналог интернетовского PPP и TCP.
Я б не стал такой лес городить еслиб USB позволил мне гарантировано сбросить приёмный буфер устройства.
Ну а теперь когда он уже есть, я хочу его расширить на другие линии (CAN, SPI, RS232, RF, Ethernet ..).
То есть, именно странности с искусстенными потоками и контролем и дают необходимую универсальность.
А USB становится просто одной из линий связи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 24 май 2015, 19:20 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1454
JohnMcLaren писал(а):
CDC был выбран чтоб не писать свой Kernel Driver для Windows.
Т.е. на комп не требуется вообще устанавливать драйверы подключаемого устройства.
Оно уже известно системе.. и это стандартный CDC.
Если заметили по коду, инициализация CDC номинальная, лишь бы поднять линк с хостом а дальше всё делает фид.

Насчёт своего протокола. По сути это аналог интернетовского PPP и TCP.
Я б не стал такой лес городить еслиб USB позволил мне гарантировано сбросить приёмный буфер устройства.
Ну а теперь когда он уже есть, я хочу его расширить на другие линии (CAN, SPI, RS232, RF, Ethernet ..).
То есть, именно странности с искусстенными потоками и контролем и дают необходимую универсальность.
А USB становится просто одной из линий связи.

Ну жаль, что такая постановка - кроме cdc есть ведь не менее стандартный winusb. Транзит потоков, конечно, тоже благодарная задача, но гораздо интереснее было бы преодолеть проклятье древнего com-порта ) в кач-ве и-фейса во внешний мир

_________________
less is more


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 24 май 2015, 21:48 
Только пришел

Зарегистрирован: 24 май 2015, 03:09
Сообщения: 7
что такое winusb?
это видимо USB-ZIP загрузочная флешка?
но если и так.. есть выбор чем будет являться фид для системы
1. HID (mouse, keyboard, joystik и прочее)
2. CDC (COM)
3. USB-ZIP (флешка)
из этого я выбрал именно порт что по моему наиболее логично для линии связи.
А проклятья "древнего com-порта" действительно нет. Он даже не инициализируется по нормальному.
То есть скорость передачи, кол-во бит данных, кол-во стоповых бит.. это всё в прошлом)
Фид работает на максимально доступной скорости физического канала связи, для USB Full Speed это 12 Mbit/s. Просто в этом тестовом примере 4.5 Mbit/s, но я ж написал что это не предел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 24 май 2015, 22:12 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1454
JohnMcLaren писал(а):
что такое winusb?

Это такой же как и cdc стандартный микрософтовый драйвер, только для доступа прямо в endpoints
https://msdn.microsoft.com/en-us/librar ... 40196.aspx
http://janaxelson.com/winusb.htm

_________________
less is more


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 24 май 2015, 22:34 
Только пришел

Зарегистрирован: 24 май 2015, 03:09
Сообщения: 7
vt340 писал(а):
JohnMcLaren писал(а):
что такое winusb?

Это такой же как и cdc стандартный микрософтовый драйвер

а как быть с Линухом?))
Вот если мне нужно из смартфона на андроидике сделать устройство отображения данных с моего USB осциллографа/камеры/датчика/радиомодуля т.д.?
Я не пробовал.. но могу с некоторой уверенностью утверждать, что COM порт он и в Линухе компорт.
Ну и потом.. я предлагаю работать с каналом связи, не погружаясь в специфику реализации любого из них,
используя всего лишь 4 метода
Open
Read
Write
Close
Куда уж проще


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 25 май 2015, 11:50 
Заглядывает иногда

Зарегистрирован: 09 янв 2013, 21:54
Сообщения: 102
Откуда: Челябинск
Есть же HID. И в линухе работает, и драйверов не требует.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 25 май 2015, 12:15 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2623
Откуда: Санкт-Петербург
vt340, вы с winusb уже разбирались? Я правильно понимаю, что это - некий аналог libusb, только от MS и, соответственно, нет проблем с подписью драйвера?
И если делать своё устройство с USB, то разумным вариантом будет софтину для него делать на libusb для линукса/макоси и на winusb для винды, обходясь без kernel-mode driver?
(сорри, если вопросы тупые - я не слишком хорошо представляю себе работу USB и стек драйверов для него)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 25 май 2015, 13:13 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1454
aamonster писал(а):
vt340, вы с winusb уже разбирались? Я правильно понимаю, что это - некий аналог libusb, только от MS и, соответственно, нет проблем с подписью драйвера?
И если делать своё устройство с USB, то разумным вариантом будет софтину для него делать на libusb для линукса/макоси и на winusb для винды, обходясь без kernel-mode driver?

Нет, winusb - это виндовсный драйвер, который работает ниже libusb, а приложение работает одинаково с одной и той же libusb-1.0 и в виндовс, и в линуксе, и наверно и в osx, т.е. winusb доводит виндовс до уровня поддержки usb который уже есть в линуксе.
Вот гляньте пример на си для хоста под линуксом http://www.microchip.com/forums/m340892.aspx#342308 и точно так же всё будет под виндовс.
И даже установку winusb в виндовс добрые люди уже автоматизировали ) http://zadig.akeo.ie/ т.е. не надо даже самому inf файл для девайса делать.

_________________
less is more


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 25 май 2015, 13:27 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2623
Откуда: Санкт-Петербург
Просто праздник какой-то! Совсем недавно libusb на win 8.1 x64 ставил (для USBASP) - так приходилось загружаться с отключенной подписью драйверов. А теперь можно без таких изысков, оказывается. Надо будет попробовать - заработает ли avrdude со свежим libusb без спецдрайвера.

Ничего не понимаю. WinUSB в libusb используется с 2008 года. А неподписанный драйвер мне в этом году понадобился. Как так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 25 май 2015, 13:45 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1454
aamonster писал(а):
Просто праздник какой-то! Совсем недавно libusb на win 8.1 x64 ставил (для USBASP) - так приходилось загружаться с отключенной подписью драйверов. А теперь можно без таких изысков, оказывается. Надо будет попробовать - заработает ли avrdude со свежим libusb без спецдрайвера.

Ничего не понимаю. WinUSB в libusb используется с 2008 года. А неподписанный драйвер мне в этом году понадобился. Как так?

За 8.1 x64 и avrdude ничего сказать не могу ) но jtag адаптеры к openocd в xp и 7 x32 подключаются без проблем - zadig находит их по vid pid, ставит для них winusb, и дальше с ними легко и непринуждённо работает libusb )

_________________
less is more


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 25 май 2015, 13:53 
Заглядывает иногда

Зарегистрирован: 16 окт 2013, 20:15
Сообщения: 168
Откуда: Екатеринбург
vt340 писал(а):
За 8.1 x64 и avrdude ничего сказать не могу ) но jtag адаптеры к openocd в xp и 7 x32 подключаются без проблем - zadig находит их по vid pid, ставит для них winusb, и дальше с ними легко и непринуждённо работает libusb )


Сейчас как раз завершаем разработку устройства, которое пересылает данные "наверх" посредством USB HID. В роли "верха" может выступать ПК с установленными ОС Windows/Linux, либо же Android-устройство. В качестве USB-framework'а была выбрана как раз таки libusb, и данные летят. Вопрос в следующем: можно ли как-то автоматизировать назначение winusb к устройству с конкретным vid/pid, т.е. чтобы инсталлер во время распаковки/установки ПО делал то же, что делает сейчас zadig.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 25 май 2015, 14:01 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1454
Порфирий писал(а):
Сейчас как раз завершаем разработку устройства, которое пересылает данные "наверх" посредством USB HID. В роли "верха" может выступать ПК с установленными ОС Windows/Linux, либо же Android-устройство. В качестве USB-framework'а была выбрана как раз таки libusb, и данные летят. Вопрос в следующем: можно ли как-то автоматизировать назначение winusb к устройству с конкретным vid/pid, т.е. чтобы инсталлер во время распаковки/установки ПО делал то же, что делает сейчас zadig.

А мы своё только к осени, поэтому до инсталлера дела ещё не дошло и как это делает zadig я ещё не копал )
Приношу извинения топик-стартеру за оффтоп, может быть по winusb лучше другой топик открыть

_________________
less is more


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 31 май 2015, 22:14 
Только пришел

Зарегистрирован: 24 май 2015, 03:09
Сообщения: 7
vt340 да ничего страшного)
Всёж в сравнении познаётся. Вот для меня пока выгода использования winusb не очевидна.

Ну вобщем, как и ожидалось Линух прекрасно знает что такое компорт и определяет его как ttyACMx.
Единственное что требуется сделать это изменить права на чтение/запись этого файла - "sudo chmod 666 /dev/ttyACM0"
Немного поправил код и теперь терминал собирается без изменения исходников и под Вин и под Лин.
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Feed Driver
СообщениеДобавлено: 26 окт 2016, 02:31 
Только пришел

Зарегистрирован: 03 июн 2012, 00:07
Сообщения: 14
JohnMcLaren писал(а):
vt340 писал(а):
JohnMcLaren писал(а):
что такое winusb?

Это такой же как и cdc стандартный микрософтовый драйвер

а как быть с Линухом?))
Вот если мне нужно из смартфона на андроидике сделать устройство отображения данных с моего USB осциллографа/камеры/датчика/радиомодуля т.д.?
Я не пробовал.. но могу с некоторой уверенностью утверждать, что COM порт он и в Линухе компорт.
Ну и потом.. я предлагаю работать с каналом связи, не погружаясь в специфику реализации любого из них,
используя всего лишь 4 метода
Open
Read
Write
Close
Куда уж проще


Браво! Наконец-то подумали о Линуксе и линуксоидах :-)))
Я недавно столкнулся с проблемой поднятия USB на STM32F042C6T6 под линуксом... На этапе enumeration не определяется. Как быть? Начинать свои танцы с бубном?
Кстати, Джон, не приходилось-ли заниматься подобной проблемой. На форумах народ просто плюется по этому поводу.
Камни поновее работают без проблем, а этот 042 просто забодал многих, хотя довольно практичный ...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: leocat3, red-30, VladislavS


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB