Innholdsfortegnelse:
- Trinn 1: Programvareprosesser
- Trinn 2: Installering og konfigurering av driver
- Trinn 3: OpenOCD, Toolchain og Gdb
- Trinn 4: Kabling og første test
- Trinn 5: Legg til feilsøkingskonfigurasjon i Visual Studio Code
Video: ESP32 - Billig løsning for in Circruit Debug: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Hei, i denne instruktøren er beskrevet hvordan du setter opp en billig JTAG -adapter basert på FTDI 2232HL -brikke, med visuell kode og arduino -tillegg.
- FTDI 2232HL -modul med USB -kontakt fra 8 $ på ebay og ingen betalt programvare er nødvendig. Dette er en flott løsning for amatører som ikke vil bruke 50 $+ på profesjonell JTAG -adapter.
- Denne adapteren kan brukes til feilsøking av andre plattformer som ESP8266, ARM, AVR og mange andre. Noen konfigurasjoner avhenger av målplattformen, denne instruksjonen dekker bare oppsett for ESP32.
- Hvis du allerede eier en JTAG -adapter, kan du bruke den når den støttes av openOCD, bare start openocd med en annen konfigurasjonsfil basert på typen jtag -adapter.
- platform.io kan gjøre oppsettet enklere for deg, men feilsøking støttes bare i betalt profesjonell versjon.
- Fungerer med de fleste ESP32 -moduler. (for eksempel billig wemos lolin 32)
- Denne jtag -adapteren skal fungere med linux også, men jeg personlig testet den ikke.
Trinn 1: Programvareprosesser
Arduino IDE versjon 1.8 eller nyere. Windows butikkversjon støttes ikke. Du må bruke den klassiske installasjonsversjonen som kan lastes ned fra den offisielle Arduino -siden
Microsoft visual studio -kode
Disse tilleggene for visuell studiokode er obligatoriske
- Arduino
- Native debug
Jeg anbefaler også å installere dette tillegget som muliggjør intelisense for C/C ++
C/C ++
I denne håndboken vil jeg bruke 2 arbeidsmapper:
D: / devel / ESP32 / tools / - her har jeg plassert alle verktøyene
C: / Users / xxxxx / Documents / Arduino / YourProject / - dette er en mappe med skisse
Du kan plassere filene dine andre steder hvis du vil, bare ikke glem å oppdatere alle referanser med den faktiske banen.
Trinn 2: Installering og konfigurering av driver
Selv om Windows automatisk oppdager FT2232 som standard, er Windows standarddrivere ikke nok for alle forhåndsfunksjoner, og det er nødvendig å laste ned og installere driveren fra FTDI -nettstedet
Når riktig driver er installert, bør du se FT2232 -modulen i enhetsbehandling ikke bare som 2 serielle porter, men også som "USB seriell omformer A" og "USB seriell omformer B"
Det andre trinnet er å bytte driver for en kanal i vår omformer. Last ned zadig -verktøyet fra https://zadig.akeo.ie/. Hvis jeg forstår riktig, kobler dette verktøyet winUSB -driver til FTDI -enhet som muliggjør kommunikasjon på lavt nivå mellom openOCD og USB -enhet.
I zadig -verktøyet, i menyen "Alternativer", sjekk "Vis alle enheter", så bør du se adapteren din i listen over tilgjengelige enheter. Velg "Dual RS232-HS (grensesnitt 0)", velg deretter erstatningsdriveren "WinUSB v6.1.xxxx" og klikk deretter på erstatt driver-knappen.
Når du kobler adapteren til en annen USB -port på datamaskinen din, er det nødvendig å endre driverinnstillinger via zadig -verktøyet igjen, ellers vil openOCD ikke finne adapteren.
Trinn 3: OpenOCD, Toolchain og Gdb
1. Åpen OCD er verktøy for debugging i kringkast, på den ene siden snakker den med chip på den andre siden, den gir gdb -server der debugger (klient) kan koble seg til. Last ned openOCD for ESP32 fra https://github.com/espressif/openocd-esp32/releases og pakk den ut til mappe D: / devel / ESP32 / tools
2. rediger openOCD -konfigurasjonsfiler:
esp-wroom-32.cfg
Hele banen til denne filen er:
D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / board / esp-wroom-32.cfg
I denne filen kan du angi kommunikasjonshastighet ved å endre parameteren "adapter_khz". For eksempel betyr "adapter_khz 8000" 8Mhz.
Standard er 20MHz, og det kan være for høyt hvis du bruker lengre ledertråder eller brødbrett. Jeg anbefaler å starte på 1Mhz, og hvis alt er OK, gå til høyere hastighet, for meg fungerer 8Mhz pålitelig.
minimodule.cfg
Hele banen til denne filen er: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg
Hvis jeg forstår riktig, er ekte minimodule overpriset bremsebrett med FT 2232 produsert av FTDI, og eneste forskjell mellom ekte minimodule og billig modul eller bare chip tilgjengelig på markedet er standard USB -beskrivelse. åpen OCD leter etter jtag adapter basert på enhetsbeskrivelse, også layout init må justeres.
Billig modul har beskrivelse "Dual RS232-HS". Hvis du ikke er sikker på beskrivelsen av enheten din, kan du sjekke den i enhetsbehandling -> enhetsegenskaper -> kategoridetaljer -> verdi for egenskapen "Buss rapportert enhetsbeskrivelse"
Innholdet i minimodule.cfg skal se ut som eksempelet nedenfor, linjer som begynner med # kan slettes.
grensesnitt 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 ftdat_lay
esp32.cfg
Hele banen til denne filen er:
D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / target / esp32.cfg
Legg til følgende to linjer til slutten av esp32.cfg. Uten denne endringen vil det ikke fungere å legge til bremsepunkter.
#Force hw breakpoints. Når vi har et minnekart, kan vi også tillate programvare bps.gdb_breakpoint_override hardt
3. Last ned og installer xtensa-esp32-elf verktøykjede-denne verktøykjeden inneholder kommandolinjefeilsøkingsprogram (gdb-klient) som er avgjørende for å ha fungerende feilsøking fra en grafisk IDE. Bare verktøykjede kan lastes ned fra espressif-siden, delen "Alternativt oppsett"
Trinn 4: Kabling og første test
Koble FT2322 -modulen til ESP. Jeg anbefaler å bruke så korte ledninger som mulig. Hvis du ikke er ny på JTAG, må du ikke glemme at TDI -adapteren går til TDI -brikken, og TDO -adapteren går til TDO -brikken. JTAG -datalinjer krysses IKKE som Rx/Tx på uart!
For følgende test anbefaler jeg opplasting av blinkeksempler eller annen skisse som kan indikere når CPU kjører eller ikke, ved å blinke LED eller pipe eller skrive til seriekonsoll.
Start openOCD ved å følge kommandoen
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
Dette vil starte openOCD, og hvis alt er i orden, bør du se på kommandolinjens utgang følgende linjer:
Info: klokkehastighet 8000 kHz Informasjon: JTAG tapp: esp32.cpu0 tapp/enhet funnet: 0x120034e5 (mfg: 0x272 (Tensilica), del: 0x2003, ver: 0x1) Info: JTAG tapp: esp32.cpu1 tapp/enhet funnet: 0x120034e5 (mfg: 0x272 (Tensilica), del: 0x2003, ver: 0x1)
Openocd -prosessen vil også lytte til TCP -port 3333
Åpne ny terminal og start kommandolinjens gdb -klient ved å følge kommandoen
D: / devel / ESP32 / tools / xtensa-esp32-elf / bin / xtensa-esp32-elf-gdb.exe
Vent litt, og når gdb -terminalen er klar, skriver du følgende kommandoer en etter en
målfjernkontroll: 3333mån tilbakestilling stopper videre
første kommando åpner tilkobling til openocd feilsøkingsserver, andre stopper programkjøring på ESP og LED skal slutte å blinke, fortsette gjenoppretting av programkjøring og LED skal begynne å blinke igjen.
Trinn 5: Legg til feilsøkingskonfigurasjon i Visual Studio Code
Jeg antar at på det tidspunktet har du allerede konfigurert visuell studiokode og arduino addon riktig, og du kan bekrefte og laste opp skissen din til brettet. Hvis ikke, vennligst sjekk instruksjonene for hvordan du konfigurerer visuell studiokode og arduino, for eksempel på denne siden
For å få feilsøking til å fungere, er det nødvendig å spesifisere build -utdatamappen. Under skisse -mappen din er det (skjult) mappen.vscode, hvor er filen arduino.json. legg til denne filen følgende linje:
"output": "BuildOutput/"
kjør verifiser eller last opp og sjekk skisse -mappen din igjen, det bør være en ny BuildOutput -mappe og inne i den med.elf extensition. elf -fil er avgjørende for feilsøking.
Feilsøkingsinnstillinger er i filstart.json. Lag denne filen med følgende innhold, eller du kan kopiere denne filen fra vedlagt eksempelprosjekt. Ikke glem juster linje 26 og definer riktig vei til prosjektet.elf -fil.
{// Bruk IntelliSense for å lære om mulige attributter. // Hold markøren for å se beskrivelser av eksisterende attributter. // For mer informasjon, besøk: https://go.microsoft.com/fwlink/?linkid=830387 "versjon": "0.2.0", "konfigurasjoner": [{"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 "}, {// dynamic variant" text ":" file c:/Users/xxxxx/Documents/Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf "// statisk variant //" text ":" fil 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 ": true," args ": }]}
Slik starter du feilsøking:
- Fullfør og last opp skissen din til brett
- Start openOCD med parametere
- Sett bremsepunkter i koden der du vil
- Etter at du har angitt alle bremsepunkter, må du kontrollere at du har åpnet prosjektets hoved.ino -fil. (eller hardcode -banen til.elf -filen i launch.json)
- Åpne feilsøkingspanel i vs kode (Ctrl + Shift + D)
- Velg "Arduino-GDB-openOCD" debugger, skal bare være tilgjengelig.
- Trykk på F5 for å starte feilsøking
Anbefalt:
IOT -løsning for delingssykkelen: 6 trinn
IOT -løsning for delingssykkelen: Delsykkelen er veldig populær i Kina i disse dager. Det er mer enn 10 merker av delingssykkel på markedet, og “ mobike ” er den mest kjente, den har mer enn 100 millioner registrerte brukere, og har spredt seg til andre byer enn
En komplett Arduino roterende løsning: 5 trinn
En komplett Arduino Rotary Solution: Rotary encoders er dreibare kontrollknapper for elektroniske prosjekter, ofte brukt med Arduino familie mikrokontrollere. De kan brukes til å finjustere parametere, navigere i menyer, flytte objekter på skjermen, sette verdier av noe slag. De er vanlige erstatningsmenn
Bruke fingeravtrykkssensor for tidsoppmøte i kombinasjon med XAMP -løsning: 6 trinn (med bilder)
Bruke fingeravtrykkssensor for tidsoppmøte i kombinasjon med XAMP -løsning: For et skoleprosjekt lette vi etter en løsning på hvordan vi kan spore elevenes oppmøte. Mange av våre studenter kommer sent. Det er en kjedelig jobb å sjekke deres tilstedeværelse. På den annen side er det mye diskusjon fordi studenter ofte vil si
Sett LoRa IoTea -løsning: 5 trinn
Seeed LoRa IoTea Solution: Et automatisk system for innsamling av informasjon som brukes på teplantasje. Det er en del av intelligent landbruksinformasjonsinnsamling
Sett IoTea LoRa -løsning (oppdatering 1811): 5 trinn
Sett IoTea LoRa -løsning (oppdatering 1811): Internet+ er et populært konsept nå. Denne gangen prøvde vi Internett pluss jordbruk for å lage tehage som vokser ut på internett