Table des matières:

ESP32 - Solution bon marché pour le débogage en circuit : 5 étapes
ESP32 - Solution bon marché pour le débogage en circuit : 5 étapes

Vidéo: ESP32 - Solution bon marché pour le débogage en circuit : 5 étapes

Vidéo: ESP32 - Solution bon marché pour le débogage en circuit : 5 étapes
Vidéo: Programmation ESP32 S3 et Photovoltaique 2024, Juillet
Anonim
ESP32 - Solution bon marché pour le débogage en circuit
ESP32 - Solution bon marché pour le débogage en circuit

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

Installation et configuration du pilote
Installation et configuration du pilote
Installation et configuration du pilote
Installation et configuration du pilote
Installation et configuration du pilote
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

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

Câblage et premier test
Câblage et premier test
Câblage et premier test
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

Ajouter une configuration de débogage au code Visual Studio
Ajouter une 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:

  1. Conformez-vous et téléchargez votre croquis sur le tableau
  2. Démarrer openOCD avec des paramètres
  3. Définissez des points de freinage dans le code où vous le souhaitez
  4. 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)
  5. Ouvrir le panneau de débogage dans vs code (Ctrl + Shift + D)
  6. Sélectionnez le débogueur "Arduino-GDB-openOCD", ne devrait être disponible que.
  7. Appuyez sur F5 pour démarrer le débogage

Conseillé: