Inhoudsopgave:

ESP32 - Goedkope oplossing voor in Circuit Debug - Ajarnpa
ESP32 - Goedkope oplossing voor in Circuit Debug - Ajarnpa

Video: ESP32 - Goedkope oplossing voor in Circuit Debug - Ajarnpa

Video: ESP32 - Goedkope oplossing voor in Circuit Debug - Ajarnpa
Video: PWM DC Motor control with Arduino and L298N Module with library - Robojax 2024, November
Anonim
ESP32 - Goedkope oplossing voor in Circuit Debug
ESP32 - Goedkope oplossing voor in Circuit Debug

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

Driver installeren en configureren
Driver installeren en configureren
Driver installeren en configureren
Driver installeren en configureren
Driver installeren en configureren
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

OpenOCD, Toolchain en Gdb
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

Bedrading en eerste test
Bedrading en eerste test
Bedrading en eerste test
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

Foutopsporingsconfiguratie toevoegen aan Visual Studio Code
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:

  1. Voldoen en uw schets uploaden naar bord
  2. Start openOCD met parameters
  3. Zet rempunten in code waar je wilt
  4. 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)
  5. Open debug-paneel in vs code (Ctrl + Shift + D)
  6. Selecteer "Arduino-GDB-openOCD" debugger, zou alleen beschikbaar moeten zijn.
  7. Druk op F5 om foutopsporing te starten

Aanbevolen: