Inhoudsopgave:
- Stap 1: Softwarevereisten
- Stap 2: Driver installeren en configureren
- Stap 3: OpenOCD, Toolchain en Gdb
- Stap 4: Bedrading en eerste test
- Stap 5: Foutopsporingsconfiguratie toevoegen aan Visual Studio Code
Video: ESP32 - Goedkope oplossing voor in Circuit Debug - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Hallo, In deze instructable wordt beschreven hoe u een goedkope JTAG-adapter instelt op basis van een FTDI 2232HL-chip, met visuele code en arduino-add-on.
- FTDI 2232HL-module met USB-connector vanaf $ 8 op ebay en er is geen betaalde software vereist. Dit is een geweldige oplossing voor hobbyisten die geen 50 $ + willen uitgeven aan een professionele JTAG-adapter.
- Deze adapter kan worden gebruikt voor het debuggen van andere platforms zoals ESP8266, ARM, AVR en vele anderen. Sommige configuraties zijn afhankelijk van het doelplatform, deze instructie heeft alleen betrekking op de installatie voor ESP32.
- Als u al een JTAG-adapter bezit, kunt u deze gebruiken wanneer deze wordt ondersteund door openOCD, start gewoon openocd met een ander configuratiebestand op basis van het type van uw jtag-adapter.
- platform.io kan het instellen voor u gemakkelijker maken, maar debuggen wordt alleen ondersteund in de betaalde professionele versie.
- Werkt met de meeste ESP32-modules. (bijvoorbeeld goedkope wemos lolin 32)
- deze jtag-adapter zou ook met linux moeten werken, maar ik heb hem persoonlijk niet getest.
Stap 1: Softwarevereisten
Arduino IDE versie 1.8 of nieuwer. Windows Store-versie wordt niet ondersteund. U moet de klassieke installatieversie gebruiken die kan worden gedownload van de officiële Arduino-pagina
Microsoft Visual Studio-code
Deze add-ons voor visuele studiocode zijn verplicht
- Arduino
- Native debug
Ik raad ook aan om deze add-on te installeren die Intelisense voor C/C++ mogelijk maakt
C/C++
In deze handleiding gebruik ik 2 werkmappen:
D:\devel\ESP32\tools\ - hier heb ik alle tools geplaatst
C:\Users\xxxxx\Documents\Arduino\YourProject\ - dit is de map met schets
je kunt je bestanden ergens anders plaatsen als je wilt, vergeet niet om alle referenties bij te werken met je werkelijke pad.
Stap 2: Driver installeren en configureren
Zelfs als Windows standaard FT2232 automatisch detecteert, zijn de standaard Windows-stuurprogramma's niet genoeg voor alle geavanceerde functies en moet het stuurprogramma worden gedownload en geïnstalleerd van de FTDI-site
Als de juiste driver is geïnstalleerd, zou u uw FT2232-module in apparaatbeheer niet alleen als 2 seriële poorten moeten zien, maar ook als "USB seriële converter A" en "USB seriële converter B"
De tweede stap is het wijzigen van het stuurprogramma voor één kanaal van onze converter. Download de zadig-tool van https://zadig.akeo.ie/. Als ik het goed begrijp, koppelt deze tool winUSB-stuurprogramma aan FTDI-apparaat dat communicatie op laag niveau tussen openOCD en USB-apparaat mogelijk maakt.
In zadig tool, in menu "Opties" vink "Toon alle apparaten" aan, dan zou je je adapter in de lijst met beschikbare apparaten moeten zien. Selecteer "Dual RS232-HS (Interface 0)" en selecteer vervolgens vervangend stuurprogramma "WinUSB v6.1.xxxx" en klik ten slotte op de knop stuurprogramma vervangen.
Wanneer u uw adapter op een andere USB-poort van uw computer aansluit, is het nodig om de driverinstellingen opnieuw te wijzigen via de zadig-tool, anders zal openOCD uw adapter niet vinden.
Stap 3: OpenOCD, Toolchain en Gdb
1. Open OCD is een hulpmiddel voor debuggen in circuits, aan de ene kant praat het met een chip en aan de andere kant biedt het een gdb-server waar debugger (client) verbinding mee kan maken. Download openOCD voor ESP32 van https://github.com/espressif/openocd-esp32/releases en pak het uit in map D:\devel\ESP32\tools
2. bewerk openOCD-configuratiebestanden:
esp-wroom-32.cfg
Het volledige pad naar dit bestand is:
D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\board\esp-wroom-32.cfg
In dit bestand kunt u de communicatiesnelheid instellen door de parameter "adapter_khz" te wijzigen. "adapter_khz 8000" betekent bijvoorbeeld 8Mhz.
De standaardwaarde is 20 MHz en deze kan te hoog zijn als u langere jumperdraden of een breadboard gebruikt. Ik raad aan om op 1Mhz te beginnen en als alles in orde is, ga dan naar een hogere snelheid, voor mij werkt 8Mhz betrouwbaar.
minimodule.cfg
Het volledige pad naar dit bestand is: D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\interface\ftdi\minimodule.cfg
Als ik het goed begrijp, is echte minimodule een te duur rembord met FT 2232 vervaardigd door FTDI en het enige verschil tussen echte minimodule en goedkope module of kale chip die op de markt verkrijgbaar is, is de standaard USB-beschrijving. open OCD zoekt jtag-adapter op basis van apparaatbeschrijving, ook lay-out init moet worden aangepast.
Goedkope module heeft de beschrijving "Dual RS232-HS". Als u niet zeker bent over de beschrijving van uw apparaat, kunt u deze controleren in apparaatbeheer -> apparaateigenschappen -> tabbladdetails -> waarde van de eigenschap "Bus gerapporteerde apparaatbeschrijving"
De inhoud van minimodule.cfg zou eruit moeten zien als onderstaand voorbeeld, regels die beginnen met # kunnen worden verwijderd.
interface 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 -data ftdi_layout
esp32.cfg
Het volledige pad naar dit bestand is:
D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\target\esp32.cfg
Voeg de volgende 2 regels toe aan het einde van esp32.cfg. Zonder deze wijziging zal het toevoegen van rempunten niet werken.
#Forceer breekpunten. Zodra we een geheugenkaart hebben, kunnen we ook software bps.gdb_breakpoint_override hard toestaan
3. Download en installeer xtensa-esp32-elf toolchain - deze toolchain bevat een opdrachtregeldebugger (gdb-client) die van vitaal belang is voor een werkende debug van elke grafische IDE. Kale toolchain kan worden gedownload van de espressif-site, sectie "Alternatieve installatie"
Stap 4: Bedrading en eerste test
Verbind de FT2322-module met ESP. Ik raad aan om zo kort mogelijke draden te gebruiken. Als je nieuw bent bij JTAG, vergeet dan niet dat de TDI van de adapter naar de TDI van de chip gaat, en ook de TDO van de adapter naar de TDO van de chip. JTAG datalijnen zijn NIET gekruist zoals Rx/Tx op uart!
Voor de volgende test raad ik aan om een knippervoorbeeldschets of een andere schets te uploaden die kan aangeven wanneer de CPU draait of niet door de LED te laten knipperen of te piepen of naar de seriële console te schrijven.
Start openOCD door het volgende commando te volgen
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 bord /esp-wroom-32.cfg
Dit zal openOCD starten en als alles in orde is, zou je moeten zien dat de uitvoer van de opdrachtregel de volgende regels bevat:
Info: kloksnelheid 8000 kHzInfo: JTAG tap: esp32.cpu0 tap/apparaat gevonden: 0x120034e5 (mfg: 0x272 (Tensilica), onderdeel: 0x2003, ver: 0x1) Info: JTAG tap: esp32.cpu1 tap/apparaat gevonden: 0x120034e5 (mfg: 0x272 (Tensilica), onderdeel: 0x2003, ver: 0x1)
Ook het openocd-proces luistert op TCP-poort 3333
Open een nieuwe terminal en start de gdb-client op de opdrachtregel door het volgende commando
D:\devel\ESP32\tools\xtensa-esp32-elf\bin\xtensa-esp32-elf-gdb.exe
Wacht even en wanneer gdb terminal klaar is, schrijf de volgende commando's een voor een:
doel afstandsbediening:3333mon reset stop doorgaan
het eerste commando opent de verbinding met de openocd debug-server, het tweede stopt de uitvoering van het programma op ESP en de LED zou moeten stoppen met knipperen, doorgaan met het herstellen van de uitvoering van het programma en de LED zou opnieuw moeten beginnen te knipperen.
Stap 5: Foutopsporingsconfiguratie toevoegen aan Visual Studio Code
Ik neem aan dat je op dat moment al de juiste visuele studiocode en arduino-add-on hebt geconfigureerd en dat je je schets kunt verifiëren en uploaden naar het bord. Als dat niet het geval is, raadpleeg dan een instructie over het configureren van Visual Studio-code en Arduino, bijvoorbeeld op deze pagina
Om debug te laten werken, is het nodig om de build-uitvoermap op te geven. Onder je schetsmap is er (verborgen) map.vscode, waar het bestand arduino.json is. voeg aan dit bestand de volgende regel toe:
"output": "BuildOutput/"
voer verifiëren of uploaden uit en controleer uw schetsmap opnieuw, er zou een nieuwe BuildOutput-map moeten zijn en daarin een bestand met de.elf-extensie. elf-bestand is van vitaal belang voor debuggen.
Debugger-instellingen staan in het bestand launch.json. Maak dit bestand met de volgende inhoud, of u kunt dit bestand kopiëren vanuit het bijgevoegde voorbeeldproject. Vergeet niet regel 26 aan te passen en het juiste pad naar uw project.elf-bestand te definiëren.
{ // Gebruik IntelliSense om meer te weten te komen over mogelijke attributen. // Beweeg de muisaanwijzer om beschrijvingen van bestaande attributen te bekijken. // Ga voor meer informatie naar: https://go.microsoft.com/fwlink/?linkid=830387 "versie": "0.2.0", "configuraties": [{ "naam": "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" //static variant //"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": }] }
Hoe te beginnen met debuggen:
- Voldoen en uw schets uploaden naar bord
- Start openOCD met parameters
- Zet rempunten in code waar je wilt
- Nadat u alle rempunten hebt ingesteld, moet u ervoor zorgen dat u het hoofd-.ino-bestand van uw project hebt geopend. (of hardcode-pad naar.elf-bestand in launch.json)
- Open debug-paneel in vs code (Ctrl + Shift + D)
- Selecteer "Arduino-GDB-openOCD" debugger, zou alleen beschikbaar moeten zijn.
- Druk op F5 om foutopsporing te starten
Aanbevolen:
Idee voor doe-het-zelf-activiteit voor weerstations voor 12+ jaar: 4 stappen
Idee voor doe-het-zelf-weerstationactiviteit voor 12-plussers: in deze activiteit zullen deelnemers hun weerstation opzetten, de lucht in sturen en de opnames (licht, temperatuur, vochtigheid) in realtime volgen via de Blynk-app. Bovendien leert u hoe u de geregistreerde waarden publiceert
IOT-oplossing voor de deelfiets: 6 stappen
IOT-oplossing voor de deelfiets: de deelfiets is tegenwoordig erg populair in China. Er zijn meer dan 10 merken deelfietsen op de markt, en de “mobike” is de meest bekende, heeft meer dan 100 miljoen geregistreerde gebruikers en heeft zich verspreid naar andere steden dan
Oplossing voor geen parkeerzones: 5 stappen
Oplossing voor No Parking Zones: dit project is het resultaat van de inspiratie die mijn team kreeg van een krantenartikel. Het artikel sprak over mensen die hun voertuigen parkeren in een niet-parkeerzone. Dit is een groot probleem geworden wat resulteert in files en overlast voor anderen
Een eenvoudige oplossing voor het probleem van de beruchte helpende hand: 9 stappen
Een eenvoudige oplossing voor het probleem van de beruchte helpende hand: Onlangs kocht ik een van die goedkope helpende handen, en ik begon op te merken dat de "handen" aan het slijten waren, dus ik probeerde een slimme (en goedkope natuurlijk) oplossing te vinden voor dit kleine probleem. Het probleem is dit: de stelschroef was
Microdrive Madness: $ 15 oplossing voor uw extra microdrives: 3 stappen
Microdrive Madness: $15 Oplossing voor uw extra microdrives: welkom voor degenen onder u die van mijn andere instructable op de iPod-upgrade kwamen! Heb je geen idee wat je moet doen met je extra microdrives, afkomstig van oude mp3-spelers, iPods, camera's, enz…? Wel, ik heb de meest geweldige oplossing voor je