Turinys:

ESP32 - pigus sprendimas „Circruit Debug“: 5 žingsniai
ESP32 - pigus sprendimas „Circruit Debug“: 5 žingsniai

Video: ESP32 - pigus sprendimas „Circruit Debug“: 5 žingsniai

Video: ESP32 - pigus sprendimas „Circruit Debug“: 5 žingsniai
Video: PWM DC Motor control with Arduino and L298N Module with library - Robojax 2024, Lapkritis
Anonim
ESP32 - pigus sprendimas „Circruit Debug“
ESP32 - pigus sprendimas „Circruit Debug“

Sveiki, šioje instrukcijoje aprašoma, kaip nustatyti pigų JTAG adapterį, pagrįstą FTDI 2232HL mikroschema, su vizualiniu kodu ir arduino priedu.

- FTDI 2232HL modulis su USB jungtimi nuo 8 USD „ebay“ir nereikia mokamos programinės įrangos. Tai puikus sprendimas mėgėjams, kurie nenori išleisti 50 USD+ profesionaliam JTAG adapteriui.

- Šis adapteris gali būti naudojamas derinant kitas platformas, tokias kaip ESP8266, ARM, AVR ir daugelis kitų. Kai kurios konfigūracijos priklauso nuo tikslinės platformos, ši instrukcija apima tik ESP32 sąranką.

- Jei jums jau priklauso koks nors JTAG adapteris, galite jį naudoti, kai jį palaiko „openOCD“, tiesiog paleiskite „openocd“naudodami kitą konfigūracijos failą, atsižvelgiant į jūsų „jtag“adapterio tipą.

- platform.io gali palengvinti sąranką, tačiau derinimas palaikomas tik mokamoje profesionalioje versijoje.

- Veikia su dauguma ESP32 modulių. (pavyzdžiui, pigus wemos lolin 32)

- šis „Jtag“adapteris taip pat turėtų veikti su „Linux“, bet aš asmeniškai jo neišbandžiau.

1 žingsnis: Programinės įrangos sąlygos

„Arduino IDE“versija 1.8 arba naujesnė. „Windows“parduotuvės versija nepalaikoma. Turite naudoti klasikinę diegimo programos versiją, kurią galima atsisiųsti iš oficialaus „Arduino“puslapio

„Microsoft“vizualinės studijos kodas

Šie vizualinės studijos kodo priedai yra privalomi

  • „Arduino“https://marketplace.visualstudio.com/items?itemNa…
  • Vietinis derinimas

Taip pat rekomenduoju įdiegti šį priedą, kuris įgalina intelisense C/C ++

C/C ++

Šiame vadove naudosiu 2 darbinius aplankus:

D: / devel / ESP32 / tools / - čia aš įdėjau visus įrankius

C: / Users / xxxxx / Documents / Arduino / YourProject / - tai aplankas su eskizu

jei norite, galite įdėti failus bet kur kitur, tik nepamirškite atnaujinti visų nuorodų savo tikru keliu.

2 veiksmas: tvarkyklės diegimas ir konfigūravimas

Tvarkyklės įdiegimas ir konfigūravimas
Tvarkyklės įdiegimas ir konfigūravimas
Tvarkyklės įdiegimas ir konfigūravimas
Tvarkyklės įdiegimas ir konfigūravimas
Tvarkyklės įdiegimas ir konfigūravimas
Tvarkyklės įdiegimas ir konfigūravimas

Net jei „Windows“pagal numatytuosius nustatymus automatiškai aptinka FT2232, numatytųjų „Windows“tvarkyklių nepakanka visoms išankstinėms funkcijoms, todėl turite atsisiųsti ir įdiegti tvarkyklę iš FTDI svetainės

Įdiegus teisingą tvarkyklę, FT2232 modulį turėtumėte matyti įrenginių tvarkytuvėje ne tik kaip 2 nuoseklius prievadus, bet ir kaip „USB serijos keitiklis A“ir „USB nuoseklusis keitiklis B“

Antras žingsnis yra pakeisti vieno keitiklio kanalo tvarkyklę. Atsisiųskite „zadig“įrankį iš https://zadig.akeo.ie/. Jei teisingai suprantu, šis įrankis susieja „WinUSB“tvarkyklę su FTDI įrenginiu, kuris leidžia žemo lygio ryšį tarp „openOCD“ir USB įrenginio.

„Zadig“įrankio meniu „Parinktys“pažymėkite „Rodyti visus įrenginius“, tada turimų įrenginių sąraše turėtumėte pamatyti savo adapterį. Pasirinkite „Dual RS232-HS (Interface 0)“, tada pasirinkite pakeistą tvarkyklę „WinUSB v6.1.xxxx“ir galiausiai spustelėkite mygtuką „Pakeisti tvarkyklę“.

Kai prijungiate adapterį prie kito kompiuterio USB prievado, būtina dar kartą pakeisti tvarkyklės nustatymus naudojant „zadig“įrankį, kitaip „openOCD“neras jūsų adapterio.

3 žingsnis: „OpenOCD“, „Toolchain“ir „Gdb“

„OpenOCD“, „Toolchain“ir „Gdb“
„OpenOCD“, „Toolchain“ir „Gdb“

1. Atviras OCD yra įrankis cirkuliuotam derinimui, vienoje pusėje jis kalba su mikroschema, o kitoje pusėje jis suteikia gdb serverį, prie kurio gali prisijungti derintojas (klientas). Atsisiųskite „openOCD“, skirtą ESP32, iš https://github.com/espressif/openocd-esp32/releases ir išpakuokite jį į aplanką D: / devel / ESP32 / tools

2. redaguoti „OpenOCD“konfigūracijos failus:

esp-wroom-32.cfg

Visas šio failo kelias yra:

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

Šiame faile galite nustatyti ryšio greitį, pakeisdami parametrą „adapter_khz“. Pavyzdžiui, „adapter_khz 8000“reiškia 8Mhz.

Numatytasis yra 20MHz ir gali būti per didelis, jei naudojate ilgesnius trumpiklius ar laidus. Rekomenduoju pradėti nuo 1Mhz ir jei viskas gerai, pereikite prie didesnio greičio, man 8Mhz veikia patikimai.

minimodule.cfg

Visas kelias į šį failą yra: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimalodule.cfg

Jei teisingai suprantu, tikrasis minimalus modulis yra per brangi stabdymo plokštė su FTD32, pagaminta FTDI, ir vienintelis skirtumas tarp originalaus minimalaus modulio ir pigių rinkoje esančių modulių ar pliko lusto yra numatytasis USB aprašymas. open OCD ieško jtag adapterio pagal įrenginio aprašymą, taip pat reikia pakoreguoti išdėstymą init.

Pigūs moduliai turi aprašymą „Dual RS232-HS“. Jei nesate tikri dėl savo įrenginio aprašo, galite jį patikrinti įrenginių tvarkytuvėje -> įrenginio ypatybės -> išsami informacija apie skirtuką -> nuosavybės „Autobusas pranešė apie įrenginio aprašą“vertė

Minimalu.cfg turinys turėtų atrodyti kaip žemiau pateiktas pavyzdys, eilutes, prasidedančias #, galima ištrinti.

sąsaja 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_data

esp32.cfg

Visas šio failo kelias yra:

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

Prie esp32.cfg pabaigos pridėkite šias 2 eilutes. Be šio pakeitimo stabdžių taškų pridėjimas neveiks.

#Force hw lūžio taškai. Turėdami atminties žemėlapį, taip pat galime leisti programinę įrangą bps.gdb_breakpoint_override hard

3. Atsisiųskite ir įdiekite „xtensa-esp32-elf“įrankių grandinę-šioje įrankių grandinėje yra komandų eilutės derintuvas („gdb“klientas), kuris yra būtinas norint, kad bet koks grafinis IDE derintų. „Bare toolchain“galima atsisiųsti iš espressif svetainės, skilties „Alternatyvi sąranka“https://docs.espressif.com/projects/esp-idf/en/latest/get-started/windows-setup-scratch.html

4 žingsnis: laidai ir pirmasis bandymas

Laidai ir pirmasis bandymas
Laidai ir pirmasis bandymas
Laidai ir pirmasis bandymas
Laidai ir pirmasis bandymas

Prijunkite FT2322 modulį prie ESP. Aš rekomenduoju naudoti kuo trumpesnius laidus. Jei esate naujas JTAG, nepamirškite, kad adapterio TDI bus skirtas lusto TDI, taip pat adapterio TDO bus skirtas lusto TDO. JTAG duomenų linijos nėra kryžminamos kaip Rx/Tx uart!

Tolesniam bandymui rekomenduoju įkelti mirksėjimo pavyzdžio eskizą ar kitą eskizą, kuris gali parodyti, ar procesorius veikia, ar ne, mirksint šviesos diodui arba pypsint ar rašant į serijinę konsolę.

Paleiskite „openOCD“vykdydami šią komandą

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

Tai pradės „openOCD“ir, jei viskas bus gerai, komandų eilutės išvestyje turėtų būti šios eilutės:

Informacija: laikrodžio greitis 8000 kHz Informacija: 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), dalis: 0x2003, ver: 0x1)

Taip pat „openocd“procesas klausysis 3333 TCP prievado

Atidarykite naują terminalą ir paleiskite komandų eilutės „gdb“klientą vykdydami komandą

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

Palaukite sekundę ir kai „gdb“terminalas bus paruoštas, po vieną rašykite šias komandas

tikslinis nuotolinio valdymo pultas: 3333 mėn

pirmoji komanda atveria ryšį su „openocd“derinimo serveriu, antra sustabdys programos vykdymą ESP, o šviesos diodas turėtų nustoti mirksėti, tęsti programos vykdymą ir LED turėtų vėl pradėti mirksėti.

5 veiksmas: pridėkite derinimo konfigūraciją prie „Visual Studio Code“

Pridėkite derinimo konfigūraciją prie „Visual Studio Code“
Pridėkite derinimo konfigūraciją prie „Visual Studio Code“

Manau, kad tuo metu jūs jau sukonfigūravote vaizdinės studijos kodą ir „arduino“priedą ir galite patikrinti ir įkelti savo eskizą į lentą. Jei ne, patikrinkite kai kurias instrukcijas, kaip sukonfigūruoti vaizdinės studijos kodą ir arduino, pavyzdžiui, šiame puslapyje

Kad derinimas veiktų, būtina nurodyti kūrimo išvesties aplanką. Po eskizų aplanku yra (paslėptas) aplankas.vscode, kuriame yra failas arduino.json. pridėkite prie šio failo šią eilutę:

"output": "BuildOutput/"

paleiskite patikrinti arba įkelti ir dar kartą patikrinkite eskizo aplanką, turėtų būti naujas aplankas „BuildOutput“ir jo viduje esantis failas su.elf plėtiniu. elf failas yra gyvybiškai svarbus derinant.

Derintojo nustatymai yra faile launch.json. Sukurkite šį failą naudodami šį turinį arba nukopijuokite šį failą iš pridėto pavyzdinio projekto. Nepamirškite pakoreguoti 26 eilutės ir apibrėžti teisingo projekto.elf failo kelio.

{// Norėdami sužinoti apie galimus atributus, naudokite „IntelliSense“. // Užveskite pelės žymeklį, kad peržiūrėtumėte esamų atributų aprašus. // Norėdami gauti daugiau informacijos, apsilankykite: https://go.microsoft.com/fwlink/?linkid=830387 "versija": "0.2.0", "konfigūracijos": [{"name": "Arduino-GDB-openOCD "," type ":" cppdbg "," request ":" paleisti "," programa ":" $ {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 "}, {// dinaminis variantas" text ":" file c:/Users/xxxxx/Documents/Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf "// statinis variantas //" tekstas ":" failas c: /Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf "}, {"text": "flushregs"}, {"text": "thb app_main"}, {"text": "c", "ignoreFailures": true}], "stopAtEntry": true, "serverStarted": "Informacija \: [w / d \.]*: / aparatūra "," launchCompleteCommand ":" exec-jat "," filterStderr ": tiesa," args ": }]}

Kaip pradėti derinimą:

  1. Užpildykite ir įkelkite eskizą į lentą
  2. Paleiskite „openOCD“su parametrais
  3. Nustatykite stabdymo taškus kodu, kur norite
  4. Nustatę visus stabdymo taškus įsitikinkite, kad atidarėte pagrindinį projekto.ino failą. (arba kietojo kodo kelias į.elf failą „launch.json“)
  5. Atidarykite derinimo skydelį prieš kodą („Ctrl“+ „Shift“+ D)
  6. Pasirinkite „Arduino-GDB-openOCD“derintuvą, jis turėtų būti pasiekiamas.
  7. Norėdami pradėti derinti, paspauskite F5

Rekomenduojamas: