В контексте разработки ESP32 отладка является важной задачей, но ESP-PROG, официальный отладчик для ESP32, становится дорогим из-за недавнего повышения цен. В результате необходимо найти альтернативу. DAPLink — жизнеспособный вариант для отладки STM32 через SWD/JTAG, но он не смог отладить ESP32. Однако существует официальный проект под названием ESP USB Bridge, который может превратить ESP32 S2/S3 в недорогой JTAG-отладчик для ESP32.

В этой статье рассказывается, как использовать S2 Mini за 2 доллара в качестве отладчика для отладки простой программы мигания на плате разработки ESP32-WROOM-32UE.

Перепрошивка прошивки ESP USB Bridge на S2 Mini

Для начала прошиваем S2 Mini прошивкой ESPLink, которая уже скомпилирована и доступна для удобства.

Прежде чем продолжить, установите PlatformIO.

Flash Tool esptool.py уже установлен при компиляции программы ESP32 с помощью PlatformIO. Если нет, запустите pip install esptool.

Затем перейдите в каталог platformio в домашнем каталоге (~/.platformio/packages/tool-esptoolpy), создайте папку tmp и скопируйте в нее три bin-файла ESPLink.

Подключите S2 Mini к компьютеру через USB. Устройство должно отображаться как последовательное USB-устройство, например /dev/ttyACM0 (COMx при использовании Windows).

Если устройство не найдено в списке устройств, особенно для новых плат, войдите в режим загрузки прошивки вручную, нажав и удерживая кнопку 0, нажав RST, подождав 1 секунду и отпустив 0.

Выполните следующую команду, чтобы прошить прошивку:

python esptool.py -p /dev/ttyACM0 -b 460800 - before default_reset - after hard_reset - chip esp32s2 write_flash - flash_mode dio - flash_size detect - flash_freq 40m 0x1000 tmp/bootloader.bin 0x8000 tmp/partition-table.bin 0x10000 tmp/bridge.bin

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

Добавить правила udev для S2 Mini

Этот шаг специфичен для Linux. Пользователи Windows могут пропустить этот шаг.

Отредактируйте файл /etc/udev/rules.d/99-platformio-udev.rules и добавьте в конец следующее содержимое:

# ESPLink
ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1002", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"

Перезапустите службу:

sudo udevadm control --reload-rules

Если отладчик по-прежнему не работает, перезапустите систему.

Электропроводка

В следующей таблице показана конфигурация проводки:

╔═════════╦════════╗
║  JTAG   ║ Target ║
╠═════════╬════════╣
║ TCK(38) ║ 13     ║
║ TDI(36) ║ 12     ║
║ TDO(35) ║ 15     ║
║ TMS(37) ║ 14     ║
║ RST(33) ║ EN     ║
╚═════════╩════════╝

Обратите внимание, что RXD(5) и TXD(6) еще не используются.

Конфигурация проекта PlatformIO

Чтобы настроить проект PlatformIO для отладки с помощью ESP32 S2 Mini, выполните следующие действия:

  1. Создайте новый проект в PlatformIO и выберите плату esp32dev из платформы espressif32.
  2. Отредактируйте файл platformio.ini, включив в него следующую конфигурацию:
[platformio]
default_envs = esp32dev_debug

[env:esp32dev_debug]
platform = espressif32
board = esp32dev
framework = arduino
upload_protocol = esp-bridge
debug_tool = esp-bridge
debug_init_break = tbreak setup

3. Сохраните файл и закройте его.

Приведенная выше конфигурация задает для среды по умолчанию значение esp32dev_debug, которое определяет используемую плату, платформу, инфраструктуру и инструменты отладки. Кроме того, он настраивает инструмент отладки на esp-bridge и устанавливает точку останова в функции setup скетча.

Отладка

После настройки проекта PlatformIO выполните следующие действия, чтобы отладить простую программу мигания, используя ESP32 S2 Mini в качестве отладчика:

  1. Откройте файл src/main.c в редакторе PlatformIO и добавьте точку останова, щелкнув в левой части строки с вызовом функции delay().
  2. Подключите плату разработки ESP32-WROOM-32UE к отладчику ESP32 S2 Mini с помощью проводки JTAG, описанной ранее в этой статье.
  3. Нажмите F5 (Выполнить › Начать отладку) в редакторе PlatformIO, чтобы войти в интерфейс отладки.
  4. Подождите несколько секунд, пока ESP32 инициализируется, и войдите в функцию setup, где установлена ​​точка останова.
  5. Несколько раз нажмите F5 (Продолжить на верхней панели), чтобы просмотреть программу и наблюдать за включением и выключением встроенного светодиода.
  6. Убедитесь, что отладчик работает должным образом.

Следуя этим шагам, вы сможете отлаживать свои программы ESP32, используя недорогой ESP32 S2 Mini и проект ESP USB Bridge. Удачного взлома!