Настройка отладки в режиме ядра через кабель USB 3.0

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

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

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

  • Отладочный кабель USB 3.0, который является кроссоверным кабелем A-A, который имеет два разъема типа А и без подключения Vbus
  • Контроллер узла xHCI (USB 3.0) на хост-компьютере
  • На целевом компьютере — хост-контроллер xHCI (USB 3.0), поддерживающий отладку.

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

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

  1. На целевом компьютере запустите средство UsbView . Средство UsbView входит в состав средств отладки для Windows.

  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 . Введите имя целевого объекта, созданное при настройке целевого компьютера. Нажмите кнопку ОК.

На этом этапе 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 на узле и usb-контроллеру Intel (Ice Lake или Tiger Lake) 3.1 на целевом объекте.

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

Чтобы проверить эту проблему, откройте диспетчер устройств и найдите usb Debug Connection Device (Устройство отладочного подключения 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

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

См. также раздел

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