В контексте разработки 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, выполните следующие действия:
- Создайте новый проект в PlatformIO и выберите плату
esp32dev
из платформыespressif32
. - Отредактируйте файл
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 в качестве отладчика:
- Откройте файл
src/main.c
в редакторе PlatformIO и добавьте точку останова, щелкнув в левой части строки с вызовом функцииdelay()
. - Подключите плату разработки ESP32-WROOM-32UE к отладчику ESP32 S2 Mini с помощью проводки JTAG, описанной ранее в этой статье.
- Нажмите
F5
(Выполнить › Начать отладку) в редакторе PlatformIO, чтобы войти в интерфейс отладки. - Подождите несколько секунд, пока ESP32 инициализируется, и войдите в функцию
setup
, где установлена точка останова. - Несколько раз нажмите
F5
(Продолжить на верхней панели), чтобы просмотреть программу и наблюдать за включением и выключением встроенного светодиода. - Убедитесь, что отладчик работает должным образом.
Следуя этим шагам, вы сможете отлаживать свои программы ESP32, используя недорогой ESP32 S2 Mini и проект ESP USB Bridge. Удачного взлома!