Cuprins:

ESP32 - Soluție ieftină pentru depanare în Circruit: 5 pași
ESP32 - Soluție ieftină pentru depanare în Circruit: 5 pași

Video: ESP32 - Soluție ieftină pentru depanare în Circruit: 5 pași

Video: ESP32 - Soluție ieftină pentru depanare în Circruit: 5 pași
Video: Surse de alimentare & EMI debugging 2024, Iulie
Anonim
ESP32 - Soluție ieftină pentru depanare în Circruit
ESP32 - Soluție ieftină pentru depanare în Circruit

Bună ziua, în acest instructable este descris cum să configurați adaptor JTAG ieftin bazat pe cip FTDI 2232HL, cu cod vizual și addon arduino.

- Modul FTDI 2232HL cu conector USB începând de la 8 $ pe eBay și nu este necesar niciun software plătit. Aceasta este o soluție excelentă pentru pasionații care nu doresc să cheltuiască peste 50 USD pe adaptorul JTAG profesional.

- Acest adaptor ar putea fi folosit pentru depanarea altor platforme precum ESP8266, ARM, AVR și multe altele. Unele configurații depind de platforma țintă, această instrucțiune acoperă doar configurarea pentru ESP32.

- Dacă dețineți deja un adaptor JTAG, îl puteți folosi atunci când acesta este acceptat de openOCD, pur și simplu porniți openocd cu un fișier de configurare diferit în funcție de tipul adaptorului dvs. jtag.

- platform.io vă poate facilita configurarea, dar depanarea este acceptată numai în versiunea profesională cu plată.

- Funcționează cu majoritatea modulelor ESP32. (de exemplu wemos lolin 32 ieftin)

- și acest adaptor jtag ar trebui să funcționeze cu Linux, dar eu personal nu l-am testat.

Pasul 1: Condiții software

Arduino IDE versiunea 1.8 sau mai recentă. Versiunea magazinului Windows nu este acceptată. Trebuie să utilizați versiunea de instalare clasică care poate fi descărcată de pe pagina oficială Arduino

Cod de studio vizual Microsoft

Aceste suplimente pentru codul de studio vizual sunt obligatorii

  • Arduino
  • Depanare nativă

De asemenea, vă recomand să instalați acest addon care permite intelisense pentru C / C ++

C / C ++

În acest manual voi folosi 2 foldere de lucru:

D: / devel / ESP32 / tools / - aici am plasat toate instrumentele

C: / Users / xxxxx / Documents / Arduino / YourProject / - acesta este dosarul cu schiță

puteți plasa fișierele oriunde altundeva, dacă doriți, vă rugăm să nu uitați să actualizați toate referințele cu calea dvs. reală.

Pasul 2: Instalarea și configurarea driverului

Instalarea și configurarea driverului
Instalarea și configurarea driverului
Instalarea și configurarea driverului
Instalarea și configurarea driverului
Instalarea și configurarea driverului
Instalarea și configurarea driverului

Chiar dacă Windows detectează automat FT2232 în mod implicit, driverele implicite Windows nu sunt suficiente pentru toate funcțiile avansate și este necesar să descărcați și să instalați driverul de pe site-ul FTDI

Când este instalat driverul corect, ar trebui să vedeți modulul FT2232 în managerul de dispozitive nu numai ca 2 porturi seriale, ci și ca „convertor serial USB A” și „convertor serial USB B”

Al doilea pas este schimbarea driverului pentru un canal al convertorului nostru. Descărcați instrumentul zadig de pe https://zadig.akeo.ie/. Dacă înțeleg corect acest instrument leagă driverul winUSB la dispozitivul FTDI care permite comunicarea la nivel scăzut între dispozitivul openOCD și USB.

În instrumentul zadig, în meniul „Opțiuni” bifați „Afișați toate dispozitivele”, atunci ar trebui să vedeți adaptorul în lista dispozitivelor disponibile. Selectați „Dual RS232-HS (Interfață 0)”, apoi selectați driverul de înlocuire „WinUSB v6.1.xxxx” și apoi faceți clic pe butonul de înlocuire a driverului.

Când vă conectați adaptorul la un port USB diferit al computerului, este necesar să schimbați din nou setările driverului prin instrumentul zadig, în caz contrar openOCD nu va găsi adaptorul.

Pasul 3: OpenOCD, Toolchain și Gdb

OpenOCD, Toolchain și Gdb
OpenOCD, Toolchain și Gdb

1. Open OCD este instrumentul pentru depanarea circruit, pe de o parte vorbește cu cip pe cealaltă parte, oferă server gdb unde se poate conecta depanatorul (clientul). Descărcați openOCD pentru ESP32 de pe https://github.com/espressif/openocd-esp32/releases și despachetați-l în folderul D: / devel / ESP32 / tools

2. editați fișierele de configurare openOCD:

esp-wroom-32.cfg

Calea completă către acest fișier este:

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

În acest fișier puteți seta viteza de comunicare prin schimbarea parametrului „adapter_khz”. De exemplu „adapter_khz 8000” înseamnă 8Mhz.

Valoarea implicită este de 20 MHz și ar putea fi prea mare dacă utilizați fire jumper mai lungi sau panou. Vă recomand să începeți de la 1Mhz și dacă totul este OK, mergeți la viteză mai mare, pentru mine 8Mhz funcționează fiabil.

minimodule.cfg

Calea completă către acest fișier este: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

Dacă înțeleg corect, minimodulul autentic este placa de frânare cu un preț prea mare cu FT 2232 fabricat de FTDI și singura diferență între minimodulul autentic și modulul ieftin sau cipul gol disponibil pe piață este descrierea USB implicită. open OCD caută adaptor jtag pe baza descrierii dispozitivului, de asemenea, inițierea aspectului trebuie ajustată.

Modulul ieftin are descrierea "Dual RS232-HS". Dacă nu sunteți sigur cu privire la descrierea dispozitivului dvs., puteți să o verificați în managerul dispozitivului -> proprietăți dispozitiv -> detalii filă -> valoarea proprietății "Descriere dispozitiv raportată de autobuz"

Conținutul minimodule.cfg ar trebui să arate ca un exemplu de mai jos, liniile începând cu # pot fi șterse.

interfață 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 0x000b ftdi_layout_s

esp32.cfg

Calea completă către acest fișier este:

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

Adăugați următoarele 2 rânduri la sfârșitul lui esp32.cfg. Fără această modificare, adăugarea punctelor de frână nu va funcționa.

#Force hwpoints. Odată ce avem o hartă de memorie, putem permite, de asemenea, software-ului bps.gdb_breakpoint_override hard

3. Descărcați și instalați xtensa-esp32-elf toolchain - acest toolchain conține debugger în linie de comandă (client gdb), care este vital pentru a avea un debug funcțional din orice IDE grafic. Bare toolchain poate fi descărcat de pe site-ul espressif, secțiunea „Configurare alternativă”

Pasul 4: Cablare și primul test

Cablare și primul test
Cablare și primul test
Cablare și primul test
Cablare și primul test

Conectați modulul FT2322 cu ESP. Vă recomand să utilizați fire cât mai scurte posibil. Dacă sunteți nou în JTAG, nu uitați că TDI-ul adaptorului va merge la TDI-ul cipului, de asemenea TDO-ul adaptorului va merge la TDO-ul cipului. Liniile de date JTAG NU SUNT ÎNCROCIATE ca Rx / Tx pe uart!

Pentru testul următor, vă recomand să încărcați o schiță de exemplu intermitentă sau o altă schiță care poate indica când CPU rulează sau nu, intermitent cu LED-uri sau semnal sonor sau scriere pe consola serială.

Porniți openOCD urmând comanda

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

Acest lucru va începe openOCD și dacă totul este în regulă, ar trebui să vedeți în linia de comandă ieșirea conține următoarele linii:

Informații: viteza ceasului 8000 kHz Informații: atingere JTAG: robinet esp32.cpu0 / dispozitiv găsit: 0x120034e5 (mfg: 0x272 (Tensilica), parte: 0x2003, ver: 0x1) Informații: robinet JTAG: robinet esp32.cpu1 găsit: mfg: 0x272 (Tensilica), parte: 0x2003, ver: 0x1)

De asemenea, procesul openocd va asculta pe portul TCP 3333

Deschideți un terminal nou și porniți linia de comandă client gdb urmând comanda

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

Așteptați o secundă și când terminalul gdb va fi gata scrieți următoarele comenzi una câte una

țintă la distanță: 3333mon reset stop continuare

prima comandă deschide conexiunea la serverul de depanare openocd, a doua va opri executarea programului pe ESP și LED-ul ar trebui să înceteze să clipească, să continue restaurarea executării programului și LED-ul ar trebui să înceapă să clipească din nou.

Pasul 5: Adăugați configurație de depanare la Visual Studio Code

Adăugați configurație de depanare la Visual Studio Code
Adăugați configurație de depanare la Visual Studio Code

Presupun că în acel moment ați configurat corect codul de studio vizual și addon-ul arduino și puteți verifica și încărca schița pe tablă. Dacă nu, verificați câteva instrucțiuni despre configurarea codului vizual de studio și arduino, de exemplu pe această pagină

Pentru ca depanarea să funcționeze este necesară pentru a specifica folderul de ieșire de construire. Sub folderul de schiță există folderul (ascuns).vscode, unde este fișierul arduino.json. adăugați la acest fișier următoarea linie:

"output": "BuildOutput /"

rulați verificați sau încărcați și verificați din nou folderul de schițe, ar trebui să existe un nou folder BuildOutput și în interiorul acestuia să fișier cu extensia.elf. fișierul elf este vital pentru depanare.

Setările de depanare se află în fișierul launch.json. Creați acest fișier cu următorul conținut sau puteți copia acest fișier din exemplul de proiect atașat. Nu uitați să ajustați linia 26 și să definiți calea corectă către fișierul.elf al proiectului dvs.

{// Utilizați IntelliSense pentru a afla despre posibile atribute. // Plasați cursorul pentru a vizualiza descrierile atributelor existente. // Pentru mai multe informații, vizitați: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [{"name": "Arduino-GDB-openOCD "," type ":" cppdbg "," request ":" lansare "," 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 stop "}, {// variantă dinamică" text ":" fișier c: / Users / xxxxx / Documents / Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf "// variantă statică //" text ":" fișier c: /Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf "}, {"text": "flushregs"}, {"text": "thb app_main"}, {"text": "c", "ignoreFailures": true}], "stopAtEntry": true, "serverStarted": "Info \: [w / d \.] *: / hardware "," launchCompleteCommand ":" exec-continue "," filterStderr ": adevărat," args ": }]}

Cum să începeți depanarea:

  1. Completați și încărcați schița la bord
  2. Porniți openOCD cu parametri
  3. Setați punctele de frână în cod unde doriți
  4. După setarea tuturor punctelor de frână, asigurați-vă că ați deschis fișierul principal.ino al proiectului. (sau calea codului dur către fișierul.elf din launch.json)
  5. Deschideți panoul de depanare în cod vs (Ctrl + Shift + D)
  6. Selectați debuggerul „Arduino-GDB-openOCD”, ar trebui să fie disponibil numai.
  7. Apăsați F5 pentru a începe depanarea

Recomandat: