Sadržaj:

ESP32 - Jeftino rješenje za otklanjanje grešaka u Circruit: 5 koraka
ESP32 - Jeftino rješenje za otklanjanje grešaka u Circruit: 5 koraka

Video: ESP32 - Jeftino rješenje za otklanjanje grešaka u Circruit: 5 koraka

Video: ESP32 - Jeftino rješenje za otklanjanje grešaka u Circruit: 5 koraka
Video: PWM DC Motor control with Arduino and L298N Module with library - Robojax 2024, Juli
Anonim
ESP32 - Jeftino rješenje za in Circruit Debug
ESP32 - Jeftino rješenje za in Circruit Debug

Poštovani, U ovom uputstvu je opisano kako postaviti jeftin JTAG adapter zasnovan na FTDI 2232HL čipu, sa vizuelnim kodom i arduino dodatkom.

- FTDI 2232HL modul sa USB konektorom već od 8 USD na ebayu i nije potreban softver koji se plaća. Ovo je odlično rješenje za hobiste koji ne žele potrošiti 50 USD+ na profesionalni JTAG adapter.

- Ovaj adapter se može koristiti za otklanjanje grešaka na drugim platformama poput ESP8266, ARM, AVR i mnogih drugih. Neka konfiguracija ovisi o ciljnoj platformi, ovo uputstvo pokriva samo postavke za ESP32.

- Ako već posjedujete neki JTAG adapter, možete ga koristiti kada ga podržava openOCD, samo pokrenite openocd s drugom konfiguracijskom datotekom ovisno o vrsti vašeg jtag adaptera.

- platform.io vam može olakšati postavljanje, ali ispravljanje grešaka podržano je samo u plaćenoj profesionalnoj verziji.

- Radi s većinom ESP32 modula. (na primjer jeftini wemos lolin 32)

- ovaj jtag adapter bi trebao raditi i sa linuxom, ali ga osobno nisam testirao.

Korak 1: Softverske odredbe

Arduino IDE verzija 1.8 ili novija. Verzija Windows trgovine nije podržana. Morate koristiti klasičnu instalacijsku verziju koju možete preuzeti sa službene Arduino stranice

Kôd Microsoft Visual Studio

Ovi dodaci za vizuelni studijski kod su obavezni

  • Arduino
  • Izvorno otklanjanje grešaka

Takođe preporučujem da instalirate ovaj dodatak koji omogućava inteligenciju za C/C ++

C/C ++

U ovom priručniku ću koristiti 2 radne fascikle:

D: / devel / ESP32 / tools / - ovde sam postavio sve alate

C: / Users / xxxxx / Documents / Arduino / YourProject / - ovo je fascikla sa skicom

možete postaviti svoje datoteke bilo gdje drugdje ako želite, samo nemojte zaboraviti ažurirati sve reference svojim stvarnim putem.

Korak 2: Instaliranje i konfiguracija upravljačkog programa

Instaliranje i konfiguracija upravljačkog programa
Instaliranje i konfiguracija upravljačkog programa
Instaliranje i konfiguracija upravljačkog programa
Instaliranje i konfiguracija upravljačkog programa
Instaliranje i konfiguracija upravljačkog programa
Instaliranje i konfiguracija upravljačkog programa

Čak i ako Windows prema zadanim postavkama automatski otkriva FT2232, zadani upravljački programi za Windows nisu dovoljni za sve napredne funkcije i potrebno je preuzeti i instalirati upravljački program sa web stranice FTDI

Kada je instaliran ispravan upravljački program, trebali biste vidjeti svoj FT2232 modul u upravitelju uređaja ne samo kao 2 serijska porta već i kao "USB serijski pretvarač A" i "USB serijski pretvarač B"

Drugi korak je promjena upravljačkog programa za jedan kanal našeg pretvarača. Preuzmite alat zadig sa stranice https://zadig.akeo.ie/. Ako dobro razumijem, ovaj alat povezuje winUSB upravljački program s FTDI uređajem koji omogućava nisku razinu komunikacije između openOCD -a i USB uređaja.

U zadig alatu u izborniku "Opcije" označite "Prikaži sve uređaje", tada biste trebali vidjeti svoj adapter na popisu dostupnih uređaja. Odaberite "Dual RS232-HS (Interface 0)", zatim odaberite zamjenski upravljački program "WinUSB v6.1.xxxx" i na kraju kliknite gumb za zamjenu upravljačkog programa.

Kada priključite svoj adapter na drugi USB priključak računara, potrebno je ponovo promijeniti postavke upravljačkog programa putem zadig alata, u suprotnom openOCD neće pronaći vaš adapter.

Korak 3: OpenOCD, Toolchain i Gdb

OpenOCD, Toolchain i Gdb
OpenOCD, Toolchain i Gdb

1. Otvoreni OCD je alat za otklanjanje grešaka u krugovima, s jedne strane razgovara sa čipom, s druge strane pruža gdb server na koji se debager (klijent) može povezati. Preuzmite openOCD za ESP32 s https://github.com/espressif/openocd-esp32/releases i raspakirajte ga u mapu D: / devel / ESP32 / tools

2. uredite openOCD konfiguracijske datoteke:

esp-wroom-32.cfg

Potpuna putanja do ove datoteke je:

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

U ovoj datoteci možete postaviti brzinu komunikacije promjenom parametra "adapter_khz". Na primjer, "adapter_khz 8000" znači 8Mhz.

Zadano je 20MHz i moglo bi biti previsoko ako koristite duže kratkospojne žice ili matičnu ploču. Preporučujem da počnete na 1Mhz i ako je sve u redu, idite na veću brzinu, za mene 8Mhz radi pouzdano.

minimodule.cfg

Potpuna putanja do ove datoteke je: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

Ako sam dobro shvatio, originalni minimalni modul je preskupa ploča za isključivanje sa FT 2232 proizvedena od FTDI -a i jedina razlika između originalnog minimalnog modula i jeftinog modula ili golog čipa dostupnog na tržištu je zadani USB opis. otvoreni OCD traži jtag adapter na osnovu opisa uređaja, također je potrebno prilagoditi izgled init -a.

Jeftini modul ima opis "Dual RS232-HS". Ako niste sigurni u opis svog uređaja, možete to provjeriti u upravitelju uređaja -> svojstva uređaja -> detalji kartice -> vrijednost svojstva "Opis uređaja prijavljen sabirnicom"

Sadržaj minimodule.cfg trebao bi izgledati kao primjer ispod, redovi koji počinju s # mogu se izbrisati.

sučelje 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

Potpuna putanja do ove datoteke je:

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

Dodajte sljedeća 2 retka na kraj esp32.cfg. Bez ove izmjene dodavanje kočnih točaka neće funkcionirati.

#Force hw breakpoints. Jednom kada dobijemo memorijsku kartu, možemo dopustiti i softver bps.gdb_breakpoint_override hard

3. Preuzmite i instalirajte xtensa-esp32-elf alatni lanac-ovaj lanac alatki sadrži otklanjanje grešaka u komandnoj liniji (gdb klijent) koji je od vitalnog značaja za ispravno otklanjanje grešaka iz bilo kojeg grafičkog IDE-a. Bare lanac alata može se preuzeti sa web stranice espressif, odjeljak "Alternativno postavljanje"

Korak 4: Ožičenje i prvi test

Ožičenje i prvi test
Ožičenje i prvi test
Ožičenje i prvi test
Ožičenje i prvi test

Povežite modul FT2322 sa ESP -om. Preporučujem da koristite što je moguće kraće žice. Ako ste tek počeli s JTAG -om, ne zaboravite da će TDI adaptera ići na TDI čipa, također će TDO adaptera ići na TDO čipa. JTAG linije podataka NISU PRESJEČENE poput Rx/Tx na uart!

Za sljedeći test preporučujem učitavanje blink primjera skice ili neke druge skice koja može ukazati na to da li CPU radi ili ne trepćućom LED diodom ili zvučnim signalom ili upisom na serijsku konzolu.

Pokrenite openOCD slijedećom naredbom

D: / devel / ESP32 / tools / openocd-esp32 / bin / openocd.exe-s D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts -f sučelje/ftdi/minimodule.cfg -f ploča /esp-wroom-32.cfg

Ovo će pokrenuti openOCD i ako je sve u redu, trebali biste vidjeti u ispisu naredbenog retka da sadrži sljedeće retke:

Podaci: brzina takta 8000 kHzInfo: JTAG dodir: esp32.cpu0 dodir/uređaj pronađen: 0x120034e5 (mfg: 0x272 (Tensilica), dio: 0x2003, ver: 0x1) Podaci: JTAG slavina: esp32.cpu1 dodir/uređaj pronađen: 0x120034e5 (mfg: 0x272 (Tensilica), dio: 0x2003, ver: 0x1)

Takođe, openocd proces će slušati na TCP portu 3333

Otvorite novi terminal i pokrenite gdb klijent naredbenog retka slijedeći naredbu

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

Pričekajte trenutak i kada gdb terminal bude spreman, upišite sljedeće naredbe jednu po jednu

cilj daljinski: 3333mon reset resetovanje nastaviti

prva naredba otvara vezu sa openocd serverom za otklanjanje grešaka, druga će zaustaviti izvršavanje programa na ESP -u i LED bi trebao prestati treptati, nastaviti sa obnavljanjem izvođenja programa i LED bi trebao ponovo početi treptati.

Korak 5: Dodajte konfiguraciju otklanjanja grešaka u kod Visual Studio

Dodajte konfiguraciju otklanjanja grešaka u kod Visual Studio
Dodajte konfiguraciju otklanjanja grešaka u kod Visual Studio

Pretpostavljam da ste u tom trenutku već ispravno konfigurirali vizualni studijski kod i arduino dodatak i možete provjeriti i postaviti svoju skicu na ploču. Ako nije, provjerite upute za konfiguriranje koda vizualnog studija i arduina, na primjer na ovoj stranici

Da bi otklanjanje grešaka radilo potrebno je odrediti izlaznu fasciklu za izgradnju. Ispod fascikle sa skicama nalazi se (skrivena) fascikla.vscode, gdje je datoteka arduino.json. ovoj datoteci dodaj sljedeći red:

"output": "BuildOutput/"

pokrenite verifikaciju ili otpremite i ponovo provjerite mapu skice, trebala bi postojati nova mapa BuildOutput i unutar nje datoteka s.elf ekstenzijom. elf datoteka je vitalna za otklanjanje grešaka.

Postavke otklanjanja grešaka nalaze se u datoteci launch.json. Kreirajte ovu datoteku sa sljedećim sadržajem ili je možete kopirati iz priloženog primjera projekta. Ne zaboravite prilagoditi red 26 i definirati ispravan put do vaše.elf datoteke vašeg projekta.

{// Koristite IntelliSense da biste saznali o mogućim atributima. // Zadržite pokazivač za prikaz opisa postojećih atributa. // Za više informacija posjetite: 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 "}, {// dinamička varijanta" text ":" file c:/Users/xxxxx/Documents/Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf "// statička varijanta //" text ":" datoteka 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 \.]*: / hardver "," launchCompleteCommand ":" exec-continue "," filterStderr ": true," args ": }]}

Kako započeti otklanjanje grešaka:

  1. Poštujte i postavite svoju skicu na ploču
  2. Pokrenite openOCD s parametrima
  3. Postavite kočne točke u kodu gdje želite
  4. Nakon postavljanja svih kočnih točaka, provjerite jeste li otvorili glavnu.ino datoteku svog projekta. (ili putanja hard koda do.elf datoteke u launch.json)
  5. Otvori ploču za otklanjanje pogrešaka u kodu (Ctrl + Shift + D)
  6. Odaberite "Arduino-GDB-openOCD" debager, trebao bi biti dostupan samo.
  7. Pritisnite F5 da biste pokrenuli otklanjanje grešaka

Preporučuje se: