Найти тему
narod stream

ESP32 Урок 12. Отладка. Смотрим регистры контроллера

В уроке 10, в котором мы научились подключить отладчик к плате с контроллером ESP32, нам не удалось увидеть регистры контроллера (его периферии).

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

В Espressif IDE снова откроем проект с именем BLINK01 из урока 3 (кстати, я, наконец-то прикрепил к статье исходный код проекта) и зайдём в настройки лаунчера для отладки. Во-первых, сначала исправим ошибку во вкладке Common в строке подключения лог-файла. Закрывающая фигурная скобка была не на месте. Поставим её на место

Файл svd с описанием регистров несложно найти в интернете. Мне попались таких два, один поменьше, другой побольше. Пока сильной разницы я в их содержании не ощутил, те регистры, которые мне нужно было мониторить, присутствуют в них обоих. На всякий случай я внизу страницы выложу архив с обоими.

Поместим файл svd (я поместил оба) в каталог с проектом

-2

Перейдём в конфигурации лаунчера на вкладку SVD Path и подключим один из файлов

-3

Именно этот файл нормально подключается. В нем нет многих регистров, основные есть. Я пробовал его пересобрать с помощью специальной утилиты, только получился он ещё меньше, видимо под новый комплект esp idf сборщик не очень подходит. К сожалению, Espressif нам данного файла не предоставляет. Я добавил кое-какие регистры ещё, в том числе некоторые регистры из периферии IO_MUX.

Сохраним конфигурацию.

Подключим наши платы к ПК, запустим отладку и остановим код вот здесь

-4

Перейдём на вкладку Peripheral (или откроем её, у кого она ещё не открыта) и увидим там наши регистры

-5

Установим галку в группу GPIO, можно сразу в несколько. Выбираем именно нужную для мониторинга периферию. Нас пока интересует именно GPIO

-6

И теперь во вкладке Memory мы увидим все регистры интересующей нас группы с их значениями

-7

Отлично! Запустим код, дождёмся, когда он остановится на том же месте в бесконечном цикле, и увидим изменения в регистре

-8

Возможно, в зависимости от состояния переменной s_led_state, изменения произойдут со второго раза.

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

В данный момент мы смотрели состояние вот этого регистра контроллера

-9

Биты данного регистра показывают состояние ножек портов ввода-вывода, настроенных на выход.

Также мы видим изменения в данном поле другого регистра

-10

Подключим также периферию IO_MUX и посмотрим состояние битов, предназначенных для настройки мультиплексора для регистра GPIO2

-11

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

-12

Ну, и раз у нас так хорошо всё и быстро получилось, давайте попробуем поработать с отладкой другого проекта — проекта урока 4, в котором мы работали с кнопкой. Подключим данный проект и создадим и настроим подобный прошлому проекту лаунчер для отладки.

Подключим кнопку, прошьём проект и запустим отладку.

Точку останова поставим здесь

-13

Запустим проект на выполнение и, как только код остановится в точке, посмотрим состояние регистров

-14
-15

Мы видим, что у GPIO4, настроенного на вход, бит FUM_IE установлен.

Нажмём кнопку и удерживая её запустим код на выполнение.

Мы получим изменение здесь

-16

и здесь

-17

Вот таким образом мы теперь можем видеть состояние регистров различной периферии контроллера ESP32.

Итак, на данном уроке мы продолжили знакомство с возможностью отладки кода контроллера ESP32 и также нам удалось подключить возможность мониторинга регистров данного контроллера.

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

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

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

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

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

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

Архив с файлами svd

Видео в RuTube

Программирование МК ESP32. Урок 12. Отладка. Смотрим регистры контроллера

Видео в Дзен

Видео в Youtube