Оглавление:

ESP32 - дешевое решение для отладки в Circruit: 5 шагов
ESP32 - дешевое решение для отладки в Circruit: 5 шагов

Видео: ESP32 - дешевое решение для отладки в Circruit: 5 шагов

Видео: ESP32 - дешевое решение для отладки в Circruit: 5 шагов
Видео: Программирование МК ESP32. Урок 10. Возможность отладки кода 2024, Июль
Anonim
ESP32 - дешевое решение для отладки в Circruit
ESP32 - дешевое решение для отладки в Circruit

Здравствуйте! В этой инструкции описано, как настроить дешевый адаптер JTAG на базе микросхемы FTDI 2232HL, с визуальным кодом и дополнением для arduino.

- Модуль FTDI 2232HL с USB-разъемом от 8 $ на ebay и никакого платного программного обеспечения не требуется. Это отличное решение для любителей, которые не хотят тратить более 50 долларов на профессиональный JTAG-адаптер.

- Этот адаптер можно использовать для отладки других платформ, таких как ESP8266, ARM, AVR и многих других. Некоторая конфигурация зависит от целевой платформы, эта инструкция охватывает только настройку для ESP32.

- Если у вас уже есть адаптер JTAG, вы можете использовать его, если он поддерживается openOCD, просто запустите openocd с другим файлом конфигурации в зависимости от типа вашего адаптера jtag.

- platform.io может облегчить вам настройку, но отладка поддерживается только в платной профессиональной версии.

- Работает с большинством модулей ESP32. (например дешевый wemos lolin 32)

- этот адаптер jtag должен работать и с linux, но я лично его не тестировал.

Шаг 1. Требования к программному обеспечению

Arduino IDE версии 1.8 или новее. Версия магазина Windows не поддерживается. Вам необходимо использовать классическую версию установщика, которую можно скачать с официальной страницы Arduino

Код Microsoft Visual Studio

Эти дополнения для кода Visual Studio являются обязательными

  • Arduino
  • Собственная отладка

Я также рекомендую установить это дополнение, которое включает Intelisense для C / C ++.

C / C ++

В этом руководстве я буду использовать 2 рабочие папки:

D: / devel / ESP32 / tools / - здесь я разместил все инструменты

C: / Users / xxxxx / Documents / Arduino / YourProject / - это папка со скетчем

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

Шаг 2: Установка и настройка драйвера

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

Даже если Windows автоматически обнаруживает FT2232 по умолчанию, драйверов Windows по умолчанию для всех дополнительных функций недостаточно, и необходимо загрузить и установить драйвер с сайта FTDI

Если установлен правильный драйвер, вы должны увидеть свой модуль FT2232 в диспетчере устройств не только как 2 последовательных порта, но и как «последовательный преобразователь USB A» и «последовательный преобразователь USB B».

Второй шаг - сменить драйвер для одного канала нашего конвертера. Загрузите инструмент zadig с https://zadig.akeo.ie/. Если я правильно понимаю, этот инструмент связывает драйвер winUSB с устройством FTDI, которое обеспечивает связь на низком уровне между openOCD и устройством USB.

В инструменте zadig в меню «Параметры» установите флажок «Показать все устройства», после чего вы должны увидеть свой адаптер в списке доступных устройств. Выберите «Dual RS232-HS (интерфейс 0)», затем выберите заменяющий драйвер «WinUSB v6.1.xxxx» и, наконец, нажмите кнопку «Заменить драйвер».

Когда вы подключаете адаптер к другому USB-порту вашего компьютера, необходимо снова изменить настройки драйвера с помощью инструмента zadig, иначе openOCD не найдет ваш адаптер.

Шаг 3: OpenOCD, Toolchain и Gdb

OpenOCD, Toolchain и Gdb
OpenOCD, Toolchain и Gdb

1. Open OCD - это инструмент для круговой отладки, с одной стороны, он общается с чипом, с другой стороны, он предоставляет сервер GDB, к которому может подключиться отладчик (клиент). Загрузите openOCD для ESP32 с https://github.com/espressif/openocd-esp32/releases и распакуйте его в папку D: / devel / ESP32 / tools

2. отредактируйте файлы конфигурации openOCD:

esp-wroom-32.cfg

Полный путь к этому файлу:

D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / board / esp-wroom-32.cfg

В этом файле вы можете установить скорость связи, изменив параметр «adapter_khz». Например «адаптер_хз 8000» означает 8МГц.

По умолчанию установлено значение 20 МГц, и оно может быть слишком высоким, если вы используете более длинные перемычки или макетную плату. Я рекомендую начать с 1 МГц, и если все в порядке, перейти на более высокую скорость, для меня 8 МГц работает надежно.

Minimodule.cfg

Полный путь к этому файлу: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

Если я правильно понимаю, настоящий минимодуль - это переоцененная тормозная плата с FT 2232, произведенная FTDI, и единственная разница между подлинным минимодулем и дешевым модулем или голым чипом, доступным на рынке, - это описание USB по умолчанию. open OCD ищет адаптер jtag на основе описания устройства, также необходимо настроить инициализацию макета.

Дешевый модуль имеет описание «Dual RS232-HS». Если вы не уверены в описании вашего устройства, вы можете проверить его в диспетчере устройств -> свойства устройства -> детали вкладки -> значение свойства «Описание устройства, сообщенное шиной».

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

интерфейс ftdi # ftdi_device_desc "FT2232H MiniModule" ftdi_device_desc "Dual RS232-HS" ftdi_vid_pid 0x0403 0x6010 #ftdi_layout_init 0x0018 0x05fb ftdi_layout_init 0x0008 0x000layout -init 0x0008 0x000layout ftdi_layout_init 0x0008 0x000layout ftdi_layout_init 0x0008 0x000layout

esp32.cfg

Полный путь к этому файлу:

D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / target / esp32.cfg

Добавьте следующие две строки в конец esp32.cfg. Без этой модификации добавить тормозные точки не получится.

# Принудительно устанавливать точки останова hw. Как только у нас есть карта памяти, мы также можем разрешить программное обеспечение bps.gdb_breakpoint_override жестко

3. Загрузите и установите набор инструментов xtensa-esp32-elf - этот набор инструментов содержит отладчик командной строки (клиент gdb), который жизненно важен для работы отладки из любой графической IDE. Базовый набор инструментов можно скачать с сайта espressif, раздел «Альтернативная установка»

Шаг 4: Подключение и первый тест

Электропроводка и первый тест
Электропроводка и первый тест
Электропроводка и первый тест
Электропроводка и первый тест

Подключите модуль FT2322 к ESP. Я рекомендую использовать как можно более короткие провода. Если вы новичок в JTAG, не забывайте, что TDI адаптера перейдет к TDI чипа, также TDO адаптера перейдет к TDO чипа. Строки данных JTAG НЕ ПЕРЕСЕЧАЮТСЯ, как Rx / Tx на uart!

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

Запустите openOCD с помощью следующей команды

D: / devel / ESP32 / tools / openocd-esp32 / bin / openocd.exe-s D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts -f interface / ftdi / minimodule.cfg -f board /esp-wroom-32.cfg

Это запустит openOCD, и если все в порядке, вы должны увидеть, что вывод командной строки содержит следующие строки:

Информация: тактовая частота 8000 кГц Информация: 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), часть: 0x2003, ver: 0x1)

Также процесс openocd будет прослушивать TCP-порт 3333

Откройте новый терминал и запустите клиент gdb из командной строки, выполнив команду

D: / devel / ESP32 / tools / xtensa-esp32-elf / bin / xtensa-esp32-elf-gdb.exe

Подождите секунду, и когда терминал gdb будет готов, напишите следующие команды одну за другой

целевой пульт: 3333 месяца сбросить остановку продолжить

первая команда открывает соединение с сервером отладки openocd, вторая останавливает выполнение программы на ESP, и светодиод должен перестать мигать, продолжить выполнение программы восстановления, а светодиод s должен снова начать мигать.

Шаг 5. Добавьте конфигурацию отладки в код Visual Studio

Добавить конфигурацию отладки в код Visual Studio
Добавить конфигурацию отладки в код Visual Studio

Я предполагаю, что на этом этапе вы уже правильно настроили код Visual Studio и надстройку arduino, и вы можете проверить и загрузить свой эскиз на плату. Если нет, ознакомьтесь с инструкциями по настройке кода Visual Studio и Arduino, например, на этой странице

Чтобы отладка заработала, необходимо указать папку вывода сборки. В папке с вашим эскизом есть (скрытая) папка.vscode, где находится файл arduino.json. добавьте в этот файл следующую строку:

"output": "BuildOutput /"

запустите verify или upload и снова проверьте папку с эскизом, там должна быть новая папка BuildOutput и внутри нее файл с расширением.elf. elf-файл жизненно важен для отладки.

Настройки отладчика находятся в файле launch.json. Создайте этот файл со следующим содержимым, или вы можете скопировать этот файл из прикрепленного примера проекта. Не забудьте настроить строку 26 и указать правильный путь к файлу.elf вашего проекта.

{// Используйте IntelliSense, чтобы узнать о возможных атрибутах. // Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов. // Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [{"name": "Arduino-GDB-openOCD "," тип ":" cppdbg "," запрос ":" запуск "," программа ":" $ {файл} "," cwd ":" $ {workspaceRoot} / BuildOutput / "," MIMode ":" gdb ", "targetArchitecture": "arm", "miDebuggerPath": "D: /devel/ESP32/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-gdb.exe", "debugServerArgs": "", " customLaunchSetupCommands ": [{" text ":" target remote: 3333 "}, {" text ":" mon reset halt "}, {// динамический вариант" text ":" file c: / Users / xxxxx / Documents / Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf "// статический вариант //" текст ":" файл c: /Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf "}, {"text": "flushregs"}, {"text": "thb app_main"}, {"text": "c", "ignoreFailures": true}], "stopAtEntry": true, "serverStarted": "Информация \: [w / d \.] *: / hardware "," launchCompleteCommand ":" exec-continue "," filterStderr ": true," args ": }]}

Как начать отладку:

  1. Выполните и загрузите свой скетч на доску
  2. Запустите openOCD с параметрами
  3. Установите точки торможения в коде, где хотите
  4. После установки всех точек торможения убедитесь, что вы открыли основной файл.ino вашего проекта. (или путь жесткого кода к файлу.elf в launch.json)
  5. Открыть панель отладки в коде vs (Ctrl + Shift + D)
  6. Выберите отладчик «Arduino-GDB-openOCD», он должен быть только доступен.
  7. Нажмите F5, чтобы начать отладку

Рекомендуемые: