Inhoudsopgave:
- Benodigdheden
- Stap 1: Bekijk de video
- Stap 2: Hardware - Onderdelen en bedrading
- Stap 3: Hardware - Driver instellen
- Stap 4: Software: PlatformIO installeren
- Stap 5: Software: PlatformIO gebruiken
- Stap 6: Debuggen: potentiële bananenschil
- Stap 7: Foutopsporing: Configuratie
- Stap 8: Foutopsporing: foutopsporing starten
- Stap 9: Foutopsporing: basisgebruik
- Stap 10: Problemen oplossen
- Stap 11: conclusie
Video: Een debugger gebruiken op een ESP32: 11 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
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
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
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
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.
- 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.
- Download en installeer de tool Zadig vanaf hier, hierdoor kunnen we een generieke driver installeren die nodig is voor debuggen.
- Met de ESP-Prog aangesloten, open Zadig
- Klik in de Zadig-applicatie onder "Opties" op "Alle apparaten weergeven"
- De vervolgkeuzelijst in Zadig wordt nu gevuld, selecteer de optie "Dual RS232-HS (Interface 0)". Zorg ervoor dat u interface 0 selecteert!
- 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
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
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:
- Klik op de Home-knop op de PlatformIO-werkbalk (zoals weergegeven in de afbeelding)
- Klik op de knop "Projectvoorbeelden"
- 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
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.
- Klik op de PlatformIO-werkbalk op het terminalpictogram
- In het terminaltype: pio upgrade --dev
- RestartVS-code en PlatfromIO moeten worden bijgewerkt
Stap 7: 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
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.
- Maak een nieuwe variabele, "int delayTime = 1000;" buiten alle methoden, zal dit het een globale variabele maken.
- 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
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
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:
Infraroodsensor gebruiken met Arduino 8 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Infraroodsensor gebruiken met Arduino: wat is een infraroodsensor (ook bekend als IR-sensor? Een IR-sensor is een elektronisch instrument dat IR-signalen scant in specifieke frequentiebereiken die zijn gedefinieerd door normen en deze omzet in elektrische signalen op de uitgangspin (meestal signaalpin genoemd) . Het IR-signaal
Een computer demonteren met eenvoudige stappen en afbeeldingen: 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een computer demonteren met eenvoudige stappen en afbeeldingen: dit is een instructie over het demonteren van een pc. De meeste basiscomponenten zijn modulair en gemakkelijk te verwijderen. Wel is het belangrijk dat je er goed over georganiseerd bent. Dit zal helpen voorkomen dat u onderdelen kwijtraakt, en ook bij het maken van de hermontage e
Een batterijklok op zonne-energie gebruiken: 15 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe een batterijklok op zonne-energie te laten draaien: Deze bijdrage volgt op een eerdere in 2016 (zie hier), maar in de tussenliggende periode zijn er ontwikkelingen geweest in componenten die het werk veel gemakkelijker maken en de prestaties verbeterden. De hier getoonde technieken zullen een zonne-energie
Hoe een fysiek boek om te zetten in een e-boek? 7 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe zet ik een fysiek boek om in een e-boek?: Als student met als hoofdvak Scheikundige Technologie heb ik meestal bulktekstboeken, technische boeken en aantekeningen om te scannen (soms af te drukken). Ik ben al een tijdje op zoek naar een efficiënte boekscanner, maar de meeste zijn duur, extreem groot. Binnenkort
Hoe de Instructables IRC-chatroom te gebruiken! 6 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe de Instructables IRC-chatroom te gebruiken!: Vóór de implementatie van de Meebo-chatroom, waar de meesten van jullie in zijn geweest of van hebben gehoord, had Instructables een IRC-chatroom. De meebo-kamer heeft ons goed gediend, maar is beperkt, heeft veel gebreken, en verzandt de meeste gemiddelde computersystemen. IRC-ka