Récemment, lors de l'écriture d'une bibliothÚque pour ESP-32, il y avait un besoin d'attraper des blocages, ce qui s'est parfois produit en raison de ma courbure, ce qui a donné lieu à la nécessité d'acheter une carte de débogage avec une interface JTAG. Ce qui en est ressorti - lu sous la coupe.
Appareils et matériaux
Notre personnage principal, ou plutÎt, le but du débogage:

Carte basée sur la puce ESP-WROOM-32. Je ne donnerai pas de lien, car à cet endroit tout a déjà été acheté.
Maintenant - la carte de dĂ©bogage elle-mĂȘme:


CJMCU FT232H
Je n'ai pas pris la peine et commandé sur aliexpress pour 740,08 roubles. avec livraison ePacket. Les frais sont livrés avec des jambes soudées, ce qui n'est qu'à portée de main, car nous n'en avons pas besoin.
Un ensemble de fils, 6 piÚces: une extrémité à souder, l'autre à ESP-32.
Je recommande également fortement une rallonge USB, sans laquelle elle sera serrée ...
Ordinateur avec (X) Ubuntu 18.04.
Personnalisation
Installer OpenOCD pour ESP-32
Ici, vous pouvez vous rĂ©fĂ©rer en toute sĂ©curitĂ© aux quais de esp-idf lui-mĂȘme:
sudo apt-get install make libtool pkg-config autoconf automake texinfo libusb-1.0 libftdi1-2 git git clone --recursive https://github.com/espressif/openocd-esp32.git
Je note séparément que j'ai installé cette version d'OpenOCD dans le systÚme ( sudo make install
), ce qui est inacceptable lorsque vous avez différents OpenOCD pour différents appareils.
Personnaliser OpenOCD pour nous
Ă ce stade, j'ai divisĂ© la configuration de la carte de dĂ©bogage et l'ESP-32 lui-mĂȘme. Il s'est avĂ©rĂ© comme ceci:
board.cfg:
transport select jtag adapter_khz 20000 # # set ESP32_ONLYCPU 1 # # set ESP32_RTOS none # RTOS source [find target/esp32.cfg]
interface.cfg:
interface ftdi ftdi_vid_pid 0x0403 0x6014 ftdi_layout_init 0x0c08 0x0f1b
Ăcrire une rĂšgle Udev
En raison de problĂšmes de droits, nous ne pourrons pas accĂ©der au pĂ©riphĂ©rique USB. Cela peut ĂȘtre corrigĂ© avec une ligne de la rĂšgle udev:
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6014", GROUP="plugdev", MODE="0666"' | sudo tee /etc/udev/rules.d/99-JTAG.rules sudo systemctl restart udev.service sudo udevadm control --reload-rules
Script d'aide
Entre autres choses, un script comme celui-ci est trĂšs pratique:
openocd_command:
Il vous permettra d'envoyer rapidement des commandes directement au démon OpenOCD. Mais plus à ce sujet plus tard.
Nous connectons la carte CJMCU Ă l'ESP-32
Ici, nous avons besoin de fils et d'un fer à souder, sans cela en aucune façon. Le tableau ci-dessous montre à quoi se connecter et pourquoi.
Ă propos de VIN et 3V3
Si vous ne souhaitez pas tirer un cùble séparé de l'ordinateur vers le kit de développement ESP-32, vous pouvez connecter + 5V au VIN. Le firmware passera par JTAG, ce qui, comme l'expérience personnelle l'a montré, est beaucoup plus rapide. Un inconvénient de cette option est qu'il n'est pas possible de regarder le journal UART, mais à mon humble avis le débogueur supprime complÚtement la nécessité de cette action.
Comme indiquĂ© dans les commentaires, il n'est pas possible de fournir 5V Ă l'ESP-32 lui-mĂȘme, uniquement aux devkits. Si vous devez dĂ©boguer une puce distincte, vous pouvez l'alimenter Ă partir du convertisseur CJMCU lui-mĂȘme en connectant + 3,3 V sur celle-ci Ă 3 V3 sur l'ESP-32. Mais je ne peux rien dire si le convertisseur a suffisamment de puissance, il vaut mieux prendre une source d'alimentation sĂ©parĂ©e. Et oui, connecter 5V et 3,3V en mĂȘme temps n'en vaut pas la peine.
Dans ce cas, connectez toujours GND!
Vérification d'OpenOCD
Exécutez OpenOCD comme ceci:
openocd -s ' interface.cfg board.cfg' -f interface.cfg -f board.cfg
Si tout s'est bien passé, ils vous montreront quelque chose comme ceci:
Open On-Chip Debugger 0.10.0-dev (2018-08-22-14:47) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html adapter speed: 20000 kHz esp32 interrupt mask on Info : ftdi: if you experience problems at higher adapter clocks, try the command "ftdi_tdo_sample_edge falling" Info : clock speed 20000 kHz Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1) Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1) Info : esp32: Debug controller was reset (pwrstat=0x5F, after clear 0x0F). Info : esp32: Core was reset (pwrstat=0x5F, after clear 0x0F). Info : Detected debug stubs @ 3ffb3134 on core0 of target 'esp32' cpu0: Current bits set: BreakIn BreakOut RunStallIn cpu1: Current bits set: BreakIn BreakOut RunStallIn
Cela suggÚre que tout a fonctionné!
Important : Le processus OpenOCD doit tourner tout le temps pendant que vous déboguez.
Activer Eclipse
Il y a un certain nombre d'étapes qui sont magnifiquement décrites dans la documentation officielle , et je ne les répéterai pas.
Conseils de débogage Eclipse
Oubliez le bouton EN et réinitialisez sur la carte. Redémarrez uniquement via "Terminer et relancer".
Pour l'utilisation du firmware
openocd_command 'program_esp32 _/.bin 0x10000 verify'
Vous pouvez l'ajouter en tant que cible de openocd_command
définissant openocd_command
commande personnalisée et entrer des arguments (sans guillemets) dans le champ "nom cible".
Il se peut que vous n'obteniez pas ce que vous attendiez aprĂšs l'arrĂȘt et la reprise. Ma bibliothĂšque pour jouer du son aprĂšs ça bavarde comme un fou Ă cause des blagues avec une minuterie.
Sur ce, mon expĂ©rience actuelle avec ce systĂšme se termine. Je vous souhaite un dĂ©bogage fructueux (nous serons honnĂȘtes, il ne se trouve pas que ce soit agrĂ©able)!