Открыть сервисСервис

Отладка по USB: способы и настройка

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

Область применения

Отладка по USB широко применяется в разработке встраиваемых систем на базе микроконтроллеров, в отладке Android-устройств, а также при работе с одноплатными компьютерами, такими как Raspberry Pi. Технология позволяет:

  • загружать прошивку в память устройства;
  • выполнять пошаговое выполнение кода с остановом на точках останова;
  • просматривать и изменять значения переменных в реальном времени;
  • читать и писать данные в память устройства;
  • анализировать работу периферийных модулей.

Отладка микроконтроллеров через USB

Стандарт USB DFU

DFU (Device Firmware Upgrade) — стандарт, описанный в спецификации USB, позволяющий загружать прошивку в устройство без специального программатора. Для использования DFU необходимо:

  1. Перевести микроконтроллер в режим DFU (обычно это делается специальной комбинацией кнопок или программно).
  2. Подключить устройство к компьютеру по USB.
  3. Установить драйвер (в Windows) или убедиться, что в Linux присутствует утилита dfu-util.
  4. Записать прошивку с помощью утилиты dfu-util или STM32CubeProgrammer.

Для STM32 режим DFU активируется при подключении к пину BOOT0 напряжения VDD при старте микроконтроллера.

Промежуточные отладочные пробники, такие как ST-Link, J-Link или CMSIS-DAP, подключаются к компьютеру по USB, а к целевому устройству — по интерфейсам SWD (Serial Wire Debug) или JTAG. Процесс включения отладки:

  1. Подключить пробник к компьютеру по USB.
  2. Подключить пробник к целевому устройству по SWD/JTAG (минимум три провода: SWDIO, SWCLK, GND).
  3. Установить драйверы пробника.
  4. Запустить отладчик (OpenOCD, pyOCD, Keil, IAR) и указать тип пробника.

OpenOCD

OpenOCD — популярный открытый инструмент для отладки встраиваемых систем. Пример команды запуска для STM32F4 с пробником ST-Link:

`` openocd -f interface/stlink.cfg -f target/stm32f4x.cfg ``

После запуска OpenOCD открывает TCP-порт (обычно 3333), к которому подключается отладчик GDB.

Отладка Android через USB

Подготовка устройства

Для отладки Android-приложений через USB необходимо выполнить следующие шаги:

  1. На устройстве включить «Параметры разработчика»: открыть «О телефоне» и семь раз нажать на номер сборки.
  2. В появившемся меню «Параметры разработчика» включить переключатель «Отладка по USB».
  3. Подключить устройство к компьютеру кабелем.
  4. На экране устройства подтвердить запрос «Разрешить отладку по USB?» с указанием отпечатка ключа RSA компьютера.

ADB

ADB (Android Debug Bridge) — основной инструмент командной строки для взаимодействия с Android-устройством. Проверка подключения:

`` adb devices ``

Команда выводит список подключённых устройств. Если устройство отображается со статусом unauthorized, необходимо подтвердить запрос на экране устройства.

Полезные команды ADB:

  • adb shell — открыть оболочку устройства;
  • adb install app.apk — установить приложение;
  • adb logcat — просмотр системного журнала;
  • adb push файл /путь/ — скопировать файл на устройство.

Режимы подключения USB

Android-устройства могут работать в нескольких USB-режимах: MTP (передача файлов), PTP (фото), зарядка и режим отладки. При включённой отладке по USB устройство дополнительно предоставляет виртуальный интерфейс ADB поверх основного USB-соединения.

Отладка Raspberry Pi

Для отладки Raspberry Pi без подключения монитора и клавиатуры используется включение отладочного интерфейса через USB:

  1. Подключить Raspberry Pi к компьютеру по USB (к порту USB Type-C на моделях Raspberry Pi 4/5).
  2. На компьютере открыть терминал и подключиться к виртуальному последовательному порту (например, /dev/ttyACM0 в Linux или COM-порт в Windows).
  3. Ввести логин и пароль (по умолчанию pi / raspberry в старых версиях, при первой загрузке пароль задаётся через Imager).

Также можно включить SSH, создав файл ssh в разделе boot SD-карты, и подключаться по сети.

Типичные проблемы и решения

ПроблемаПричинаРешение
Устройство не определяетсяОтсутствует драйверУстановить драйвер пробника или ADB
adb devices пустНе подтверждён ключ RSAПодтвердить запрос на экране устройства
DFU не запускаетсяНеверная комбинация кнопокПроверить документацию на микроконтроллер
Низкая скорость отладкиИспользуется USB 1.1Подключить к порту USB 2.0/3.0

Источники

  • Документация STMicroelectronics по STM32CubeProgrammer
  • Руководство Android Debug Bridge (developer.android.com)
  • Документация OpenOCD (openocd.org)
  • Руководство пользователя Raspberry Pi Imager
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru