3 / 3 / 1
Регистрация: 19.03.2013
Сообщений: 34
|
||||||
1 | ||||||
Дескриптор конфигурации для WinUSB23.10.2014, 10:34. Показов 3748. Ответов 12
Метки нет (Все метки)
В качестве драйвера для USB устройства на МК пытаюсь использовать стандартный WinUSB. Для этой цели помимо стандартных USB-дескрипторов Microsoft требует от устройства специальных дескрипторов, для распознавания того что данное устройство работает с WinUSB - OS String Descriptor и OS Feature Descriptors.
Но, если в дескрипторе интерфейса указывать класс интерфейса (bInterfaceClass) 0xFF (определяется производителем, что и нужно в случае WinUSB), то после запроса дескриптора конфигурации устройство определяется как неизвестное и не подает признаков жизни, хотя, как я понимаю дальше должен следовать запрос о строковом дескрипторе OS String Descriptor. Вот кусок дескриптора конфигурации, который описывает интерфейс, описание EndPoint опустил.
0
|
23.10.2014, 10:34 | |
Ответы с готовыми решениями:
12
Дескриптор для usb микрофона Дескриптор конфигурации USB Нужно получить дескриптор окна имея дескриптор контрола WinUsb Установка winusb драйвера из приложения |
3 / 3 / 1
Регистрация: 19.03.2013
Сообщений: 34
|
|
24.10.2014, 08:44 [ТС] | 3 |
да, я вчера разобрался. я почемуто решил, что точки с адресом 0x01 и 0x81 (т.е IN и OUT) это одна точка)
спасибо за ответ
0
|
3 / 3 / 1
Регистрация: 19.03.2013
Сообщений: 34
|
|||||||||||
24.10.2014, 10:46 [ТС] | 4 | ||||||||||
However, если в устройстве больше 1го EndPoint то устройство не определяется. Таким образом если в дескрипторе интерфейса в поле bNumEndpoint записать 2, определить два EndPoint, и соответственно увеличить размер дескриптора до 0x20 устройство не определяется.
В прикрипленном файле - скрин отчета работы порта. Странность для меня в том, что если судить по этому отчету, порт не посылает запросы на получение дескрипторов, в то время, как сам МК такие запросы ловит и дескрипторы отсылает. И еще под устройством написано Connection Status - Enumeration of Device failed, но в регистре МК присвоенный номер все-таки записался. Это дескприторы с двумя EndPpoints
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
24.10.2014, 11:03 | 5 |
ну и где ты хочешь чтобы хост спрашивал про строки
ты же сам указал что их нет Добавлено через 1 минуту там нечего не понять у тебя Лузер? сохрани протокол обмена и файл приложи сюда
0
|
3 / 3 / 1
Регистрация: 19.03.2013
Сообщений: 34
|
|
24.10.2014, 11:45 [ТС] | 6 |
Т.е для того чтобы Windows запрашивал не строковый дескриптор с описанием например производителя, а специальный для идентификации устройства как WinUSBDevice нужно записать индекс этого OS String Descriptor в дескриптор устройства? зачем в этом случае тогда жесткое требование чтобы индекс этого дескриптора был 0xEE?
Вот протокол обмена. usb.rar
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
24.10.2014, 11:56 | 7 |
по моему так
это EE может нужно чтобы не писать свой inf файл, для установки драйвера как то это мимо меня прошло дай еще описание всех дескрипторов, чтобы я смог смоделировать ситуацию Добавлено через 4 минуты зачем ты его в html сконвертул? не понятно что засылают что возвращают запусти Лузер запусти захват подключи устройство потом останови захват потом файл сохранить и должен сохранится файл с расширением ulz
0
|
3 / 3 / 1
Регистрация: 19.03.2013
Сообщений: 34
|
|||||||||||||||||||||
24.10.2014, 12:09 [ТС] | 8 | ||||||||||||||||||||
Здесь 2 файла, один отчет когда один EndPoint, второй отчет когда два Endpoint.
MyDevice.rar Дескрипторы в случае двух EndPoint
И в случае одного EndPoint
0
|
3 / 3 / 1
Регистрация: 19.03.2013
Сообщений: 34
|
|
24.10.2014, 16:28 [ТС] | 10 |
Хорошо, спасибо за участие))
Добавлено через 4 часа 0 минут
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
24.10.2014, 18:14 | 11 |
у меня есть несколько "коробочек" сделанные под "фирменную" программу
так вот раньше фирма ставила свой драйвер, а потом перешла на WinUSB коробочки тем не менее продолжают работать но запроса на строку EE я в них не вижу поковыряюсь может что нибудь выясню дай ссылку, откуда цитаты ставишь это описание WinUSB?
0
|
3 / 3 / 1
Регистрация: 19.03.2013
Сообщений: 34
|
|
29.10.2014, 10:46 [ТС] | 13 |
Вобщем все получилось. Если кому интересно будет, суть такова.
Про Windows Compatible ID Devices написано тут. Подключаем устроство в котором написан OS_String_Descriptor. После чего запускем regedit.exe. Ищем HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\. Ищем раздел "VID+PID+BCD_RELEASE_NUMBER", смотрим занчение поля osvc. Если оно 00 хх, то раздел удаляем, и перезапускаем устройство. В этом случае устройству приходит запрос по передачи OS_String_Descriptor, и в разделе "VID+PID+BCD_RELEASE_NUMBER" значение osvc устнавливается в 01 хх, что и означает что OS_String_Descriptor успешно запрошен и получен.
1
|
29.10.2014, 10:46 | |
29.10.2014, 10:46 | |
Помогаю со студенческими работами здесь
13
WinUSB не видит USB носителей USB Composite HID + WinUSB Использование драйвера winusb. Не удается корректно записать в драйвер Не получается найти WinUSB-устройство: SetupDiEnumDeviceInterfaces его не видит [Решено]Низкая скорость USB при использовании WinUSB Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |