Hier, parallèlement à l’annonce par Raspberry Pi de leur nouveau 12 $ Debug Probe, j’en ai reçu un par courrier (photo ci-dessus).
Le Debug Probe est alimenté par un RP2040, et vous permet de vous connecter de l’USB à l’UART (série) ou au SWD (Serial Wire Debug), parfait pour déboguer la plupart des appareils intégrés.
UART est utile pour se connecter à la console d’un appareil lorsque vous n’avez pas d’écran ou d’autres moyens de le contrôler, et vous pouvez trouver des ports UART/série/console sur presque tous les appareils dotés d’un processeur ou d’un microcontrôleur.
SWD est utile lors du débogage des SoC ARM, comme le RP2040 utilisé sur le Raspberry Pi Pico. Je l’ai également utilisé dans le passé lors de la mise à jour du firmware de mon Turing Pi 2, qui utilisait une autre puce ARM pour exécuter son BMC, ou Board Management Controller.
Traditionnellement, vous pouviez trouver des adaptateurs USB vers UART avec différents niveaux de support pour quelques dollars jusqu’à des dizaines de dollars, mais en regardant dans mon bac UART, je pense que je couvre certains des adaptateurs sans marque les plus populaires que de nombreux nerds de l’électronique pourraient avoir :
Le Debug Probe ajoute SWD et dispose d’un port séparé pour cela, il est donc également en concurrence avec les appareils SWD comme cette contrefaçon du SEGGER J-Link BASE Debugger, qui coûte 500 $ !
Le SEGGER EDU peut être acheté pour un usage éducatif et non commercial pour 70 $, mais cela reste un prix assez élevé à payer pour entrer dans le jeu de débogage SWD.
Donc, pour un total de 12 $ pour la sonde de débogage de Pi, que voulez-vous obtenez ?
Ce que vous obtenez dans et sur la boîte
Beaucoup de gens demandent”pourquoi achèteriez-vous Raspberry Pi alors qu’il existe un millier de contrefaçons à l’étranger qui sont la moitié du prix?”
Eh bien, ouvrons la sonde de débogage et je vais vous montrer une bonne raison : sous le couvercle, vous êtes accueilli avec une illustration simple, expliquant le but des accessoires inclus et le brochage pour les fils de dérivation inclus.
C’est cet ajout fantaisiste et simple qui rend le travail avec les produits Pi encore plus agréable. De nombreux autres appareils sont livrés dans un sac antistatique ou simplement jetés dans un sac en plastique scellé. Et vous comptez souvent sur les articles de blog ou les notes au bas d’une page de produit Adafruit pour commencer à l’utiliser.
Si je me dirige vers le Page produit Debug Probe il y a des images détaillées et une documentation complète et facile à digérer !
Mais après avoir ouvert ces rabats de documentation, il y a la sonde de débogage, dans son joli petit boîtier translucide à encliqueter :
Et cela mis à part, les câbles sont soigneusement rangés en dessous :
C’est un peu ennuyeux que Pi soit bloqué avec micro USB sur cette carte:
L’USB-C est maintenant assez standard sur une variété d’appareils intégrés, donc avoir un autre appareil qui nécessite de s’accrocher à un câble micro USB est un peu ennuyeux. Peut-être qu’ils feront une v2 avec USB-C une fois qu’ils auront traversé l’offre massive de ports micro USB et de câbles qu’ils ont autour. Au moins, ils l’utilisent de manière cohérente sur les produits « intégrés » et de faible puissance (Pico, Zero, Debug Probe et Keyboard).
Débogage UART série
Depuis que je Je ne suis pas configuré pour déboguer quoi que ce soit de particulier sur un Pico actuellement, et certaines de mes autres cartes basées sur ARM sont emballées en ce moment, je voulais tester rapidement la sonde sur un Raspberry Pi, juste pour vérifier si je peux voir sa console sortie via UART (voir mon article plus ancien qui va plus en profondeur sur le débogage UART/série sur le Raspberry Pi).
J’ai branché la boîte aux broches appropriées sur le Pi 4—Noir à GND, Orange vers GPIO 14/broche 8 (UART TX, et jaune vers GPIO 15/broche 10 (UART RX) :
Ensuite, j’ai branché la sonde sur le port USB de mon Mac et exécuté lsusb, et vu:
Bus 002 Device 001 : ID 2e8a:000c 2e8a Debug Probe (CMSIS-DAP) Serial : E6616407E330212C
Un bon premier signe. Debug Probe a une LED rouge vif qui s’allume lorsqu’elle est alimentée, ce qui est agréable :
J’ai aussi regardé à l’intérieur de/dev et j’ai trouvé le périphérique/dev/tty.usbmodem2102. J’ai ouvert CoolTerm et défini le port sur usbmodem2102 et le débit en bauds sur 115200. Ensuite, après m’être assuré que le Pi avait enable_uart=1 configuré dans son fichier/boot/config.txt, j’ai redémarré le Pi et regardé CoolTerm :
Ça marche !
Pour faciliter un peu le travail sur la connexion série, J’ai également défini le”mode brut”pour le mode terminal de CoolTerm, désactivé”l’écho local”et défini le paramètre d’émulation de la touche d’entrée sur”CR”afin de ne pas obtenir de lignes en double lorsque j’appuie sur Entrée.
Débogage d’un Pico
Comme je l’ai mentionné plus tôt, je n’ai aucun projet Pico actif sur lequel je pourrais puiser avec SWD et je n’ai pas eu le temps de mettre en place une démonstration. J’espère que la documentation de Raspberry Pi est solide.
Mais je voulais souligner une différence matérielle entre le Pico et le Pico W :
Le Pico les en-têtes sont situés sur le bord de la carte, tandis que les en-têtes du Pico W sont situés vers le milieu, très près de la puce RP2040.
Raspberry Pi vend la version que j’ai illustrée, ou des variétés’H’avec pré-soudées En-têtes JST—voir les 2e et 4e images de cette série sur le site Web de Pi :
Si vous avez la version sans les en-têtes, il peut être plus facile de souder sur certains en-têtes mâles, puis d’utiliser l’adaptateur de broche femelle. Bien que vous puissiez trouver un en-tête traversant JST, vous pouvez souder les broches sur les cartes non-H.
Conclusion
Outre le SEGGER J-Link, il existe d’autres appareils capables de SWD, au moins, qui ne cassera pas la banque :
Black Magic Probe (75 $) : est probablement la chose la plus proche de la sonde de débogage, dans l’esprit. C’est un peu cher mais vous donne JTAG en plus de SWD, et a beaucoup de support testé pour divers SoC-la sonde de débogage prend officiellement en charge les appareils Pi comme le Pico, pas tout sous le soleil. Bâton de programmation SAMD11C SWD (OSHW) : il s’agit d’un périphérique matériel open source que vous pouvez créer vous-même, si vous alors choisissez. Programmeur et débogueur SWD (15 $) : Juste SWD, mais néanmoins une petite alternative bien rangée.
En fin de compte, je suis heureux de jeter cette sonde de débogage dans ma corbeille avec mes autres sondes. Le fait qu’elle fonctionne sur un RP2040 lui-même signifie que le micrologiciel sera maintenu et mis à jour au fil du temps. Et il est probable que de nombreux bogues de compatibilité seront résolus, de sorte que la sonde de débogage obtiendra beaucoup de kilométrage pour un appareil à 12 $ !
Comme j’ai passé sous silence le support SWD, je n’ai même pas mentionné le logiciel actuel côté utilisant OpenOCD.
Pour en savoir plus sur SWD et OpenOCD, consultez ces articles :