Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Здравствуйте! В этой инструкции описано, как настроить дешевый адаптер 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
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 и надстройку 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 ": }]}
Как начать отладку:
- Выполните и загрузите свой скетч на доску
- Запустите openOCD с параметрами
- Установите точки торможения в коде, где хотите
- После установки всех точек торможения убедитесь, что вы открыли основной файл.ino вашего проекта. (или путь жесткого кода к файлу.elf в launch.json)
- Открыть панель отладки в коде vs (Ctrl + Shift + D)
- Выберите отладчик «Arduino-GDB-openOCD», он должен быть только доступен.
- Нажмите F5, чтобы начать отладку