ESP32 Урок 10. Возможность отладки кода



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

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

Выглядит данная плата следующим образом

 

 

Снизу мы видим назначение контактов. Подключается данная плата для отладки к плате с контроллером ESP32 следующим образом:

 

 

 FT232H  ESP32
 AD0  GPIO13
 AD1  GPIO12
 AD2  GPIO15
 AD3  GPIO14
 GND  GND

 

Следуя данной таблице, подключим данную плату к нашей DevKit

 

 

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

Для начала подключим к ПК только плату с чипом FTDI

 

 

В диспетчере устройств мы увидим, что у нас появился новый порт

 

 

Чтобы этот порт виделся в отладчиком, нужно установить на него специальный драйвер. Для этого используем специальную программу Usb Driver Tool, которую легко найти. Тем не менее архив с данной программой я приложу внизу статьи. Устанавливать эту программу не нужно, достаточно распаковать архив, открыть каталог с программой и запустить файл UsbDriverTool.exe.

Запустим данный файл и увидим в числе устройств наш FTDI

 

 

 

Жмём на нём правой кнопкой мыши и в контекстном меню выбираем установку драйвера WinUSB для данного порта

 

Как только драйвер установится, строка приобретёт следующий вид

 

 

Также в диспетчере мы увидим, что порт наш исчез из списка устройств

 

 

Этого бояться не нужно. Так должно и быть.

 

 

Теперь подключим отладочную плату с контроллером ESP32 на борту

 

 

Данный виртуальный порт уже будет виден в диспетчере устройств

 

 

Через этот порт будет происходить прошивка, а через порт WinUSB — отладка.

Теперь запустим Espressif IDE, там откроем, например, проект из 3 урока с именем BLINK01, соберём его и зальём собранную прошивку в наш контроллер.

Теперь нам нужно создать и настроить отдельный Launcher для отладки.

Откроем список таких конфигураций вот здесь

 

 

Там встанем вот на этот пункт

 

 

Создадим новую конфигурацию, нажав эту кнопку

 

 

Назовём нашу конфигурацию так, чтобы она была легче узнаваема при выборе

 

 

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

Переходим на вкладку Debugger

 

 

Здесь также всё должно быть так, как на картинке — состав строк, установленные и неустановленные галки.

Обращаем внимание, что в Config Options подключен интерфейс FTDI.

 

 

Следующая вкладка — Startup.

Здесь настройки вот такие

 

 

Во вкладке Common можно добавить запись в лог-файл

 

 

 

Сохраним конфигурацию и попробуем отладить наш проект, для чего выберем нашу конфигурацию и выберем вариант Debug

 

 

Жмём вот эту кнопку и ждём процесса отладки. Не сразу может пойти всё хорошо. Но не стоит думать, что у нас неправильные настройки. Нужно попробовать отключить поочерёдно, а затем подключить платы, потом заново попробовать войти в отладку. Если не помогло, закрыть проект, закрыть среду, запустить среду, открыть проект и попробовать заново.

Если всё-таки мы попали в отладку, то жмём вот эту кнопку для запуска кода на выполнение

 

 

Ну а дальше как обычно — точки останова, переходы, просмотр значений переменных, дизассемблирование и т.д. С этим процессом мы знакомы, так как пользовались отладчиком в Eclipse, когда занимались отладкой кода в программах под Windows.

Давайте попробуем в процессе выполнения кода установить вот здесь точку останова

 

 

Если всё хорошо, то выполнение кода остановится на данной точке

 

 

Теперь можем посмотреть значения переменных, например, переменной s_led_state.

Для этого где-нибудь в коде выделяем её имя и в контекстном меню выбираем следующий пункт

 

 

Имя переменной, её тип и значение появятся в этом окне

 

 

У вас может быть единичка. Это зависит от того, в какой момент вы остановите код. Нажмём ещё раз кнопку Resume, код отработает следующий цикл и значение переменной должно будет измениться

 

 

Данная переменная у нас глобальная. Чтобы видеть значение локальных переменных, надо полностью отключить оптимизацию. Для этого остановим отладку, перейдём в окно проекта, зайдём в конфигуратор (sdkconfig) и в пункте Compiler Options выберем следующее значение в поле Optimization Level

 

 

Ясное дело, что после таких изменений нужно будет проект пересобрать и перепрошить, а уж потом продолжать процесс отладки. Внесём данные изменения и объявим в функции app_main файла main.c следующую локальную переменную

 

 

В бесконечном цикле проинкрементируем её

 

 

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

 

 

Как видим, значение данной переменной мы вполне можем наблюдать и оно уже равно единице, так как через процесс инкрементирования мы прошли. Понажимаем кнопку Resume несколько раз, каждый раз дожидаясь остановки кода и увидим, что значение нашей переменной будет увеличиваться

 

 

Также мы можем посмотреть сгенерированный ассемблерный код

 

 

Вот здесь мы отчётливо можем наблюдать процесс инкрементирования

 

 

Итак, на данном уроке мы научились пользоваться отладкой, подключив для этого недорогую плату к контроллеру ESP32 по интерфейсу JTAG, что позволит нам в дальнейшем ещё более глубоко мониторить работу нашего кода.

Всем спасибо за внимание!

 

Данная статья в Дзен.

 

 

Предыдущий урок Программирование МК ESP32 Следующий урок

 

Недорогие отладочные платы ESP32 можно купить здесь Недорогие отладочные платы ESP32

Логический анализатор 16 каналов можно приобрести здесь

Многофункциональный переходник JTAG UART FIFO SPI I2C можно приобрести здесь CJMCU FT232H USB к JTAG UART FIFO SPI I2C

 

Usb Driver Tool

 

Смотреть ВИДЕОУРОК в YouTube (нажмите на картинку)

ESP32 Возможность отладки кода

Смотреть ВИДЕОУРОК в Дзен (нажмите на картинку)

ESP32 Возможность отладки кода

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*