Съдържание:

ESP32 - Евтино решение за отстраняване на грешки в Circruit: 5 стъпки
ESP32 - Евтино решение за отстраняване на грешки в Circruit: 5 стъпки

Видео: ESP32 - Евтино решение за отстраняване на грешки в Circruit: 5 стъпки

Видео: ESP32 - Евтино решение за отстраняване на грешки в Circruit: 5 стъпки
Видео: PWM DC Motor control with Arduino and L298N Module with library - Robojax 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

Тези добавки за визуален студиен код са задължителни

  • 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 (Interface 0)“, след това изберете заместващ драйвер „WinUSB v6.1.xxxx“и накрая щракнете върху бутона смяна на драйвера.

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

Стъпка 3: OpenOCD, Toolchain и Gdb

OpenOCD, Toolchain и Gdb
OpenOCD, Toolchain и Gdb

1. Open OCD е инструмент за отстраняване на грешки в Circruit, от една страна той говори с чип, от друга страна осигурява 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". Например "adapter_khz 8000" означава 8Mhz.

По подразбиране е 20MHz и може да е твърде високо, ако използвате по -дълги джъмперни проводници или макет. Препоръчвам да започнете от 1Mhz и ако всичко е наред, преминете към по -висока скорост, за мен 8Mhz работи надеждно.

minimodule.cfg

Пълният път към този файл е: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

Ако правилно разбирам, оригиналният минимадул е надценена платка за излизане с FT 2232, произведена от FTDI и единствената разлика между оригиналния минимадул и евтиния модул или чип, наличен на пазара, е USB описание по подразбиране. отворен OCD търси jtag адаптер въз основа на описанието на устройството, също трябва да се коригира оформлението init.

Евтин модул има описание "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 0x000x ftdi

esp32.cfg

Пълният път към този файл е:

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

Добавете следните 2 реда в края на esp32.cfg. Без тази промяна добавянето на спирачни точки няма да работи.

#Принудителни точки на прекъсване. След като имаме карта с памет, можем също да разрешим на софтуера bps.gdb_breakpoint_override hard

3. Изтеглете и инсталирайте xtensa-esp32-elf toolchain-тази инструментална верига съдържа инструмента за отстраняване на грешки в командния ред (gdb клиент), който е жизненоважен, за да има работеща отстраняване на грешки от всяка графична IDE. Bare toolchain може да бъде изтеглен от сайта на espressif, раздел „Алтернативна настройка“https://docs.espressif.com/projects/esp-idf/en/latest/get-started/windows-setup-scratch.html

Стъпка 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 дъска /esp-wroom-32.cfg

Това ще стартира openOCD и ако всичко е наред, трябва да видите в изхода на командния ред съдържа следните редове:

Информация: тактова честота 8000 kHzInfo: JTAG кран: esp32.cpu0 намерен кран/устройство: 0x120034e5 (mfg: 0x272 (Tensilica), част: 0x2003, ver: 0x1) Информация: JTAG кран: esp32.cpu1 кран/намерено устройство: 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 терминалът ще бъде готов, напишете следните команди една по една

целево дистанционно: 3333mon reset спиране продължи

първата команда отваря връзка към сървъра за отстраняване на грешки на openocd, втората ще спре изпълнението на програмата на ESP и светодиодът трябва да спре да мига, да продължи възстановяването на изпълнението на програмата и светодиодът трябва да започне да мига отново.

Стъпка 5: Добавете конфигурация за отстраняване на грешки към кода на Visual Studio

Добавете конфигурация за отстраняване на грешки към кода на Visual Studio
Добавете конфигурация за отстраняване на грешки към кода на Visual Studio

Предполагам, че в този момент вече сте конфигурирали правилно визуалния студиен код и добавката arduino и можете да проверите и качите скицата си на дъската. Ако не, моля, проверете някои инструкции как да конфигурирате кода на визуалното студио и arduino, например на тази страница

За да накарате отстраняването на грешки да е необходимо, за да посочите изходната папка за изграждане. Под папката с скици има (скрита) папка.vscode, където е файлът arduino.json. добавете към този файл следния ред:

"output": "BuildOutput/"

стартирайте проверка или качване и отново проверете папката си за скици, трябва да има нова папка BuildOutput и вътре в нея файл с разширение.elf. elf файлът е жизненоважен за отстраняване на грешки.

Настройките за отстраняване на грешки са във файла launch.json. Създайте този файл със следното съдържание или можете да копирате този файл от приложен примерен проект. Не забравяйте да коригирате ред 26 и да определите правилния път към вашия.elf файл на вашия проект.

{// Използвайте IntelliSense, за да научите за възможните атрибути. // Задръжте курсора на мишката, за да видите описания на съществуващи атрибути. // За повече информация посетете: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [{"name": "Arduino-GDB-openOCD "," type ":" cppdbg "," request ":" launch "," program ":" $ {file} "," 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 \.]*: / хардуер "," launchCompleteCommand ":" exec-continue "," filterStderr ": true," args ": }]}

Как да започнете отстраняване на грешки:

  1. Съобразявайте се и качете скицата си на борда
  2. Стартирайте openOCD с параметри
  3. Задайте спирачни точки в кода, където искате
  4. След като зададете всички спирачни точки, уверете се, че сте отворили основния.ino файл на вашия проект. (или път с твърд код към.elf файл в launch.json)
  5. Отваряне на панела за отстраняване на грешки в кода срещу (Ctrl + Shift + D)
  6. Изберете инструмента за отстраняване на грешки "Arduino-GDB-openOCD", трябва да е наличен само.
  7. Натиснете F5, за да започнете отстраняване на грешки

Препоръчано: