jcxz 232 11 марта, 2020 Опубликовано 11 марта, 2020 · Жалоба Нужно из под винды работать со своим девайсом по USB. Что именно делать: получать его дескрипторы + control-передачи по ep0 + изохронные передачи. Писать свой USB-драйвер устройства естественно желания нет. Хочу использовать что-то типа WinUSB/LibUSB/CyUSB/etc. Ранее в таких случаях всегда пользовал CypressUSB (CyUSB). Но у него есть баги при работе с изохронными точками. Хочется попробовать что-то новое. Решил попробовать LibUSB. Как оказалось там есть какая-то путаница: на сайте проекта рекомендуют использовать libusb1.0 (а не старую libusb0.1), но виндовый драйвер есть только для libusb0.1 (libusb0.sys), для libusb1.0 нет в природе .sys-файла (или я не нашёл?). Если верить докам на libusb1.0 - оно должно быть совместимо с .sys-драйвером 0.1. Но по факту некоторые функции библиотеки libusb1.0 не работают с libusb0.sys - возвращают ошибку (в то время как если вызывать их аналоги из библиотеки версии 0.1 - они работают нормально). В инете на форумах народ также пишет о такой проблеме, но решения нет. Использовать библиотеку libusb0.1 - не вариант, так как для изохронных передач там очень убогий интерфейс - не понятно как запустить непрерывную передачу, периодически получая кадры, но не останавливая саму передачу (в CyUSB для этого можно было ставить цепочки кадров в FIFO-очередь и они последовательно заполнялись). Почитал про WinUSB, но там как я понял вообще нет поддержки изохронных передач. :((( Есть ещё какая-то libusbK, которая как пишут подобная WinUSB, но имеет поддержку изохронных передач. Вопрос: Кто какие библиотеки/драйвера использует в таком случае? Какие недостатки/достоинства они имеют? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 11 марта, 2020 Опубликовано 11 марта, 2020 · Жалоба А что за поток такой нетребовательный ?может в аудио тогда завернть? Или иное стандартное устройство с изозхроностями, видео? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 232 11 марта, 2020 Опубликовано 11 марта, 2020 · Жалоба 1 час назад, GenaSPB сказал: А что за поток такой нетребовательный ?может в аудио тогда завернть? Или иное стандартное устройство с изозхроностями, видео? Почему "нетребовательный"? Это не аудио и не видео - не надо заворачивать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 71 11 марта, 2020 Опубликовано 11 марта, 2020 · Жалоба 4 hours ago, jcxz said: Почитал про WinUSB, но там как я понял вообще нет поддержки изохронных передач. :((( удивительно, в W8 и ранее, похоже действительно не умело, насколько научилось теперь - не знаю, но вот: Quote Starting in Windows 8.1, the set of WinUSB Functions have APIs that allow a desktop application to transfer data to and from isochronous endpoints of a USB device. For such an application, the Microsoft-provided Winusb.sys must be the device driver. https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/getting-set-up-to-use-windows-devices-usb Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 232 11 марта, 2020 Опубликовано 11 марта, 2020 · Жалоба 1 час назад, _pv сказал: удивительно, в W8 и ранее, похоже действительно не умело, насколько научилось теперь - не знаю, но вот: Да, я это тоже видел. Но хотелось бы чтобы работало во всех виндах, начиная даже желательно от XP. В принципе CyUSB работает нормально на Win7. Но в XP глючит. И нет полной уверенности в том, что этот баг не проявится при каких-то условиях на виндах >=win7. Да и хочется расширить кругозор в плане подобных драйверов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 11 марта, 2020 Опубликовано 11 марта, 2020 · Жалоба Это я потому спросил, что пропажа данных в изохронном ендпоинте дело тихое и незаметное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 232 12 марта, 2020 Опубликовано 12 марта, 2020 · Жалоба Я же написал: у меня поток данных реального времени. И максимального размера кадра. Поэтому выбора нет - только изохронный. И почему "тихое"? В кадры нетрудно добавить счётчик и по нему обнаруживать потери. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 232 17 марта, 2020 Опубликовано 17 марта, 2020 · Жалоба Вобщем результат: Написал работу со своим изохронным потоком на базе драйвера libusbK (v3.0.7.0) (http://libusbk.sourceforge.net/UsbK3/index.html) Работает стабильно (правда проверил только под winXP). Непрерывный поток изохронных кадров размером 1023 байт, с параллельным обменом через ep0. Багов в работе не замечено (в отличие от CyUSB). Из жирных минусов могу отметить только очень скудную документацию (описаний на некоторые функции API практически нет). Поэтому разбираться в его API пришлось по исходникам (благо примеров с ним идёт много). Изохронное API у этого драйвера - полновесное (в отличие от WinUSB и libusb-win32): позволяет ставить очереди из множества кадров драйверу на приём в overlapped-режиме. Прерывание/перезапуск потока - тоже без проблем. Работу проверял в режиме FS-USB с XMC4500. PS: USB-драйвер из состава LUFA-библиотеки для XMC4xxx можно выкинуть на помойку, так как багов в нём много, если с ep0 ещё как-то работает более-менее, то для изохронного режима не годится - пришлось полностью его перепахать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 17 марта, 2020 Опубликовано 17 марта, 2020 · Жалоба А драйвер для этого UsbK3 есть подписанный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 232 17 марта, 2020 Опубликовано 17 марта, 2020 · Жалоба 5 минут назад, AHTOXA сказал: А драйвер для этого UsbK3 есть подписанный? Не знаю. Сейчас у меня под рукой только комп с WinXP - мне без разницы. Можете сами по приведённой ссылке поинтересоваться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 17 марта, 2020 Опубликовано 17 марта, 2020 · Жалоба Да мне пока не надо. Просто я думал, что вы этот вопрос выяснили, прежде чем брать драйвер в работу. Или вам не нужна универсальность? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 232 17 марта, 2020 Опубликовано 17 марта, 2020 · Жалоба 1 минуту назад, AHTOXA сказал: Да мне пока не надо. Просто я думал, что вы этот вопрос выяснили, прежде чем брать драйвер в работу. Или вам не нужна универсальность? Мне этот USB исключительно для отладочных целей нужен: Нужно выводить быстрый поток, а почти все пины заняты (Ethernet не задействуешь). А больше других подходящих скоростных интерфейсов в XMC4500 нет. В рабочей прошивке у юзера не будет USB. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 71 18 марта, 2020 Опубликовано 18 марта, 2020 · Жалоба 14 hours ago, jcxz said: Мне этот USB исключительно для отладочных целей нужен: Нужно выводить быстрый поток, а почти все пины заняты (Ethernet не задействуешь). А больше других подходящих скоростных интерфейсов в XMC4500 нет. В рабочей прошивке у юзера не будет USB. Из spi, которых у xmc4500 довольно много, и 74hc86 можно 10BASE-T ethernet изобразить, ну или из spi на удвоенной скорости, но тогда весь поток побитно пережевать придётся для манчестера. И только на выход, на вход ещё пара D триггеров нужна для декодера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 232 18 марта, 2020 Опубликовано 18 марта, 2020 · Жалоба 12 минут назад, _pv сказал: Из spi, которых у xmc4500 довольно много, и 74hc86 можно 10BASE-T ethernet изобразить, ну или из spi на удвоенной скорости, но тогда весь поток побитно пережевать придётся для манчестера. И только на выход, на вход ещё пара D триггеров нужна для декодера. a) Объясните как SPI подключить к ПК? b) Я выше писал - почти все пины заняты, а SPI-ные - так точно все. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 18 марта, 2020 Опубликовано 18 марта, 2020 · Жалоба 25 minutes ago, jcxz said: Объясните как SPI подключить к ПК? Сэмулировать 10M Ethernet. Достаточно имитировать только Normal Link Pulse и все. Линк поднимется, дальше просто посылать UDP-пакеты. Главное, чтобы SPI без дырок между байтами мог данные посылать со скоростью 10М. Либо работать в слейв-режиме с такой скоростью. Из I2S, кстати, хорошо получится. 43 minutes ago, _pv said: И только на выход, на вход ещё пара D триггеров нужна для декодера. Не хватит двух D-триггеров для декодирования манчестера. Да еще и не в каждом камне SPI умеет в слейв на 10М. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться