Резюме
Я разработки встроенного программного обеспечения и тестовое приложение PC для устройства пользовательского USB, используя STM32F072 Discovery board. Устройство содержит Microsoft Windows Compatible IDs (WCIDs) to enable automatic installation драйвера WinUSB на ПК.для Windows 10 - вычистить USB перечисления/драйвер хлам
Устройство правильно перечислено на других хостах Windows 10, но не на моем компьютере с ОС Windows 10. Мой ПК разработки ранее пытался перечислить устройство, когда он имел ту же комбинацию VID/PID, но с различными дескрипторами/метаданными. Если я изменю PID на какой-то другой номер (новый для моего ПК разработки), то он делает правильно перечисляем.
Вопросы
- Как я могу получить эту работу с моей желаемой VID/PID комбо на моем компьютере разработки?
- Является ли Windows кэширование USB-метаданных причиной неудачной нумерации на этом одном ПК?
- Каковы наилучшие практики на ПК (Windows) для тестирования/разработки прошивки USB-устройства во время этапа, когда дескрипторы устройств и метаданные находятся в потоке? Можно ли избежать жевать PID только для того, чтобы избежать кэширования Windows?
Подробности
Из-за особенностей ОС Windows кэширует USB дескрипторы и т.п. от предыдущих перечислений, во время разработки встроенного программного обеспечения, я приращением устройство Product ID (PID) в прошивке после каждый раз, когда я сделал другие изменения , чтобы гарантировать, что Windows не кэширует вещи из предыдущих итераций дескрипторов и не вмешивается в работу, которая в противном случае работала бы.
Теперь я получил устройство для успешного перечисления на ПК с Windows 7, 8 и 10 в качестве устройства WinUSB, и я установил связь. Но когда я сменил прошивку на использование VID/PID, с которой я начал, а затем подключить устройство к моему компьютеру разработки, он отображается в диспетчере устройств в разделе «Другие устройства» с значком ошибки. I думаю, что это потому, что мой (Windows 10) ПК разработки ранее видел эту комбинацию VID/PID как имеющую разные дескрипторы, поэтому ее путают некоторые плохие кэшированные вещи.
Я искал regedit
, чтобы удалить ключи реестра этого устройства в HKLM\SYSTEM\CurrentControlSet\Enum\USB\VID_xxxx&PID_yyyy
, но проблема остается. (Кроме того, я получаю сообщение об ошибке, потому что он не может удалить подпапки VID_xxxx&PID_yyyy\zzzzzzzzzzzzz\Properties
.) Я также попытался использовать USBDeview для удаления старых итераций устройства, но это тоже не изменило ситуацию.
Также следует отметить, что я больше не могу передавать устройство виртуальным машинам Virtual Box. Я не уверен, что там произошло.
Я начал бы отключать устройство, [конфигурируя диспетчер устройств, чтобы показать его в любом случае] (http://www.thewindowsclub.com/show-non-present-devices-windows) и удалив драйвер с помощью вариант «удалить полностью». Затем проверьте реестр на какие-либо ссылки, если у вас есть проблемы с разрешениями, вам может потребоваться запустить regedit в локальном системном контексте. ** Вам также нужно будет проверить 'c: \ windows \ inf' и удалить любые копии ваших старых файлов inf и любых файлов oem * .inf, которые ссылаются на устройство. ** Могут быть и другие места, но те это те, о которых я знаю. И, конечно, вам нужно будет перезагрузиться. :-) –
@HarryJohnston, 'удаление драйвера с опцией« удалить полностью »- вы имеете в виду флажок« Удалить драйвер программного обеспечения для этого устройства »в диалоговом окне« Подтвердить удаление устройства »? –
Да, это я имел в виду. –