Publié le 20 février 2023 - par

Tout nouveau : La sonde de débogage Raspberry Pi Debug Probe

Pour déboguer les programmes en C sur Raspberry Pi PICO la méthode consiste à utiliser… un deuxième PICO comme interface avec celui qu’on met au point. La Fondation a bien vu le créneau et a imaginé cette sonde de débogage qui n’est en fait que le Raspberry Pi PICO supplémentaire, équipé de prises pour le relier à l’USB d’un PC ou d’un Raspberry Pi, à l’UART du PICO en test et à la sortie DEBUG de ce même PICO. Ça aura le même usage, simplement ça fait plus professionnel… J’ai reçu la sonde il y a quelque temps, voici sa présentation.

Sonde de débogage Raspberry Pi

Quelques images

La sonde est livrée dans un boîtier en carton (un peu fin à mon goût) de 125x40x30mm.

Le côté de la boîte comporte quelques indications

Les rabats de la boîte informent sur l’utilisation des câbles et sur la correspondance des couleurs avec les signaux.

A l’ouverture complète de la boîte on découvre la sonde elle même, un petit boîtier en plastique translucide de 37x31x10mm.

Sous le support de la sonde se dissimulent un câble USB-A micro-USB… rose frappé du logo Raspberry Pi. Il servira à raccorder la sonde à un PC ou un Raspberry Pi via le port UART.

Détails des différents câbles. Il y a des Dupont mâles et femelles et un raccord mâle-mâle (à droite sur la photo).

La sonde de débogage Pico

A travers le boîtier on aperçoit les composants d’un côté et la face inférieure sans composants, de l’autre.

Une prise micro USB permet de connecter la sonde à une unité centrale

De l’autre côté du boîtier, 2 prises marquées U (UART) et D (débogage) pour raccorder la sonde au SBC en cours de débogage.

Le couvercle est simplement clipsé et s’enlève aisément. La carte est simplement posée sur les 4 petits picots en plastique.

La carte de la sonde de débogage

Une fois sortie de son boîtier, la carte n’est pas vraiment une surprise. C’est un Raspberry Pi PICO  avec son processeur RP2-B2, son bouton BOOTSEL. Simplement au lieu d’utiliser un PICO intermédiaire pour déboguer on aura un outil dédié. Mais bon, ça ressemble bien à un PICO avec les prises pour le relier à une carte à déboguer…

Sur le dessous de la carte pas de composant. Juste le logo Raspberry Pi et une date de fabrication (?) 4522 qui semble indiquer que la carte a été fabriquée début novembre 2022.

Si on connecte la carte uniquement à une prise USB reliée à une unité centrale, la LED située dans l’angle s’illumine.

Une fois la sonde remontée dans son boîtier, la LED d’alimentation est bien visible à travers le boîtier translucide.

Modification pour un PICO

Sur le PICO que je vais utiliser, la prise DEBUG n’est pas câblée. Pour pouvoir l’utiliser, j’ai ajouté 3 pins soudées sur les sorties en bout de carte.

Sous la prise DEBUG sont indiquées les positions des signaux, la masse au centre et l’horloge (CLK) et les data (DIO) de chaque côté. Il suffira de relier ces fils aux fils correspondants de la prise D (DBUG) de la sonde.

 

C’est quoi cette sonde de débogage Raspberry Pi ?

La sonde de débogage Raspberry Pi fournit un pont UART/USB-série et une carte de débogage  tout-en-un peu coûteuse. Elle inclut le matériel et le câblage nécessaires au débogage « plug and play » du Raspberry Pi Pico et d’autres plateformes à base de microcontrôleurs et de microprocesseurs.

La sonde de débogage Raspberry Pi fournit à la fois une interface de débogage série du processeur (par défaut, il s’agit de l’interface ARM Serial Wire Debug) et une interface UART standard. Les deux interfaces utilisent un connecteur de débogage à 3 broches, comme indiqué dans la spécification du connecteur de débogage à 3 broches de Raspberry Pi.

La sonde de débogage Raspberry Pi est fournie sous forme de kit, contenant la sonde dans un boîtier en plastique et un jeu de câbles : un câble USB et trois types différents de câble de débogage pour couvrir la grande majorité des cas d’utilisation.

Bien qu’elle ait été conçue principalement pour être utilisée avec les cibles de débogage Raspberry Pi, la sonde de débogage fournit des interfaces de débogage CMSIS-DAP et UART standard sur USB ; elle peut donc être utilisée pour déboguer d’autres cibles, ou simplement comme un câble USB-UART économique.

La sonde de débogage Raspberry Pi est basée sur un processeur Raspberry Pi Pico et exécute le logiciel open-source Raspberry Pi Picoprobe [https://github.com/raspberrypi/picoprobe].

La mise à jour du firmware s’effectue de la même manière que sur un Raspberry Pi Pico, il est donc simple de maintenir l’unité à jour avec le dernier firmware Picoprobe ou d’utiliser un firmware personnalisé.

Déboguer ? Oui, mais comment ?

Comme l’indique cet article de DigiKey, les instructions print() sont un bon début, mais le débogage pas à pas et la possibilité de jeter un coup d’œil aux valeurs stockées en mémoire sont extrêmement utiles lorsqu’on essaie de trouver des bogues ou de localiser des défauts. On utilise VS Code pour effectuer un débogage pas à pas avec OpenOCD et GDB sur le Raspberry Pi Pico.

OpenOCD : OpenOCD est un outil logiciel libre principalement utilisé pour le débogage sur puce, la programmation système et les tests boundary-scan. OpenOCD supporte le flashage et le débogage d’une grande variété de plateformes dont les processeurs ARM.

GDB : C’est le débogueur du projet GNU, il permet de voir ce qui se passe « à l’intérieur » d’un autre programme pendant qu’il s’exécute – ou ce que faisait un autre programme au moment où il s’est planté. Il peut démarrer votre programme, en spécifiant tout ce qui pourrait affecter son comportement, faire en sorte que votre programme s’arrête dans des conditions spécifiques, examiner ce qui s’est passé, lorsque votre programme s’est arrêté.
Ces programmes peuvent être exécutés sur la même machine que GDB (native), sur une autre machine (remote), ou sur un simulateur. GDB peut fonctionner sur la plupart des variantes populaires d’UNIX et de Microsoft Windows, ainsi que sur Mac OS X.
GDB est le logiciel de débogage qui accepte les commandes de l’utilisateur et contrôle le serveur OpenOCD. Il faut installer une extension dans VS Code qui fournit une interface graphique de débogage avec GDB. Cette interface nous permet de passer d’une ligne de code à l’autre et de consulter les valeurs de la mémoire et des variables en temps réel sur le Pico cible.

Utiliser un PICO pour déboguer… un PICO

On va exécuter un code sur une cible pico. Cependant, au lieu de le charger en utilisant le fichier .uf2, nous allons programmer la cible avec un fichier .elf. Le fichier .elf est un binaire avec notre code compilé, et il contient des informations de débogage supplémentaires utilisées pour nous aider à déboguer pas à pas.

Le Raspberry-Pi Pico dispose d’un port de débogage marqué DEBUG, qui comporte 3 points (SWD). Celui-ci peut être utilisé pour déboguer des programmes en C/C++.

Il faut utiliser un 2ème Raspberry Pi Pico flashé avec PicoProbe.uf2 et réaliser une connexion SWD et UART avec le Pico a déboguer.

Image (c) https://www.digikey.be

En utilisant GDB et OpenOCD il est possible de déboguer son programme C/C++ sur le Pico.

Ce qui donne ceci comme câblage pour les deux PICOs, celui de droite est le PICO CIBLE et celui de gauche est la sonde qui va être remplacée par la sonde Debug Probe de Raspberry Pi.

La sonde Raspberry Pi Debug Probe

La sonde Raspberry Pi Debug Probe correspond au PICO marqué Debugger sur l’image ci-dessus. C’est un Pico « prêt à l’emploi » pour se lancer dans le débogage de son projet C++ plus rapidement : Il expose déjà le connecteur Serie et connecteur SWD qu’il faudra brancher sur le Pico à débogger.

Au minimum c’est un adaptateur USB-Serie en 3.3V 🙂

La sonde Debug Probe est un Pico programmé avec le firmware de la picoprobe. Il suffira de le connecter à notre Pico cible à l’aide du port SWD (serial wire debug). La sonde Debug Probe émulera SWD en utilisant son interface PIO afin d’envoyer des commandes de débogage au Pico cible.

On va également connecter les ports UART afin que le Pico cible puisse envoyer des sorties printf() à l’ordinateur hôte. La sonde Debug Probe fait alors office de convertisseur série/USB.

De plus, la sonde Debug Probe alimentera notre Pico cible en connectant les broches VSYS et GND, de sorte que nous n’aurons qu’à brancher le câble USB dans la picoprobe.

L’ordinateur exécutera une version spéciale d’OpenOCD qui a été compilée pour supporter le Pico. OpenOCD est un serveur qui communique avec les microcontrôleurs/microprocesseurs connectés et aide à télécharger du code et à déboguer.

GDB est le logiciel de débogage qui accepte les commandes de l’utilisateur et contrôle le serveur OpenOCD. Nous allons installer une extension dans VS Code qui nous donne une interface graphique de débogage avec GDB. Cette interface nous permet de passer d’une ligne de code à l’autre et de consulter les valeurs de la mémoire et des variables en temps réel sur le Pico cible.

Transférer picoprobe dans la sonde

Picoprobe est le programme officiel qui transforme un Raspberry Pi PICO en sonde de débogage. On peut transférer le programme comme on le fait d’habitude pour le PICO.

Le programme a été créé dans /pico/picoprobe lorsque vous avez exécuté le script d’installation. Sinon vous trouverez les informations dans le Getting Started du PICO au chapitre Build and flash picoprobe. Le dépôt Github de PicoProbe est accessible par ce lien.

Installer VS Code sur Raspberry Pi

Pour le Raspberry Pi il existe un script qui installe la totalité des outils nécessaires. c’est ce que j’ai utilisé ici. Il installe entre autres VS Code, OpenOCD  et les extensions pour PICO,

Installation des outils de construction

A ma connaissance il n’existe pas d’IDE simple et multiplateforme préinstallé avec le kit SDK Pico, nous devons donc procéder à une installation manuelle. Je vous recommande vivement de lire le chapitre 1 (pour Linux) ou le chapitre 9 (macOS et Windows) du guide Getting Started with Raspberry Pi Pico, qui vous explique les étapes nécessaires à l’installation des différents outils de construction pour la RP2040 (et le Pico).

Les étapes ci-dessous devraient vous permettre d’installer Visual Studio Code (VS Code), minicom et les outils nécessaires pour utiliser le Raspberry Pi PICO.

J’utiliserai pour cet article un Raspberry Pi 4 8Go avec un SSD de 128Go (oui c’en est un qui me reste d’avant la pénurie). Si vous utilisez un Raspberry Pi, Raspbian, ou une autre forme de Debian, ce processus a été facilité avec un script  que vous pouvez exécuter juste avec quelques commandes :

Après quelques (longues) minutes l’installation des outils se termine, rebootez et vous pouvez passer à la suite.

Créer un programme en C avec VS Code

Démarrer VS Code

Après l’installation des outils, VS Code est accessible via le menu Programmation. Cliquez sur Visual Studio Code. J’ai installé le pack langage Français sur ma version de VS Code.

Cliquez pour agrandir

Installer les extensions

Cliquez sur Extensions pour voir celles qui sont installées.

Créez (si ce n’est pas encore fait) un dossier pour ranger vos programmes et créez un fichier en C à l’intérieur.

Créer le fichier en C

Copiez le fichier blink.c dedans. Si votre variable PICO_SDK_PATH n’est pas configurée vous aurez une erreur car les librairies Pico ne sont pas trouvées.

Cliquez sur la roue dentée (Gérer) en bas à gauche, puis sur CMake Tools et ajoutez le chemin dans CMake : Build Environment   et CMake : Configure Environment. Pour moi le SDK est dans /home/pi/pico/pico-sdk.

Compiler le programme C pour Pico

Créez les exécutables (le but ici n’est pas de faire un tuto VS Code / CMake / GCC que je ne saurai sans doute pas faire 😀 , on parle de la sonde Debug !)

Quand les programmes sont disponibles ils sont dans le dossier build. Il y a un fichier blink.elf et un fichier blink.uf2.

Transférer le programme sur le Raspberry Pi PICO cible

Nous allons utiliser le binaire .uf2 pour programmer notre Pico. Notez que les fichiers .elf, .bin et .hex sont également des binaires compilés du même programme. Le fichier .elf contient des informations de débogage supplémentaires qui nous permettront d’effectuer un débogage pas à pas.

La méthode la plus simple pour télécharger le programme compilé consiste à utiliser le chargeur de démarrage UF2 fourni avec le Pico.

Vérifiez que le câble USB n’est pas branché sur votre Raspberry Pi Pico. Appuyez sur le bouton BOOTSEL et maintenez-le enfoncé tout en branchant le câble USB sur le Raspberry Pi Pico. Une fois le câble USB branché, relâchez le bouton BOOTSEL. Le Pico apparait comme un périphérique de stockage nommé RPI-RP2 sur votre ordinateur.

Naviguez jusque dans votre dossier build. Copiez blink.uf2 et collez le fichier dans le  lecteur RPI-RP2. Et là devant vos yeux émerveillés (ou pas) la LED de la carte PICO se met à clignoter.

On peut aussi ouvrir un terminal et afficher les messages envoyés par notre programmeElle est pas belle, la vie ?

Compatibilité avec les Raspberry Pi PICO

La version H (2ème en partant de la gauche) comporte un connecteur directement adapté à la sonde Debug Probe.

Conclusion

Au moment de la sortie de cette sonde, la doc existante concerne picoprobe. Il y aura sans doute des additifs pour ce modèle particulier destiné à remplacer le Raspberry Pi PICO utilisé en sonde de débogage. Il faut admettre que ce genre de matériel est utilisé par les développeurs en C sur des logiciels embarqués et que le maker lambda (dont je fais partie) n’aura pas une utilisation intensive de ce matériel…

Merci à Guillaume de Kubii qui m’a envoyé cette sonde en avant première, ce qui m’a permis de m’amuser avec ce modèle et de commencer à découvrir ses possibilités. J’ai mis dans cet article de quoi commencer à utiliser VS CODE (oui je sais… c’est du Microsoft mais c’est dispo sur le Raspberry Pi… et c’est quand même pratique). Il y aura sans doute des suites pour aller plus loin avec la Debug Probe. Vous pouvez consulter la documentation de la sonde en ligne en cliquant sur ce lien.

Merci à Dominique de McHobby avec qui j’ai échangé sur les possibilités offertes par cette sonde et sur sa mise en œuvre.

Pour acheter la Raspberry Pi Debug Probe :

En France
Chez Kubii : Debug Probe

En Belgique
Chez McHobby : Debug Probe

Sources

Documentation de la sonde
https://www.raspberrypi.com/documentation/microcontrollers/debug-probe.html

Logiciel PicoProbe
https://github.com/raspberrypi/picoprobe

Clignotement LED Pico en C
https://www.digikey.be/en/maker/projects/raspberry-pi-pico-and-rp2040-cc-part-1-blink-and-vs-code/7102fb8bca95452e9df6150f39ae8422

Debug programme clignotement Pico
https://www.digikey.be/en/maker/projects/raspberry-pi-pico-and-rp2040-cc-part-2-debugging-with-vs-code/470abc7efb07432b82c95f6f67f184c0

Utiliser le Pico en sonde de debogage
https://mcuoneclipse.com/2022/09/17/picoprobe-using-the-raspberry-pi-pico-as-debug-probe/

Démarrer avec le Raspberry Pi PICO
https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf

Erreur DAP init Failed avec 2 PICO
https://aricodes.net/posts/picoprobe-dap-init-failed/

 

 

 

 

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

Une réflexion au sujet de « Tout nouveau : La sonde de débogage Raspberry Pi Debug Probe »

  1. Ping : Sonde de débogage Raspberry Pi : un kit de débogage plug-and-play pour moins de 15€. - Framboise 314, le Raspberry Pi à la sauce française....

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.