narod stream
500 subscribers

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

<100 full reads

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оригинал статьи находится здесь.

<<Предыдущий урок | Следующий урок>>

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

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

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

Программы:

Usb Driver Tool

Видео в Дзен

Видео в Youtube