Как стать автором
Обновить

Комментарии 9

Скажите, а насколько реально запускать такие устройства с виндой? Там же нужны драйвера, а драйвера надо сертифицировать. Не занимались этим?
Когда вы покупаете новую мышку, вам же не нужно устанавливать драйверы. Так и тут — я реализовывал только стандартные устройства, драйверы которых есть везде.
Единственное исключение — первая часть с основами и custom-HID, но даже там используются стандартные дрова, с которыми работает «драйвер», запускаемый от пользователя. То есть даже там никаких проблем с подписью нет.
Ну и к своему стыду я ни разу не писал драйверы даже под Linux, не то что под Windows.
Есть тула Zadig, генерит подписанный драйвер для libusb.
Все нормально с виндой.

Какие-то отдельные драйвера нужны только если используются Vendor-specific USB устройства.

Можно обойтись и без дров для Vendor-specific устройств, если использовать libusb. Можно даже и без libusb, т.к. винда предоставляет «стандартный» драйвер для таких устройств, нужно только правильно оформить INF файл (возможно и VID/PID) подкрутить, и тогда откроются широчайшие возможности (весь WinAPI для доступа из юзер-спейса к таким устройствам). Только одно ограничение (как помню), что чтение/запись в изохронные конечные точки реализован то ли с Windows 8 то ли с Windows 10 (надо MSDN читать для конкретики).

И вроде как сам libusb и использует эту виндовую фичу тоже (если не ошибаюсь), или может использовать (как я понял там два варианта, или ставить спец драйвер от libusb, или использовать стандартный от винды? просветите плз).

А вот audio и прочие устройства являются Class-specific устройствами, для которых также есть стандартные драйвера во всех нормальных ОС. Т.е. ничего писать дополнительно не надо, не надо никаких libusb, также не надо и мутить с VID/PID. Я, например, всегда использую связку 0xFFFF/0xFFFF и работает на любой ОС.

Только в винде (вроде до WIndows 8) было ограничение в том, она не подедрживала спецификацию для USB AUDIO CLASS v2 устройств (может уже это пофиксили сейчас).
UPD: Кстати, для тех кому интересны изохронные конечные точки с «почти на регистрах» (имеется ввиду использование библиотеки libopencm3), то я там добавил дополнительные исправления (пока что в свой форк). Проверена работа только для IN точек (для создания всяких микрофончиков), т.к. для OUT точек (для всяких спикеров и матюгальников) проблемно это протестировать (т.к. надо подавать на ЦАП, плюс — усилитель подключать, время тратить).
для OUT точек (для всяких спикеров и матюгальников) проблемно это протестировать
На самом деле мощности обычного вывода, по крайней мере в режиме ШИМ вполне хватит для наушников, там много-то не надо.
А чтобы проверить «работает-не работает» можно как у меня — по превышению порога и смотреть на получившуюся светомузыку. Хотя порядок buf0-buf1 так не отследить, конечно. А там при желании можно подать специально сгенерированный сигнал, скажем buf0={0}, buf1={1}, buf0={2}, buf1={3} и т.д. и смотреть в контроллере чтобы шло всегда по возрастанию. А если получится {1}-{0}-{3}-{2} то что-то пошло не так. Чуть сложнее программно, зато никакого обвеса не требует.
Не подскажете библиотеку, сопоставимую по удобству и документации с LUFA, но для ARM-ов? libopencm, когда я её смотрел, показалась сыроватой.
Не, не подскажу, увы.
Есть среди присутствующих кто-нибудь, кто занимался сертификацией драйверов под Windows? Мне надо сертифицировать драйвер. Сколько это хотя бы стоит у Майкрософт?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории