Поделиться через


Настройка отладки в режиме ядра USB 3.0 xHCI (KDUSB xHCI-DBC USB 3.0)

Средства отладки для Windows поддерживают отладку в режиме ядра по кабелю USB 3.0. В этой статье описывается, как вручную настроить отладку USB 3.0.

Компьютер, на котором выполняется отладчик, называется главным компьютером, а отлаживаемый компьютер называется целевым компьютером.

Для отладки по кабелю USB 3.0 требуется следующее оборудование:

  • На хост-компьютере контроллер узла xHCI (USB 3.0)
  • На целевом компьютере контроллер узла xHCI (USB 3.0), поддерживающий отладку
  • Контроллер USB-узла целевого компьютера должен поддерживать интерфейс возможностей Intel xHCI-Debug (DBC). Дополнительные сведения см. в спецификации xHCI, доступной на веб-сайте Intel.

Требования к кабелю

  • Оранжевый кабель отладки Microsoft USB, который является кроссоверным кабелем A-A с двумя подключаемыми модулями типа A и без подключения Vbus. Этот кабель доступен от поставщиков, таких как DataPro - USB 3.0 Суперскоростной кабель A/A.

Чтобы упростить устранение неполадок, подключите кабель непосредственно между целевым компьютером и узлом, избегая любых концентраторов или док-станций.

Двоичные файлы транспорта

Kdstub.dll используется для поддержки транспорта отладчика KDUSB xHCI-DBC USB 3.0.

Настройка целевого компьютера

  1. На целевом компьютере запустите средство UsbView . Средство UsbView включается в средства отладки для Windows. Для системы x64 UsbView будет находиться в C:\Program Files (x86)\Windows Kits\10\Tools\kitversion\x64\usbview.exe.

  2. В UsbView найдите все контроллеры узлов xHCI.

  3. В UsbView разверните узлы контроллеров узлов xHCI. Найдите признак того, что порт на контроллере узла поддерживает отладку.

    [Port1]
    
    Is Port User Connectable:         yes
    Is Port Debug Capable:            yes
    Companion Port Number:            3
    Companion Hub Symbolic Link Name: USB#ROOT_HUB30#5&32bab638&0&0#{...}
    Protocols Supported:
     USB 1.1:                         no
     USB 2.0:                         no
     USB 3.0:                         yes
    
  4. Запишите номера шины, устройства и функции для контроллера xHCI, который планируется использовать для отладки. UsbView отображает эти числа. В следующем примере номер шины равен 48, номер устройства равен 0, а номер функции — 0.

    USB xHCI Compliant Host Controller
    ...
    DriverKey: {36fc9e60-c465-11cf-8056-444553540000}\0020
    ...
    Bus.Device.Function (in decimal): 48.0.0
    
  5. После идентификации контроллера xHCI, поддерживающего отладку, необходимо найти физический USB-соединитель, связанный с портом на контроллере xHCI. Чтобы найти физический соединитель, подключите любое устройство USB 3.0 к любому USB-соединителю на целевом компьютере. Обновите UsbView, чтобы узнать, где находится ваше устройство. Если UsbView отображает устройство, подключенное к выбранному контроллеру узла xHCI, вы нашли физический USB-соединитель, который можно использовать для отладки USB 3.0.

Внимание

Перед изменением bcdedit сведений о загрузке может потребоваться временно приостановить функции безопасности Windows, такие как BitLocker и безопасная загрузка на тестовом компьютере. Повторно включите эти функции безопасности при завершении тестирования и соответствующим образом управляйте тестируемым компьютером при отключении функций безопасности.

  1. На целевом компьютере откройте окно командной строки от имени администратора и введите следующие команды:

    bcdedit /debug on
    bcdedit /dbgsettings usb targetname:<TargetName>
    

    TargetName — это имя, которое создается для целевого компьютера. Обратите внимание, что TargetName не обязательно является официальным именем целевого компьютера. Это может быть любая строка, созданная до тех пор, пока она соответствует этим ограничениям:

    • Строка не должна содержать "debug" в любом месте targetName в любом сочетании верхнего или нижнего регистра. Например, если вы используете "DeBuG" или "DEBUG" в любом месте целевого имени, отладка не работает правильно.
    • Единственными символами в строке являются дефис (-), символ подчеркивания(_), цифры 0–9 и буквы A–Z (верхний или нижний регистр).
    • Максимальная длина строки составляет 24 символа.
  2. В диспетчер устройств найдите USB-контроллер, который планируется использовать для отладки. В разделе "Расположение " на вкладке "Общие " отображаются номера шины, устройства и функции. Введите эту команду:

    bcdedit /set "{dbgsettings}" busparams <b.d.f>
    

    B, d и f — это номера шины, устройства и функции для контроллера USB-узла. Номера шин, устройств и функций должны быть в десятичном формате.

    Пример:

    bcdedit /set "{dbgsettings}" busparams 48.0.0
    
  3. Перезагрузите целевой компьютер.

Отключение управления питанием

В некоторых случаях переходы питания могут препятствовать отладке через USB 3.0. Чтобы избежать этих проблем, отключите выборочную приостановку для контроллера узла xHCI и корневого концентратора, который используется для отладки.

  1. В диспетчер устройств перейдите к узлу для контроллера узла xHCI. Щелкните узел правой кнопкой мыши и выберите пункт "Свойства". Если есть вкладка "Управление питанием", откройте вкладку и снимите флажок "Разрешить компьютеру отключить это устройство для сохранения питания".

  2. В диспетчер устройств перейдите к узлу корневого концентратора контроллера узла xHCI. Щелкните узел правой кнопкой мыши и выберите пункт "Свойства". Если есть вкладка "Управление питанием", откройте вкладку и снимите флажок "Разрешить компьютеру отключить это устройство для сохранения питания".

После завершения использования контроллера узла xHCI для отладки повторно включите выборочную приостановку для контроллера узла xHCI.

Запуск сеанса отладки в первый раз

  1. Подключите кабель отладки USB 3.0 к портам USB 3.0, выбранным для отладки на узлах и целевых компьютерах.
  2. Определите битность (32-разрядную или 64-разрядную) Windows, запущенную на хост-компьютере.
  3. На хост-компьютере откройте версию WinDbg (как администратор), которая соответствует разрядности Windows, работающей на хост-компьютере. Например, если главный компьютер работает с 64-разрядной версией Windows, откройте 64-разрядную версию WinDbg от имени администратора.
  4. В меню "Файл" выберите "Отладка ядра". В диалоговом окне отладки ядра откройте вкладку USB . Введите имя целевого объекта, созданное при настройке целевого компьютера. Щелкните OK.

На этом этапе драйвер отладки USB устанавливается на главном компьютере, поэтому важно сопоставить биты WinDbg с битами Windows. После установки драйвера отладки USB можно использовать 32-разрядную или 64-разрядную версию WinDbg для последующих сеансов отладки.

Запуск сеанса отладки

Использование WinDbg

На хост-компьютере откройте WinDbg. В меню "Файл" выберите "Отладка ядра". В диалоговом окне отладки ядра откройте вкладку USB . Введите имя целевого объекта, созданное при настройке целевого компьютера. Нажмите ОК.

Вы также можете запустить сеанс с WinDbg, введя следующую команду в окне командной строки, где TargetName — это имя целевого объекта, созданное при настройке целевого компьютера:

windbg /k usb:targetname=<TargetName>

Использование KD

На хост-компьютере откройте окно командной строки и введите следующую команду, где TargetName — это имя целевого объекта, созданное при настройке целевого компьютера:

kd /k usb:targetname=<TargetName>

Перезагрузка целевого компьютера

После подключения отладчика перезагрузите целевой компьютер. Одним из способов перезагрузки компьютера является использование shutdown -r -t 0 команды из командной строки администратора.

После перезапуска целевого компьютера отладчик должен подключаться автоматически.

Устранение неполадок

USB-устройство не распознано

Если уведомление windows отображается на узле с текстовым USB-устройством, не распознаваемым при вставке отладочного кабеля, возможно, возникает известная проблема совместимости USB 3.1 с 3.1. Эта проблема влияет на конфигурации отладки при подключении кабеля отладки к контроллеру USB 3.1 на узле и контроллеру Intel (Ice Lake или Tiger Lake) 3.1 USB на целевом объекте.

Дополнительные сведения и описания моделей процессоров см. в разделе Ice Lake (микропроцессор) и Tiger Lake (микропроцессор). Чтобы найти модель процессора целевого компьютера, откройте приложение "Параметры" и перейдите в system then About. Процессор указан в спецификациях устройств.

Чтобы проверить эту проблему, откройте диспетчер устройств и найдите устройство подключения отладки USB в контроллерах универсальной последовательной шины. Если это устройство не удается найти, проверьте наличие неизвестного устройства на других устройствах. Щелкните правой кнопкой мыши устройство, чтобы открыть страницу свойств. Текстовое поле состояния устройства будет иметь текст Windows остановлено это устройство, так как оно сообщило о проблемах (Код 43) и USB-устройство вернуло недопустимый дескриптор USB BOS.

Чтобы обойти эту проблему, выполните следующие команды из командной строки администратора, чтобы внести изменения в реестр:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\349500E00000 /v SkipBOSDescriptorQuery /t REG_DWORD /d 1 /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\045E06560000 /v SkipBOSDescriptorQuery /t REG_DWORD /d 1 /f

Затем удалите и повторно введите отладочный кабель.

Сообщения о повторных попытках подключения в окнах консоли отладчика и не могут войти в целевой объект — SkipPciProbeDebugDevice

Если вы столкнулись со следующим сообщением в консоли отладчика KDNET, не удается инициировать разрыв в целевой объект или возникнуть проблемы с определенными командами (например, kdfiles), это может быть связано с получением пакета проверки связи из-за KDNET".

... Retry sending the same data packet for 128 times.

The transport connection between host kernel debugger and target Windows seems lost.
please try resync with target, recycle the host debugger, or reboot the target Windows.

Эта проблема может произойти, так как драйвер pci.sys неправильно проверит устройство отладки. Чтобы устранить ошибки, создайте следующую запись реестра на целевом устройстве в командной строке администратора.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\SERVICES\kdnet /v SkipPciProbeDebugDevice /t REG_DWORD /d 1 /f

Затем перезапустите целевой компьютер.

shutdown /r /t 0

После перезагрузки устройства ошибки должны исчезнуть, и команды должны работать должным образом.

См. также

Настройка отладки в режиме ядра вручную

Автоматическая настройка отладки сетевого ядра KDNET

Настройка отладки сетевого ядра KDNET вручную

Настройка отладки режима ядра USB KDNET EEM (KDNET-EEM-USB)

Настройка отладки в режиме ядра USB KDNET (KDNET-USB)