Sommario:
- Passaggio 1: perquisiti software
- Passaggio 2: installazione e configurazione del driver
- Passaggio 3: OpenOCD, Toolchain e Gdb
- Passaggio 4: cablaggio e primo test
- Passaggio 5: aggiungere la configurazione di debug al codice di Visual Studio
Video: ESP32 - Soluzione economica per il debug di Circruit: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Ciao, in questo tutorial viene descritto come configurare un adattatore JTAG economico basato sul chip FTDI 2232HL, con codice visivo e addon arduino.
- Modulo FTDI 2232HL con connettore USB a partire da 8$ su ebay e non è richiesto alcun software a pagamento. Questa è un'ottima soluzione per gli hobbisti che non vogliono spendere 50$+ per tutti gli adattatori JTAG professionali.
- Questo adattatore può essere utilizzato per il debug di altre piattaforme come ESP8266, ARM, AVR e molte altre. Alcune configurazioni dipendono dalla piattaforma di destinazione, questa istruzione copre solo la configurazione per ESP32.
- Se possiedi già un adattatore JTAG, puoi usarlo quando è supportato da openOCD, basta avviare openocd con un file di configurazione diverso in base al tipo del tuo adattatore jtag.
- platform.io può semplificarti la configurazione, ma il debug è supportato solo nella versione professionale a pagamento.
- Funziona con la maggior parte dei moduli ESP32. (ad esempio wemos lolin 32 a buon mercato)
- questo adattatore jtag dovrebbe funzionare anche con linux, ma personalmente non l'ho testato.
Passaggio 1: perquisiti software
Arduino IDE versione 1.8 o successiva. La versione di Windows Store non è supportata. Devi usare la versione classica dell'installer che può essere scaricata dalla pagina ufficiale di Arduino
Codice Microsoft Visual Studio
Questi componenti aggiuntivi per il codice di Visual Studio sono obbligatori
- Arduino
- Debug nativo
Consiglio anche di installare questo addon che abilita intelisense per C/C++
C/C++
In questo manuale userò 2 cartelle di lavoro:
D:\devel\ESP32\tools\ - qui ho posizionato tutti gli strumenti
C:\Users\xxxxx\Documents\Arduino\YourProject\ - questa è la cartella con lo schizzo
puoi posizionare i tuoi file altrove se lo desideri, ma per favore non dimenticare di aggiornare tutti i riferimenti con il tuo percorso effettivo.
Passaggio 2: installazione e configurazione del driver
Anche se Windows rileva automaticamente FT2232 per impostazione predefinita, i driver predefiniti di Windows non sono sufficienti per tutte le funzionalità avanzate ed è necessario scaricare e installare il driver dal sito FTDI
Quando è installato il driver corretto, dovresti vedere il tuo modulo FT2232 in Gestione dispositivi non solo come 2 porte seriali ma anche come "USB serial converter A" e "USB serial converter B"
Il secondo passo è cambiare il driver per un canale del nostro convertitore. Scarica lo strumento zadig da https://zadig.akeo.ie/. Se ho capito bene questo strumento collega il driver winUSB al dispositivo FTDI che consente la comunicazione a basso livello tra openOCD e dispositivo USB.
Nello strumento zadig, nel menu "Opzioni" seleziona "Mostra tutti i dispositivi", quindi dovresti vedere il tuo adattatore nell'elenco dei dispositivi disponibili. Selezionare "Dual RS232-HS (Interface 0)", quindi selezionare il driver sostitutivo "WinUSB v6.1.xxxx" e infine fare clic sul pulsante di sostituzione del driver.
Quando si collega l'adattatore a una porta USB diversa del computer, è necessario modificare nuovamente le impostazioni del driver tramite lo strumento zadig, altrimenti openOCD non troverà l'adattatore.
Passaggio 3: OpenOCD, Toolchain e Gdb
1. Open OCD è uno strumento per il debug del circuito, da un lato parla con il chip dall'altro fornisce un server gdb a cui il debugger (client) può connettersi. Scarica openOCD per ESP32 da https://github.com/espressif/openocd-esp32/releases e scompattalo nella cartella D:\devel\ESP32\tools
2. modifica i file di configurazione di openOCD:
esp-wroom-32.cfg
Il percorso completo di questo file è:
D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\board\esp-wroom-32.cfg
In questo file è possibile impostare la velocità di comunicazione modificando il parametro "adapter_khz". Ad esempio "adapter_khz 8000" significa 8Mhz.
L'impostazione predefinita è 20 MHz e potrebbe essere troppo alta se si utilizzano cavi jumper o breadboard più lunghi. Consiglio di iniziare a 1Mhz e se tutto va bene, vai a velocità più alte, per me 8Mhz funziona in modo affidabile.
minimodule.cfg
Il percorso completo di questo file è: D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\interface\ftdi\minimodule.cfg
Se ho capito bene, il minimodule originale è una scheda di frenata troppo costosa con FT 2232 prodotta da FTDI e l'unica differenza tra minimodule originale e modulo economico o chip nudo disponibile sul mercato è la descrizione USB predefinita. open OCD sta cercando un adattatore jtag in base alla descrizione del dispositivo, anche il layout init deve essere regolato.
Il modulo economico ha la descrizione "Dual RS232-HS". Se non sei sicuro della descrizione del tuo dispositivo, puoi verificarlo in Gestione dispositivi -> proprietà dispositivo -> dettagli scheda -> valore della proprietà "Descrizione dispositivo segnalato dal bus"
Il contenuto di minimodule.cfg dovrebbe essere simile all'esempio seguente, le righe che iniziano con # possono essere eliminate.
interfaccia 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_SR0020
esp32.cfg
Il percorso completo di questo file è:
D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\target\esp32.cfg
Aggiungi le seguenti 2 righe alla fine di esp32.cfg. Senza questa modifica, l'aggiunta di punti di frenata non funzionerà.
#Forza punti di interruzione hw. Una volta che abbiamo una mappa di memoria, possiamo anche consentire il software bps.gdb_breakpoint_override hard
3. Scarica e installa la toolchain xtensa-esp32-elf: questa toolchain contiene il debugger della riga di comando (client gdb) che è fondamentale per avere un debug funzionante da qualsiasi IDE grafico. La toolchain nuda può essere scaricata dal sito di espressif, sezione "Alternative setup"
Passaggio 4: cablaggio e primo test
Collegare il modulo FT2322 con ESP. Raccomando di usare fili il più corti possibile. Se sei nuovo di JTAG, non dimenticare che TDI dell'adattatore andrà a TDI del chip, anche TDO dell'adattatore andrà a TDO del chip. Le linee dati JTAG NON SONO INCROCIATE come Rx/Tx su uart!
Per il seguente test, raccomando di caricare uno schizzo di esempio di lampeggio o qualche altro schizzo che può indicare quando la CPU è in esecuzione o meno facendo lampeggiare il LED o emettendo un segnale acustico o scrivendo sulla console seriale.
Avvia openOCD seguendo il comando
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
Questo avvierà openOCD e se tutto va bene dovresti vedere che l'output della riga di comando contiene le seguenti righe:
Info: velocità di clock 8000 kHzInfo: JTAG tap: esp32.cpu0 tap/dispositivo trovato: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1) Info: JTAG tap: esp32.cpu1 tap/dispositivo trovato: 0x120034e5 (mfg: 0x272 (Tensilica), parte: 0x2003, ver: 0x1)
Anche il processo openocd ascolterà sulla porta TCP 3333
Apri un nuovo terminale e avvia il client gdb da riga di comando seguendo il comando
D:\devel\ESP32\tools\xtensa-esp32-elf\bin\xtensa-esp32-elf-gdb.exe
Aspetta un secondo e quando il terminale gdb sarà pronto scrivi i seguenti comandi uno per uno
target remoto: 3333mon reset stop continua
il primo comando apre la connessione al server di debug openocd, il secondo interrompe l'esecuzione del programma su ESP e il LED dovrebbe smettere di lampeggiare, continuare a ripristinare l'esecuzione del programma e il LED dovrebbe ricominciare a lampeggiare.
Passaggio 5: aggiungere la configurazione di debug al codice di Visual Studio
Presumo che a quel punto tu abbia già configurato correttamente il codice di Visual Studio e l'addon di Arduino e che tu possa verificare e caricare il tuo schizzo sulla scheda. In caso contrario, controlla alcune istruzioni su come configurare il codice di Visual Studio e Arduino, ad esempio in questa pagina
Per far funzionare il debug è necessario specificare la cartella di output della build. Sotto la cartella dello schizzo c'è la cartella (nascosta).vscode, dove si trova il file arduino.json. aggiungi a questo file la seguente riga:
"output": "BuildOutput/"
esegui verifica o carica e controlla di nuovo la cartella dello schizzo, dovrebbe esserci una nuova cartella BuildOutput e al suo interno un file con estensione.elf. elf file è vitale per il debug.
Le impostazioni del debugger si trovano nel file launch.json. Crea questo file con il seguente contenuto oppure puoi copiare questo file dal progetto di esempio allegato. Non dimenticare di regolare la riga 26 e definire il percorso corretto per il file.elf del tuo progetto.
{ // Usa IntelliSense per conoscere i possibili attributi. // Passa il mouse per visualizzare le descrizioni degli attributi esistenti. // Per ulteriori informazioni, visitare: 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" }, { //variante dinamica "text": "file c:/Users/xxxxx/Documents/Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf" //variante statica //"text": "file 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": }] }
Come avviare il debug:
- Compila e carica il tuo schizzo a bordo
- Avvia openOCD con i parametri
- Imposta i punti di frenata nel codice dove vuoi
- Dopo aver impostato tutti i punti di frenata, assicurati di aver aperto il file.ino principale del tuo progetto. (o percorso hardcode al file.elf in launch.json)
- Apri il pannello di debug nel codice vs (Ctrl + Maiusc + D)
- Seleziona il debugger "Arduino-GDB-openOCD", dovrebbe essere disponibile solo.
- Premi F5 per avviare il debug
Consigliato:
Una pressa per formaggio semplice ed economica: 6 passaggi (con immagini)
Una pressa per formaggio semplice ed economica: la produzione del formaggio è un'alchimia straordinaria che trasforma il latte in una profusione di diverse consistenze e sapori. L'ingresso per me era la ricotta, un formaggio facile e indulgente da fare senza bisogno di attrezzature o forniture fantasiose. La mozzarella è arrivata dopo, anche
Scatola per foto fai-da-te economica: 5 passaggi
Scatola fotografica fai-da-te economica: hai mai avuto bisogno di qualcosa per rendere le tue foto più belle per il tuo progetto istruttivo o hai solo bisogno di un'illuminazione adeguata per le tue foto, beh, puoi usare una scatola fotografica che può essere facilmente realizzata a casa. Il mio qui non è il migliore, ma è economico ed e
Terminale Python per la connessione economica Pi Arduino: 4 passaggi
Terminale Python per connessione Arduino Pi economico: il Raspberry Pi è una macchina Linux, quindi ci sono probabilmente un sacco di applicazioni terminali per questo. Ma ne ho scritto uno nuovo in Python, perché mi sono preoccupato? Continuare a leggere. Se stai realizzando un progetto che utilizza sia il Pi che l'Arduino, probabilmente avrai bisogno di
Telecamera per casco controllata da PIC economica con Sony LANC (buona per sport estremi): 4 passaggi
Telecamera per casco controllata da PIC economica con Sony LANC (buona per gli sport estremi): questo Instructable ti mostrerà come realizzare una telecamera per casco economica che può essere controllata tramite un telecomando in modo che la tua fotocamera principale possa rimanere al sicuro nello zaino. Il controller può essere fissato a uno degli spallacci del tuo zaino e
Presa per breadboard per scheda SD fai-da-te economica: 8 passaggi
Presa per breadboard per schede SD fai-da-te economica: hai un progetto che necessita di un'interfaccia per l'archiviazione di massa, ma non hai le risorse per costruire una scheda breakout per un socket standard? In questo Instructable imparerai come creare una presa per scheda SD che si collega direttamente a una breadboard per l