Inhoudsopgave:

Een debugger gebruiken op een ESP32: 11 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een debugger gebruiken op een ESP32: 11 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"

Video: Een debugger gebruiken op een ESP32: 11 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"

Video: Een debugger gebruiken op een ESP32: 11 stappen (met afbeeldingen) Antwoorden op al uw
Video: hoe HOME ASSISTANT op STB Android te installeren 2024, November
Anonim
Hoe gebruik je een debugger op een ESP32?
Hoe gebruik je een debugger op een ESP32?

Heb je ooit een kijkje in je code willen nemen om te zien waarom het zich gedraagt zoals het is? Traditioneel zou je in ESP32-projecten eindeloze printverklaringen moeten toevoegen om erachter te komen wat er aan de hand was, maar er is een betere manier!

Een debugger is een manier om te zien wat er gebeurt in bepaalde delen van uw code en om verschillende variabele waarden uit te proberen zonder uw code opnieuw te compileren. Dit is meestal niet beschikbaar voor ons op embedded projecten, maar in deze gids zal ik u laten zien hoe het te gebruiken op een ESP32.

In deze handleiding laat ik je zien hoe je de hardware, de software en een eenvoudig voorbeeld van het gebruik van de debugger kunt instellen.

Benodigdheden

  • ESP-Prog - Dit is het bord dat nodig is voor debuggen

    • Exacte die ik heb gekocht*
    • $ 5 Goedkopere, maar ik heb het niet getest*
  • Een ESP32 die pin 12, 13, 14, 15. doorbreekt

    • Adafruit Veer Huzzah32
    • D1 Mini ESP32*
  • [OPTIONEEL] Debug Shield die ik op Tindie verkoop

    • Veer Huzza32
    • D1 Mini ESP32

* = Partnerlink

Stap 1: Bekijk de video

Image
Image

Ik heb een video over dit onderwerp als je het wilt bekijken.

Op mijn kanaal maak ik meestal op ESP8266 en ESP32 gebaseerde video's, dus als je hierin geïnteresseerd bent, bekijk het dan alsjeblieft!

Stap 2: Hardware - Onderdelen en bedrading

Hardware - Onderdelen en bedrading
Hardware - Onderdelen en bedrading
Hardware - Onderdelen en bedrading
Hardware - Onderdelen en bedrading
Hardware - Onderdelen en bedrading
Hardware - Onderdelen en bedrading

Om de debugger te gebruiken heb je alleen een ESP-Prog nodig en bijna elk ESP32-bord (links naar deze in een eerdere stap)

ESP-Prog:

De ESP-Prog is een board ontworpen door espressif, de makers van de ESP32 en ESP8266 chips. Het maakt verbinding met JTAG-pinnen van de ESP32 zodat we de debugger kunnen gebruiken. Het kan ook worden gebruikt voor het programmeren van ESP32-kaarten, maar dat zal ik hier niet behandelen.

ESP32-bord:

Je kunt hiervoor in principe elk ESP32-bord gebruiken zodra het de JTAG-pinnen uitbreekt, die 12, 13, 14 en 15 zijn. Ik heb zowel een Adafruit-veer Huzzah32 als een D1 Mini 32-bord getest en ze werkten allebei prima.

Houd er rekening mee dat je de JTAG-pinnen in je schets kunt gebruiken met de debugger, de ingebouwde LED van het Huzzah32-bord zit bijvoorbeeld op pin 13, dus je kunt deze niet gebruiken tijdens het debuggen.

bedrading:

Om de ESP-Prog op de ESP32 aan te sluiten, gebruikt u gewoon de bedradingsgids zoals in de afbeelding hierboven. Raadpleeg het bedradingsschema van uw ESP32-bord als u niet meteen de juiste pinnen ziet, omdat ze soms een ander naamgevingsschema gebruiken.

Debug schilden:

Deze zijn optioneel, maar ik verkoop een aantal schilden op Tindie voor de Huzzah32 en de D1 Mini 32 die het aansluiten van de ESP-Prog heel eenvoudig maken, het breekt de juiste pinnen naar een IDC-connector die je kunt gebruiken met een lintkabel om rechtstreeks verbinding te maken tussen het schild en de ESP-Prog

Stap 3: Hardware - Driver instellen

Hardware - Instelling stuurprogramma
Hardware - Instelling stuurprogramma
Hardware - Instelling stuurprogramma
Hardware - Instelling stuurprogramma
Hardware - Instelling stuurprogramma
Hardware - Instelling stuurprogramma

Om de ESP-prog te gebruiken voor debuggen, moeten we de juiste stuurprogramma's ervoor installeren. PlatformIO biedt hier enkele stappen voor, maar ik zal de Windows-stappen in deze handleiding doornemen.

  1. Download en installeer de FTDI-stuurprogramma's voor de ESP-Prog vanaf hier, scrol naar rechts om de "uitvoerbare setup-versie" te downloaden om het gemakkelijker te maken.
  2. Download en installeer de tool Zadig vanaf hier, hierdoor kunnen we een generieke driver installeren die nodig is voor debuggen.
  3. Met de ESP-Prog aangesloten, open Zadig
  4. Klik in de Zadig-applicatie onder "Opties" op "Alle apparaten weergeven"
  5. De vervolgkeuzelijst in Zadig wordt nu gevuld, selecteer de optie "Dual RS232-HS (Interface 0)". Zorg ervoor dat u interface 0 selecteert!
  6. Rechts van de groene pijl moet "WinUSB" worden geselecteerd en klik vervolgens op "Replace Driver"

Als dat klaar is, moeten uw stuurprogramma's klaar zijn voor gebruik!

Opmerking: als u de USB-poort die u voor de ESP-Prog gebruikt, wijzigt, moet u mogelijk stappen 3-6 opnieuw herhalen. Als u tijdens het debuggen een foutmelding krijgt zoals weergegeven in de afbeelding hierboven, moet u de stappen herhalen.

Stap 4: Software: PlatformIO installeren

Software: PlatformIO installeren
Software: PlatformIO installeren
Software: PlatformIO installeren
Software: PlatformIO installeren
Software: PlatformIO installeren
Software: PlatformIO installeren

PlatformIO is een IDE voor ontwikkeling met verschillende embedded frameworks, waaronder het Arduino-ecosysteem. Het is ingewikkelder om te gebruiken dan zoiets als de Arduino IDE, maar het is erg krachtig en heeft een aantal functies die de Arduino IDE erg mist, zoals automatisch aanvullen.

Het is vereist voor PlatformIO om de debugger te gebruiken. Als u al bekend bent met PlatformIO, kunt u gerust een paar stappen overslaan.

  • Download en installeer Visual Studio Code (VS Code) via de link op de PlatformIO.org-website
  • Open VS Code en open het extensiemenu, de knop is gemarkeerd in de bovenstaande afbeelding
  • Typ "platformio" in de zoekopdracht, selecteer het en klik op installeren.

Stap 5: Software: PlatformIO gebruiken

Software: PlatformIO gebruiken
Software: PlatformIO gebruiken
Software: PlatformIO gebruiken
Software: PlatformIO gebruiken
Software: PlatformIO gebruiken
Software: PlatformIO gebruiken

Het gebruik van PlatformIO is een beetje anders dan het gebruik van de Arudino IDE, dus in deze stap zullen we alleen de basis behandelen om een voorbeeld op een bord te laten draaien.

Een voorbeeld openen:

  1. Klik op de Home-knop op de PlatformIO-werkbalk (zoals weergegeven in de afbeelding)
  2. Klik op de knop "Projectvoorbeelden"
  3. Selecteer het voorbeeld "Arduino-blink" onder de sectie Espressif 32

Dit opent een voorbeeld van een blink-project. De lay-out van een PlatformIO is behoorlijk anders dan die van een Arduino-project, dus laten we de basis doornemen.

Waar is de code?

De code voor je project wordt opgeslagen in de "src" map, voor het blink voorbeeld zie je een "blink.cpp" bestand, dit bestand is hetzelfde als je schetsbestand (.ino) in een Arduino project.

Hoe configureer ik mijn bord?

Configuraties voor uw project worden bewaard in een "platformio.ini"-bestand in uw project. Dit is eigenlijk een van mijn favoriete dingen over PlatformIO in vergelijking met de Arduino IDE, het was nooit logisch voor mij dat bordinstellingen niet gebonden waren aan schetsen.

Het voorbeeld.ini bevat definities voor meerdere verschillende boards, maar om het simpel te houden laten we de onderste twee definities verwijderen.

Waar stel ik mijn COM-poort in?

PlatformIO zal in feite automatisch proberen de juiste COM-poort te vinden om te gebruiken, dus je kunt er echt mee wegkomen door hier niets voor in te stellen. Maar als je meerdere COM-poorten hebt, wat je ook zult doen als je de debugger gebruikt, denk ik dat het logisch is om de specifieke in te stellen die je nodig hebt. Je kunt de verschillende apparaten zien die je hebt door op het gedeelte "Apparaten" op het tabblad Start te klikken, en u kunt instellen welke uw ESP32 is in "platformio.ini" door een "upload_port"-configuratie toe te voegen.

Hoe upload ik mijn code?

Klik op de knop Uploaden (pictogram is een pijl die naar rechts wijst) en het zou de code moeten compileren en uploaden. Je zou nu een knipperende LED op je bord moeten hebben.

Stap 6: Debuggen: potentiële bananenschil

Debuggen: potentiële bananenschil!
Debuggen: potentiële bananenschil!
Debuggen: potentiële bananenschil!
Debuggen: potentiële bananenschil!
Debuggen: potentiële bananenschil!
Debuggen: potentiële bananenschil!

Dit is iets dat me opviel toen ik dit aan het voorbereiden was en hopelijk zal worden opgelost tegen de tijd dat je het probeert, maar ik vond het belangrijk om hier te vertrekken.

Op het moment dat deze handleiding werd gemaakt, is de nieuwste versie van PlatformIO 4.3.0 en bevat deze een bug die betrekking heeft op het kunnen debuggen. Gelukkig kunnen we vrij eenvoudig updaten naar de nieuwste ontwikkelingsversie, wat het probleem oplost.

Controleer op de startpagina de versie van PlatformIO core, als deze "4.3.0" is, voer dan de volgende stappen uit.

  1. Klik op de PlatformIO-werkbalk op het terminalpictogram
  2. In het terminaltype: pio upgrade --dev
  3. RestartVS-code en PlatfromIO moeten worden bijgewerkt

Stap 7: Foutopsporing: Configuratie

Foutopsporing: Configuratie
Foutopsporing: Configuratie

We moeten het bestand "PlatofrmIO.ini" bewerken om foutopsporing mogelijk te maken, we hoeven er maar twee dingen aan toe te voegen.

debug_tool = esp-prog

Dit stelt de debug-tool in die we gebruiken.

debug_init_break = tbreak-configuratie

Dit is een truc die we hebben geleerd uit de video van Andress Spiess over debuggen op de ESP32. Het vertelt de debugger om te stoppen bij het instellen van onze applicatie.

Stap 8: Foutopsporing: foutopsporing starten

Foutopsporing: foutopsporing starten
Foutopsporing: foutopsporing starten
Foutopsporing: foutopsporing starten
Foutopsporing: foutopsporing starten
Foutopsporing: foutopsporing starten
Foutopsporing: foutopsporing starten
Foutopsporing: foutopsporing starten
Foutopsporing: foutopsporing starten

Voordat we erop ingaan, zullen we een kleine wijziging aanbrengen in de schets die het gemakkelijker maakt om te demonstreren wat u met de foutopsporing kunt doen.

  1. Maak een nieuwe variabele, "int delayTime = 1000;" buiten alle methoden, zal dit het een globale variabele maken.
  2. Vervang het nummer binnen de uitgestelde oproepen in de lus door deze nieuwe variabele: delay(delayTime);

Upload de code nogmaals naar het bord en om te beginnen met debuggen, klik in de werkbalk op "Uitvoeren" en vervolgens op "Start debugging"

Je zult de dingen zien bewegen in het terminalvenster, maar zelfs als dat aangeeft dat het een succes was, als je op de "Debug Console" klikt, zul je zien dat het nog steeds werkt, het duurt een paar seconden voordat het klaar is.

Als alles naar verwachting is verlopen, ziet u de debugger stoppen aan het begin van de installatie.

Stap 9: Foutopsporing: basisgebruik

Foutopsporing: basisgebruik
Foutopsporing: basisgebruik
Foutopsporing: basisgebruik
Foutopsporing: basisgebruik
Foutopsporing: basisgebruik
Foutopsporing: basisgebruik
Foutopsporing: basisgebruik
Foutopsporing: basisgebruik

Laten we enkele basisprincipes bespreken van wat u kunt doen met de debugger

Breekpunten maken:

Een breekpunt is een punt in uw code waar u wilt dat de debugger stopt. Klik links van het regelnummer om een breekpunt te maken. Voeg als demo een breekpunt toe aan de eerste regel in de lusmethode.

Breekpunt navigatie:

Om tussen het breekpunt of naar de volgende regel code te gaan, kunt u de tools gebruiken die bovenaan het scherm verschijnen. Druk op de knop "Doorgaan" (ziet eruit als een afspeelknop) om het onderbrekingspunt dat we zojuist hebben gemaakt in de lus te verplaatsen.

Variabele horloges:

Met variabele horloges kunt u de waarde van variabelen controleren wanneer de debugger op een breekpunt wordt gestopt. Om een nieuwe variabele horloge toe te voegen, klikt u op het +-pictogram en typt u vervolgens de naam van de variabele. Typ als demo de variabele die we in de vorige stap "delayTime" hebben toegevoegd

Variabele kijker:

U kunt ook alle variabelen en hun waarden zien die beschikbaar zijn op uw huidige breekpunt. Om dit te demonstreren, als je in de "Global" sectie kijkt, zou je de "delayTime" variabele moeten vinden.

De waarde van variabelen bewerken:

U kunt ook de waarden van variabelen bewerken en dit heeft onmiddellijk effect op uw codegedrag. Om dit te demonstreren, klikt u op de variabele delayTime in het gedeelte Variable Viewer en wijzigt u de waarde in "100". Om deze werking te laten zien, schakelt u het breekpunt in de lus uit door nogmaals links van het regelnummer te klikken. Druk op de knop Doorgaan op de navigatiebalk van het breekpunt. De LED op uw ESP32 zou nu veel sneller moeten knipperen dan voorheen.

Stap 10: Problemen oplossen

Probleemoplossen
Probleemoplossen

Ik ontdekte tijdens mijn testen dat ik soms niet kon uploaden naar de ESP32 terwijl deze was aangesloten op de ESP-prog, en ik kon geen patroon bedenken waarom dit gebeurde, omdat ik meestal kon uploaden zonder enige problemen. Ik ontdekte dat ik de ESP32 en de ESP-Prog gewoon kon loskoppelen, de code naar de ESP32 kon uploaden en ze vervolgens opnieuw kon verbinden en het zou goed werken.

Stap 11: conclusie

Ik denk dat dit een heel coole tool is om toe te voegen aan de toolbox om erachter te komen wat er in je project gebeurt.

Ik hoor graag of je dit nuttig vindt!. Laat het me weten in de reacties hieronder, of sluit je aan bij mij en een aantal andere makers op mijn Discord-server, waar we dit onderwerp of een andere maker-gerelateerde die je hebt kunnen bespreken, mensen zijn daar erg behulpzaam, dus het is een geweldige plek om te hangen uit.

Ik wil ook mijn Github-sponsors enorm bedanken die helpen bij het ondersteunen van wat ik doe, ik waardeer het echt. Als je het niet weet, matcht Github sponsoring voor het eerste jaar, dus als je een sponsoring doet, zullen ze deze de komende maanden 100% matchen. Bedankt voor het lezen!

Aanbevolen: