Москва

+7 (495) 488-65-70

Корзина пуста
Загрузка списка товаров из файла
SALE!-10% -20% -30% -40% -50% -60%
дефицитные компоненты
JTAG отладка ESP32

JTAG отладка ESP32

Введение

Микросхема ESP32 имеет два мощных ядра Xtensa, что позволяет использовать множество программных архитектур. Операционная система FreeRTOS, поставляемая с ESP-IDF, поддерживает многоядерную вытесняющую многопоточность, делая возможным разрабатывать программное обеспечение интуитивно понятным способом.

Недостаток простого программирования заключается в том, что отладка без эффективных инструментов сложнее: выявление ошибки, вызванной двумя потоками, работающими одновременно на двух разных ядрах CPU, может занять много времени, когда все, что у вас есть – это оператор printf. Лучший и во многих случаях более быстрый способ устранения таких проблем – использование отладчика, подключенного к процессорам через порт отладки.

Компания Espressif портировала OpenOCD для поддержки процессора ESP32 и multicore FreeRTOS (RTOS с поддержкой многоядерных процессоров), которая станет основой большинства приложений ESP32. Также компания разработала ряд инструментов, которые помогут с функциями, которые OpenOCD изначально не поддерживает.

Этот документ содержит руководство по установке OpenOCD для ESP32 и отладке с использованием GDB в Linux, Windows и MacOS. За исключением особых процедур установки ОС, пользовательский интерфейс s/w и процедуры использования ПО одинаковы для всех поддерживаемых операционных систем.

Примечание. Скриншоты, представленные в этом документе, были сделаны для Eclipse Neon 3, работающей на Ubuntu 16.04 LTE. Могут быть небольшие отличия в том, как выглядит конкретный пользовательский интерфейс, в зависимости от того, используете ли вы Windows, MacOS или Linux и/или другой релиз Eclipse.  

Как это работает? 

Основные программные и аппаратные средства для выполнения отладки ESP32 с OpenOCD через интерфейс JTAG (Joint Test Action Group) представлены ниже и включают в себя отладчик xtensa-esp32-elf-gdb, отладчик OpenOCD на чипе и адаптер JTAG, подключенный к целевой микросхеме ESP32.

Обзорная схема отладки через JTAG

Рис. 1. Обзорная схема отладки через JTAG

Согласно «Application Loading and Monitoring (Загрузка приложений и мониторинг)» существует другое программное и аппаратное обеспечение для компиляции, сборки и прошивки приложений в ESP32, а также для предоставления средств мониторинга диагностических сообщений от ESP32.

Отладка с использованием JTAG и загрузка/мониторинг приложений интегрированы в среду Eclipse, чтобы обеспечить быстрый и простой переход от написания, компиляции и загрузки кода к отладке, и обратно к написанию кода, и так далее. Все программное обеспечение доступно для платформ Windows, Linux и MacOS.

Если используется ESP-WROVER-KIT, то соединение от ПК к ESP32 эффективно осуществляется с помощью одного USB-кабеля, благодаря микросхеме FT2232H, установленной на WROVER, которая обеспечивает два USB-канала: один для JTAG и второй для подключения UART.

В зависимости от предпочтений пользователя, отладка и сборка (make) могут работать непосредственно из терминала/ командной строки, а не из Eclipse. 

Выбор JTAG адаптера 

Самый быстрый и удобный способ начать  JTAG отладку - использовать ESP-WROVER-KIT. Каждая версия этой отладочной платы имеет уже встроенный интерфейс JTAG. Нет необходимости во внешнем адаптере JTAG и в подключении дополнительных проводов/ кабелей JTAG к ESP32. WROVER KIT использует интерфейс JTAG FT2232H, работающий на тактовой частоте 20 МГц, чего трудно добиться с помощью внешнего адаптера.

Если вы решите использовать отдельный адаптер JTAG, ищите тот, который совместим как с уровнями напряжений  ESP32, так и с программным обеспечением OpenOCD. Порт JTAG на ESP32 – это порт JTAG индустриального стандарта, в котором отсутствует (и не требуется) пин TRST. Все пины I/O JTAG питаются от вывода VDD_3P3_RTC (который обычно питается от шины 3.3 В), поэтому JTAG адаптер должен иметь возможность работать с выводами JTAG в этом диапазоне напряжений.

Что касается программного обеспечения, OpenOCD поддерживает достаточное количество адаптеров JTAG. См. список адаптеров (к сожалению, немного неполный), с которыми работает OpenOCD на http://openocd.org. На этой странице также перечислены SWD-совместимые адаптеры, обратите внимание, что ESP32 не поддерживает SWD. JTAG-адаптеры, которые жестко привязаны к конкретной линейке продуктов, например, ST-LINK для семейств STM32, работать не будут.

Минимальный набор сигналов для работы JTAG – TDI, TDO, TCK, TMS и GND. Некоторым отладчикам JTAG также требуется подключение к линии питания ESP32, которая может называться, например, Vtar. При желании сигнал SRST может быть подключен к CH_PD ESP32, хотя на данный момент поддержка OpenOCD для этой линии минимальна.

Установка OpenOCD 

Этот шаг охватывает установку двоичных файлов OpenOCD. Если вы желаете собрать OpenOCD из исходников, обратитесь к разделу Сборка OpenOCD из Исходников. Все OpenOCD файлы будут размещены в директории ~/esp/openocd-esp32. Вы можете выбрать любую другую директорию, но необходимо настроить соответствующие пути, используемые в примерах.

Выберите вашу операционную систему ниже и следуйте инструкциям по установке OpenOCD.

Windows Linux MacOS
Windows  Linux  MacOS

После завершения установки ознакомьтесь с двумя ключевыми каталогами в папке установки openocd-esp32:

  • Bin, содержащий OpenOCD исполнимый файл
  • share\openocd\scripts, содержащий файлы конфигурации, вызываемые вместе с OpenOCD в качестве параметров командной строки

Примечание 

Названия и структура директорий, приведенных выше, относятся к двоичному дистрибутиву OpenOCD. Они используются в этом руководстве в примерах вызовов OpenOCD. Директории для сборки OpenOCD из исходников разные. Для получения дополнительной информации см. "Сборка OpenOCD из исходников".

Конфигурирование целевой ESP32

После установки OpenOCD перейдите к настройке целевой ESP32 (т. е. платы ESP32 с интерфейсом JTAG). Сделать это можно в три шага:

  1. Настроить и подключить интерфейс JTAG
  2. Запустите OpenOCD
  3. Загрузить приложение для отладки

Конфигурирование и подключение интерфейса JTAG

Этот шаг зависит от используемой платы ESP32 и JTAG  - см. два случая, описанных ниже.

Запуск OpenOCD

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

Откройте терминал, перейдите в директорию, в которую инсталлирован OpenOCD и запустите его:

cd ~/esp/openocd-esp32
bin/openocd -s share/openocd/scripts -f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp-wroom-32.cfg

Примечание

Файлы, указанные выше после -f, относятся к ESP-WROVER-KIT с модулем ESP32-WROOM-32. Вам может потребоваться предоставить другие файлы в зависимости от используемого аппаратного обеспечения. Для получения дополнительной информации см. "Конфигурирование OpenOCD для конкретного целевого устройства".

Примечание

Если вы установили openocd в Windows с помощью установщика ESP-IDF Tools, можно запустить openocd -f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp-wroom-32.cfg без необходимости сначала изменять каталог и без аргумента -s share/openocd/scripts.

Теперь вы должны увидеть на выходе лог, подобный приведенному ниже (этот лог предназначен для ESP-WROVER-KIT):

user-name@computer-name:~/esp/openocd-esp32$ bin/openocd -s share/openocd/scripts -f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp-wroom-32.cfg
Open On-Chip Debugger 0.10.0-dev-ged7b1a9 (2017-07-10-07:16)
Licensed under GNU GPL v2
For bug reports, read             
        http://openocd.org/doc/doxygen/bugs.html
none separate
adapter speed: 20000 kHz
force hard breakpoints
Info : ftdi: if you experience problems at higher adapter clocks, try the command "ftdi_tdo_sample_edge falling"
Info : clock speed 20000 kHz
Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : esp32: Debug controller was reset (pwrstat=0x5F, after clear 0x0F).
Info : esp32: Core was reset (pwrstat=0x5F, after clear 0x0F).

  • Если есть ошибка, указывающая на проблемы с разрешениями, см. бит «Делегирование разрешений» в файле README OpenOCD в директории ~/esp/openocd-esp32.
  • В случае ошибки поиска конфигурационных файлов, например, его не удается найти Can'tfind interface/ftdi/esp32_devkitj_v1.cfg, проверьте путь после -s. Этот путь используется OpenOCD для поиска файлов, указанных после -f. Также проверьте, действительно ли файл находится по указанному пути.
  • Если вы видите ошибки JTAG (...все единицы/ ...все нули), пожалуйста, проверьте ваши подключения, нет ли других сигналов, подключенных к JTAG, кроме сигналов ESP32, и посмотрите, включено ли питание.

Загрузка приложения для отладки

Сборка и загрузка приложения в ESP32 осуществляется обычным путем, см. раздел "Сборка и Прошивка".

Другие опции для записи образа приложения во флэш через JTAG, используя OpenOCD  с такими командами:

cd ~/esp/openocd-esp32
bin/openocd -s share/openocd/scripts -f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp-wroom-32.cfg -c "program_esp32 filename.bin 0x10000 verify exit"

Примечание

Если вы установили openocd в Windows с помощью установщика ESP-IDF Tools, можно запустить openocd -f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp-wroom-32.cfg без необходимости сначала изменять каталог и без аргумента -s share/openocd/scripts.

Команда OpenOCD прошивки program_esp32 имеет следующий формат:

program_esp32 <image_file> <offset> [verify] [reset] [exit]

  • image_file – Путь к файлу образа.
  • offset – Смещение в банке памяти  флэш для записи образа.
  • verify – Опционально. Верификация содержимого флэш-памяти после записи.
  • reset – Опционально. Сброс целевого устройства после программирования.
  • exit – Опционально. Финальный выход из OpenOCD.

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

Запуск Отладчика 

Набор инструментов (Тулчеин) для ESP32 содержит GNU Отладчик, сокр. GDB – GNU Debugger. Он доступен с другими программами toolchain под именем файла xtensa-esp32-elf-gdb. GDB может быть вызван и работать напрямую из командной строки терминала. Другой вариант – вызвать его из IDE (например, Eclipse, Visual Studio Code и т. д.) и работать косвенно с помощью графического интерфейса пользователя (GUI) вместо ввода команд в терминале.

Оба варианта использования отладчика обсуждаются по ссылкам ниже:

Примеры Отладки 

Этот раздел предназначен для пользователей, не знакомых с GDB. Он представляет пример сеанса отладки из Eclipse с использованием простого приложения, доступного в разделе get-started/ blink, и охватывает следующие действия отладки:

  1. Навигация по коду, стек вызовов и потоки
  2. Установка и удаление точек останова
  3. Остановка целевого устройства вручную
  4. Пошаговое выполнение кода
  5. Проверка и настройка памяти
  6. Просмотр и установка программных переменных
  7. Установка условных точек останова

Аналогичные действия по отладке выполняются с помощью GDB из командной строки.

Прежде чем перейти к примерам, настройте целевую плату с ESP32 и загрузите ее с помощью get-started/blink.

Сборка OpenOCD из Исходников 

Пожалуйста, обратитесь к отдельным документам, перечисленным ниже, которые описывают процесс сборки:

Примечание 

Примеры вызова OpenOCD в этом документе предполагают использование готового бинарного дистрибутива, описанного в разделе "Установка OpenOCD". Чтобы использовать двоичные файлы, создаваемые локально из исходных кодов, измените путь к исполняемому файлу OpenOCD  в src/openocd, а путь к файлам конфигурации на -s tcl.

Пример локального вызова сборки OpenOCD из исходников:

src/openocd -s tcl -f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp-wroom-32.cfg

Рекомендации и особенности

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

Связанные документы 

Источник: https://docs.espressif.com

Автор: Переводчик: Шрага Александр, г. Москва

Производители: ESPRES

Разделы: Приемо-передатчики

Опубликовано: 05.11.2019

Товары

ESP-WROVER-KIT-VE % ESP-WROVER-KIT-VE (ESPRES)
9 шт.
нет в наличии
добавить к сравнению
  • Москва
  • Санкт-Петербург
  • Мурманск
  • Ульяновск
  • Новосибирск
  • Екатеринбург
  • Краснодар
  • Нижний Новгород
  • Воронеж
  • Уфа
  • Челябинск
  • Самара
  • Красноярск
  • Казань
  • Ростов-на-Дону
  • Саратов
  • Пермь
  • Томск
  • Иркутск
  • Омск
  • Тюмень

Актуальность предложений на товары в корзине истекла, данные были удалены 17.07.2025 в 00:00:00 (Мск.) Список позиций из корзины сохранен в Списке товаров
Актуальность предложений на товары в корзине истекла, данные были удалены 17.07.2025 в 00:00:00 (Мск.) Зарегистрируйтесь или авторизуйтесь на сайте, если регистрировались ранее, чтобы сохранять список товаров из корзины

Данный товар получен от клиентов, которые купили его для целей производства, но он оказался не востребован. Возможно отсутствие ГТД и страны происхождения.