Table des matières:
- Étape 1: Avantages logiciels
- Étape 2: Installation et configuration du pilote
- Étape 3: OpenOCD, Toolchain et Gdb
- Étape 4: Câblage et premier test
- Étape 5: ajouter la configuration de débogage au code Visual Studio
Vidéo: ESP32 - Solution bon marché pour le débogage en circuit : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Bonjour, dans cette instructable est décrit comment configurer un adaptateur JTAG bon marché basé sur la puce FTDI 2232HL, avec code visuel et addon arduino.
- Module FTDI 2232HL avec connecteur USB à partir de 8$ sur ebay et aucun logiciel payant n'est requis. C'est une excellente solution pour les amateurs qui ne veulent pas dépenser plus de 50 $ sur un adaptateur JTAG professionnel.
- Cet adaptateur peut être utilisé pour le débogage d'autres plates-formes telles que ESP8266, ARM, AVR et bien d'autres. Certaines configurations dépendent de la plate-forme cible, cette instruction ne couvre que la configuration pour ESP32.
- Si vous possédez déjà un adaptateur JTAG, vous pouvez l'utiliser lorsqu'il est pris en charge par openOCD, démarrez simplement openocd avec un fichier de configuration différent en fonction du type de votre adaptateur jtag.
- platform.io peut vous faciliter la configuration, mais le débogage n'est pris en charge que dans la version professionnelle payante.
- Fonctionne avec la plupart des modules ESP32. (par exemple wemos lolin 32 pas cher)
- cet adaptateur jtag devrait également fonctionner avec Linux, mais personnellement je ne l'ai pas testé.
Étape 1: Avantages logiciels
Arduino IDE version 1.8 ou plus récente. La version du magasin Windows n'est pas prise en charge. Vous devez utiliser la version d'installation classique qui peut être téléchargée à partir de la page officielle Arduino
Code du studio visuel Microsoft
Ces addons pour le code du studio visuel sont obligatoires
- Arduino
- Débogage natif
Je recommande également d'installer cet addon qui active intelisense pour C/C++
C/C++
Dans ce manuel, j'utiliserai 2 dossiers de travail:
D:\devel\ESP32\tools\ - ici j'ai placé tous les outils
C:\Users\xxxxx\Documents\Arduino\YourProject\ - il s'agit d'un dossier avec un croquis
vous pouvez placer vos fichiers n'importe où ailleurs si vous le souhaitez, n'oubliez pas de mettre à jour toutes les références avec votre chemin actuel.
Étape 2: Installation et configuration du pilote
Même si Windows détecte automatiquement le FT2232 par défaut, les pilotes par défaut de Windows ne suffisent pas pour toutes les fonctionnalités avancées et il est nécessaire de télécharger et d'installer le pilote à partir du site FTDI
Lorsque le bon pilote est installé, vous devriez voir votre module FT2232 dans le gestionnaire de périphériques non seulement comme 2 ports série, mais aussi comme "convertisseur série USB A" et "convertisseur série USB B"
La deuxième étape consiste à changer de pilote pour un canal de notre convertisseur. Téléchargez l'outil zadig sur https://zadig.akeo.ie/. Si je comprends bien, cet outil relie le pilote winUSB au périphérique FTDI, ce qui permet une communication de bas niveau entre openOCD et le périphérique USB.
Dans l'outil zadig, dans le menu "Options", cochez "Afficher tous les appareils", puis vous devriez voir votre adaptateur dans la liste des appareils disponibles. Sélectionnez "Dual RS232-HS (Interface 0)", puis sélectionnez le pilote de remplacement "WinUSB v6.1.xxxx" et enfin cliquez sur le bouton Remplacer le pilote.
Lorsque vous connectez votre adaptateur à un autre port USB de votre ordinateur, il est nécessaire de modifier à nouveau les paramètres du pilote via l'outil zadig, sinon openOCD ne trouvera pas votre adaptateur.
Étape 3: OpenOCD, Toolchain et Gdb
1. Open OCD est un outil de débogage en circuit, d'un côté il parle à la puce de l'autre côté il fournit un serveur gdb où le débogueur (client) peut se connecter. Téléchargez openOCD pour ESP32 à partir de https://github.com/espressif/openocd-esp32/releases et décompressez-le dans le dossier D:\devel\ESP32\tools
2. éditez les fichiers de configuration openOCD:
esp-wroom-32.cfg
Le chemin complet de ce fichier est:
D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\board\esp-wroom-32.cfg
Dans ce fichier, vous pouvez définir la vitesse de communication en modifiant le paramètre "adapter_khz". Par exemple, "adapter_khz 8000" signifie 8Mhz.
La valeur par défaut est 20 MHz et elle peut être trop élevée si vous utilisez des câbles de démarrage ou une planche à pain plus longs. Je recommande de commencer à 1Mhz et si tout va bien, passez à une vitesse plus élevée, pour moi 8Mhz fonctionne de manière fiable.
minimodule.cfg
Le chemin complet vers ce fichier est: D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\interface\ftdi\minimodule.cfg
Si je comprends bien, le minimodule authentique est une carte de freinage trop chère avec le FT 2232 fabriqué par FTDI et la seule différence entre le minimodule authentique et le module bon marché ou la puce nue disponible sur le marché est la description USB par défaut. open OCD recherche un adaptateur jtag basé sur la description de l'appareil, la mise en page init doit également être ajustée.
Le module bon marché a la description "Dual RS232-HS". Si vous n'êtes pas sûr de la description de votre appareil, vous pouvez la vérifier dans le gestionnaire de périphériques -> propriétés de l'appareil -> détails de l'onglet -> valeur de la propriété "Description de l'appareil signalée par le bus"
Le contenu de minimodule.cfg devrait ressembler à l'exemple ci-dessous, les lignes commençant par # peuvent être supprimées.
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 ftdi_layout_signal 0x0020ST
esp32.cfg
Le chemin complet de ce fichier est:
D:\devel\ESP32\tools\openocd-esp32\share\openocd\scripts\target\esp32.cfg
Ajoutez les 2 lignes suivantes à la fin de esp32.cfg. Sans cette modification, l'ajout de points de freinage ne fonctionnera pas.
#Forcer les points d'arrêt matériels. Une fois que nous avons une carte mémoire, nous pouvons également autoriser le logiciel bps.gdb_breakpoint_override hard
3. Téléchargez et installez la chaîne d'outils xtensa-esp32-elf - cette chaîne d'outils contient un débogueur en ligne de commande (client gdb) qui est essentiel pour que le débogage fonctionne à partir de n'importe quel IDE graphique. La chaîne d'outils nue peut être téléchargée sur le site espressif, section "Configuration alternative"
Étape 4: Câblage et premier test
Connectez le module FT2322 avec ESP. Je recommande d'utiliser des fils aussi courts que possible. Si vous êtes nouveau sur JTAG, n'oubliez pas que le TDI de l'adaptateur ira au TDI de la puce, le TDO de l'adaptateur ira également au TDO de la puce. Les lignes de données JTAG NE SONT PAS CROISÉES comme Rx/Tx sur uart !
Pour le test suivant, je recommande de télécharger un exemple de croquis clignotant ou un autre croquis qui peut indiquer quand le processeur est en cours d'exécution ou non en faisant clignoter la LED ou en émettant un bip ou en écrivant sur la console série.
Démarrez openOCD en suivant la commande
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 carte /esp-wroom-32.cfg
Cela démarrera openOCD et si tout va bien, vous devriez voir que la sortie de la ligne de commande contient les lignes suivantes:
Info: vitesse d'horloge 8000 kHzInfo: prise JTAG: esp32.cpu0 prise/appareil trouvé: 0x120034e5 (mfg: 0x272 (Tensilica), partie: 0x2003, ver: 0x1) Info: prise JTAG: esp32.cpu1 prise/appareil trouvé: 0x120034e5 (mfg: 0x272 (Tensilica), partie: 0x2003, ver: 0x1)
Le processus openocd écoutera également sur le port TCP 3333
Ouvrez un nouveau terminal et démarrez le client gdb en ligne de commande en suivant la commande
D:\devel\ESP32\tools\xtensa-esp32-elf\bin\xtensa-esp32-elf-gdb.exe
Attendez une seconde et lorsque le terminal gdb sera prêt, écrivez les commandes suivantes une par une
cible distante:3333mon réinitialiser arrêter continuer
la première commande ouvre la connexion au serveur de débogage openocd, la seconde arrête l'exécution du programme sur ESP et le voyant doit cesser de clignoter, continue de restaurer l'exécution du programme et le voyant doit recommencer à clignoter.
Étape 5: ajouter la configuration de débogage au code Visual Studio
Je suppose qu'à ce stade, vous avez déjà configuré le code Visual Studio et l'addon arduino correctement et vous pouvez vérifier et télécharger votre croquis sur le tableau. Sinon, veuillez vérifier quelques instructions sur la façon de configurer le code Visual Studio et Arduino, par exemple sur cette page
Pour que le débogage fonctionne, il est nécessaire de spécifier le dossier de sortie de génération. Sous votre dossier de croquis, il y a le dossier (caché).vscode, où se trouve le fichier arduino.json. ajoutez à ce fichier la ligne suivante:
"output": "BuildOutput/"
exécutez vérifier ou téléchargez et vérifiez à nouveau votre dossier d'esquisse, il devrait y avoir un nouveau dossier BuildOutput et à l'intérieur un fichier avec l'extension.elf. elf est vital pour le débogage.
Les paramètres du débogueur se trouvent dans le fichier launch.json. Créez ce fichier avec le contenu suivant, ou vous pouvez copier ce fichier à partir de l'exemple de projet joint. N'oubliez pas d'ajuster la ligne 26 et de définir le chemin correct vers votre fichier.elf de projet.
{ // Utilisez IntelliSense pour en savoir plus sur les attributs possibles. // Survolez pour afficher les descriptions des attributs existants. // Pour plus d'informations, visitez: 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 dynamique "text": "file c:/Users/xxxxx/Documents/Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf" //variante statique //"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": }] }
Comment démarrer le débogage:
- Conformez-vous et téléchargez votre croquis sur le tableau
- Démarrer openOCD avec des paramètres
- Définissez des points de freinage dans le code où vous le souhaitez
- Après avoir défini tous les points d'arrêt, assurez-vous d'avoir ouvert le fichier.ino principal de votre projet. (ou chemin du code dur vers le fichier.elf dans launch.json)
- Ouvrir le panneau de débogage dans vs code (Ctrl + Shift + D)
- Sélectionnez le débogueur "Arduino-GDB-openOCD", ne devrait être disponible que.
- Appuyez sur F5 pour démarrer le débogage
Conseillé:
Hub NMEA/AIS bon marché -- Pont RS232 vers Wifi pour une utilisation à bord : 6 étapes
Hub NMEA/AIS bon marché -- Pont RS232 vers Wifi pour une utilisation à bord : mise à jour du 9 janvier 2021 - Ajout d'une connexion TCP supplémentaire et réutilisation de la dernière connexion si plus de clients se connectentMise à jour du 13 décembre 2020 - Ajout d'une version sans configuration du code pour les bateaux avec des routeurs existantsIntroductionCe NMEA / Le pont AIS RS232 vers WiFi est
Châssis de réservoir de robot acrylique bon marché pour Arduino SN7300 Sinoning: 6 étapes
Châssis de réservoir de robot acrylique bon marché pour Arduino SN7300 Sinoning: Châssis de réservoir acrylique bon marché pour Arduino SN7000 Sinoningacheter à partir de: RÉSERVOIR DE ROBOT SINONING
Ordinateur bon marché pour naviguer sur Internet : 8 étapes
Ordinateur bon marché pour naviguer sur Internet : J'ai mis l'ordinateur bon marché dans l'atelier d'accès à Internet. Les cartes avec un processeur Intel Atom ont tendance à être vraiment bon marché et serviront bien notre objectif. J'ai acheté une carte au format mini ITX intel D525MW qui a un slot pour mini carte PCI Express et une mémoire DDR3
Caméra de casque contrôlée par PIC bon marché utilisant Sony LANC (bon pour les sports extrêmes): 4 étapes
Caméra de casque contrôlée par PIC bon marché utilisant Sony LANC (bon pour les sports extrêmes): Ce Instructable vous montrera comment faire une caméra de casque bon marché qui peut être contrôlée via une télécommande afin que votre caméra principale puisse rester en toute sécurité dans votre sac à dos. Le contrôleur peut être attaché à l'une des bretelles de votre sac à dos, et wi
Un circuit LED clignotant facile à réaliser, bon marché et simple avec CMOS 74C14 : 5 étapes
Un circuit LED clignotant facile à réaliser, bon marché et simple avec CMOS 74C14 : Parfois, vous avez simplement besoin de LED clignotantes, pour la décoration de Noël, des œuvres d'art clignotantes ou simplement pour vous amuser avec le clignotement clignotant. Je vais vous montrer comment faire un circuit simple et bon marché avec jusqu'à 6 LED clignotantes. Remarque : Ceci est mon premier instuctable et