Débogueurs matériels intégrés : outils et conseils

Dans le développement de systèmes embarqués et de logiciels MCU, les ingénieurs utilisent fréquemment des débogueurs pour déboguer les programmes. Cela permet de localiser et de réduire le nombre d'erreurs dans les programmes des microcontrôleurs, afin qu'ils fonctionnent comme prévu. Le débogage des programmes de microcontrôleurs peut parfois s'avérer difficile, car même des modifications mineures dans un module du système peuvent entraîner des erreurs dans un autre sous-système. De plus, les outils de débogage utilisés dans le développement de microcontrôleurs varient considérablement en termes de temps de développement et de capacités de débogage. Cet article présente principalement les types courants de débogueurs pour microcontrôleurs et leur utilisation.

Qu'est-ce qu'un débogueur matériel ?

Un débogueur matériel est un outil qui communique avec un microcontrôleur via une interface de débogage, lui permettant d'exécuter, de mettre en pause, d'observer et même de modifier l'état du processus. En d'autres termes, un débogueur est un dispositif qui traduit les commandes envoyées par un PC (par exemple via le protocole USB) dans un langage compris par le microcontrôleur (tel que le protocole SWD ou JTAG), charge le code et contrôle précisément l'exécution.

Types de débogueurs

Le développement de logiciels embarqués repose largement sur les débogueurs et les programmeurs, qui permettent de détecter et de corriger les bogues des programmes, d'effectuer la programmation des microcontrôleurs, etc. La plupart des fabricants de semi-conducteurs ou de puces développent des débogueurs pour leurs propres microcontrôleurs afin d'améliorer leurs écosystèmes de produits. Il existe donc différentes classifications sur le marché, notamment les débogueurs J-Link, les émulateurs U-Link, les débogueurs ST-LINK et les programmeurs.

J-Link

J-Link est un débogueur basé sur JTAG lancé par la société allemande SEGGER. En termes simples, il s'agit d'un boîtier de conversion de protocole JTAG, un petit boîtier de conversion USB-JTAG qui se connecte à un ordinateur via une interface USB et aux composants internes de la carte cible à l'aide du protocole JTAG. Il effectue la conversion du logiciel vers le matériel.

csm j link pro 500 7d8323fcda
J-Link (Crédit image : SEGGER)

I-jet Trace

I-jet Trace, commercialisé par IAR Systems, est un puissant outil de débogage et de traçage de code équipé d'un grand cache d'instructions et prenant en charge le protocole de communication haut débit USB 3.0. I-jet Trace prend en charge tous les cœurs de la série ARM Cortex-M équipés du module Embedded Trace Macrocell (ETM), y compris le dernier cœur Cortex-M7. En traçant chaque instruction exécutée, ETM permet aux développeurs d'observer en profondeur le comportement d'exécution du microcontrôleur, révélant ainsi des bogues importants qui peuvent être difficiles à détecter avec les méthodes de débogage classiques.

ijettrace
I-jet Trace (Crédit image : IAR System)

U-LINK

ULINK est un débogueur/émulateur introduit par ARM/KEIL. Actuellement, des versions améliorées telles que les émulateurs ULINK2 et ULINK Pro sont disponibles. ULINK/ULINK2 peuvent être utilisés avec le logiciel Keil pour activer les fonctions d'émulation et sont principalement compatibles avec le logiciel Keil. Ils prennent en charge le débogage par câble série (SWD), l'horloge de retour, la trace en temps réel et d'autres fonctionnalités. Les ingénieurs de développement peuvent facilement effectuer un débogage sur puce (à l'aide de JTAG, SWD et OCDS sur puce) et une programmation flash lorsqu'ils utilisent le débogueur RealView MDK en combinaison avec ULINK2.

ulink2
Débogueur U-Link (Crédit image : Keil)

CMSIS-DAP

CMSIS-DAP peut être divisé en deux parties : CMSIS et DAP. CMSIS signifie ARM Cortex-M Software Interface Standard, tandis que DAP signifie Debug Access Port. CMSIS-DAP est une implémentation firmware d'un dispositif de débogage USB. Le logiciel de débogage exécuté sur l'ordinateur hôte communique avec le dispositif de débogage via une interface USB, permettant ainsi le débogage des logiciels d'application exécutés sur le microcontrôleur cible. Le débogueur CMSIS-DAP se connecte au dispositif cible via JTAG ou SWD. Les processeurs ARM Cortex fournissent des unités Core Sight Debug et Trace. Les débogueurs CMSIS-DAP peuvent prendre en charge les processeurs contenant un ou plusieurs cœurs ARM.

CMSIS DAP SWStack
CMSIS DAP (Crédit image : Keil)

DAPLink

DAPLink est un émulateur open source officiellement développé par ARM, capable de télécharger et de déboguer des programmes pour une gamme complète de puces à cœur Cortex-M0/M3/M4/M7.

DAPLink
DAPLink

Débogueur ICD

L'ICD (In-Circuit Debugger), souvent appelé simplement « débogueur ICD », est un outil de débogage matériel utilisé dans le développement de systèmes embarqués. Il permet aux développeurs d'effectuer un débogage en temps réel des microcontrôleurs ou autres dispositifs embarqués pendant qu'ils fonctionnent dans le circuit cible (in-circuit).

170207 DVTL PHOTO DV164045 Kit Transparent
Débogueur ICD (Crédit image : Microchip Technology)

Les débogueurs ICD se connectent généralement au périphérique cible via son interface de débogage, telle que JTAG (Joint Test Action Group) ou SWD (Serial Wire Debug). Ces débogueurs offrent une gamme de fonctionnalités de débogage essentielles, notamment la définition de points d'arrêt, l'exécution pas à pas du code, l'inspection des valeurs des variables et la surveillance du flux d'exécution d'un programme.

L'un des principaux avantages des débogueurs ICD est leur capacité à déboguer des logiciels dans leur contexte matériel réel, ce qui permet aux développeurs d'identifier et de corriger des problèmes qui ne peuvent se produire que lorsque le dispositif cible fonctionne dans son environnement prévu.

ST-Link est un débogueur et programmateur en ligne dédié aux microcontrôleurs STM8 et STM32, souvent appelé « téléchargeur ». ST-Link dispose d'interfaces de communication telles que SWIM, JTAG et SWD pour communiquer avec les microcontrôleurs STM8 ou STM32 (différentes versions disponibles).

image.PF251168.en.feature description include personalized no cpn medium
ST-Link (Crédit image : STMicroelectronics)

MCU-Link

Développé conjointement par NXP et Embedded Artist, MCU-Link est un débogueur puissant et économique qui s'intègre parfaitement à l'IDE MCUXpresso. Il est également compatible avec les IDE tiers qui prennent en charge le protocole CMSIS-DAP, tels que les IDE couramment utilisés MDK Keil et IAR Embedded Workbench.

MCU LINK TOP Thubmnail
MCU Link (Crédit image : NXP Semiconductors)

MCU-Link est basé sur le microcontrôleur LPC55S69, doté d'une interface USB haut débit pour un débogage haute performance. Le LPC55S69 est un microcontrôleur double cœur Cortex-M33 avec une vitesse d'horloge pouvant atteindre 150 MHz. Il inclut une fonctionnalité USB-série (VCOM), permettant aux développeurs de transmettre les données côté MCU vers le PC pendant le débogage.

OpenSDA

OpenSDA est un circuit de débogage matériel intégré qui combine des fonctionnalités de débogage, de conversion USB-série et de micrologiciel par glisser-déposer. Il est présent sur presque toutes les cartes de développement officielles NXP et Freescale. OpenSDA est apprécié des utilisateurs pour sa simplicité, son faible coût, ses fonctionnalités puissantes et sa grande disponibilité.

OpenSDA FRDM
Micrologiciel OpenSDA V2 (Crédit image : Segger)

Non-Link

Nu-Link est un outil de débogage et de programmation développé par Nuvoton, offrant des capacités de débogage et de programmation en ligne/hors ligne. L'outil comprend un port USB qui se connecte à l'ordinateur hôte, des voyants d'état LED, un bouton de programmation hors ligne et une interface SWD pour se connecter à la puce cible à des fins de débogage et de programmation (le port SWD fonctionne à une tension par défaut de 5 V).

Nu Link ICP emulator downloader with offline offline download
Nu-Link (Crédit image : AliExpress)

Comment fonctionnent les débogueurs ?

Le principe du débogage des microcontrôleurs repose sur la communication entre l'outil de débogage et le microcontrôleur, ce qui facilite le débogage du programme du microcontrôleur. Les points d'arrêt sont des techniques de débogage couramment utilisées pour localiser les bogues dans le code.

Définition des conditions de point d'arrêt

Execution Breakpoints and Setting Conditions in Debugging
Execution Breakpoints and Setting Conditions in Debugging

Dans la figure ci-dessus, vous trouverez une liste de points d'arrêt, au nombre de quatre. Chaque point d'arrêt peut être associé à des conditions, comme indiqué dans l'encadré rouge 1.

Vous pouvez spécifier le nombre de fois qu'un point d'arrêt est effectif, c'est-à-dire le nombre de fois où il se déclenche lorsqu'il atteint cette position, comme indiqué dans l'encadré rouge 2. Dans cet exemple, il est réglé pour se déclencher une seule fois.

Vous pouvez définir une expression d'évaluation, comme indiqué dans l'encadré rouge 3 de la figure. Par exemple, le point d'arrêt se déclenchera lorsque « g_iCounter » sera supérieur ou égal à 100. Les conditions de ce type sont combinées à la condition de l'encadré rouge 2 à l'aide d'une relation logique « ET ». Les deux conditions doivent être remplies pour que le point d'arrêt se déclenche, sinon le code continue à s'exécuter.

Lorsque le point d'arrêt se déclenche, vous pouvez exécuter un script Python, comme indiqué dans l'encadré rouge 4 de la figure.

Vous pouvez également afficher une boîte de message et/ou émettre un signal sonore pour signaler le déclenchement du point d'arrêt.

Définition des déclencheurs de points d'arrêt

Setting Hardware Breakpoints Trigger in Debugging
Setting Hardware Breakpoints Trigger in Debugging

Les déclencheurs de point d'arrêt sont similaires aux déclencheurs prédéfinis qui provoquent l'arrêt du code lorsque certaines conditions sont remplies pendant l'exécution. L'emplacement du déclenchement peut ne pas être connu à l'avance.

Dans la figure, la case rouge 1 représente un déclencheur d'instruction, qui arrête le code à une ligne spécifique, comme si l'on définissait un point d'arrêt directement dans le code.

La case rouge 2 représente un déclencheur de données, qui arrête le code lorsqu'il y a une opération de lecture/écriture sur une variable ou une adresse particulière, et qui peut surveiller si un bit spécifique est défini ou effacé (la disponibilité dépend du microcontrôleur). Le code s'arrête à la position correspondante.

La case rouge 3 est un exemple où « g_iCounter » est sélectionné. Lorsque son bit le plus élevé est défini sur 1, il déclenche le point d'arrêt. Sinon, le code continue à s'exécuter.

La case rouge 4 illustre une condition de déclenchement complexe impliquant plusieurs conditions, qui dépend également des capacités du microcontrôleur.

Conclusion

En résumé, les débogueurs matériels et leurs différents types jouent un rôle crucial dans le développement des systèmes embarqués en permettant aux développeurs de localiser et de corriger les bogues logiciels, d'effectuer un débogage en temps réel et d'obtenir des informations sur l'exécution des programmes des microcontrôleurs. Ces outils offrent des fonctionnalités essentielles telles que les points d'arrêt, les conditions de déclenchement et la possibilité d'exécuter des scripts, ce qui rend le processus de débogage plus efficace et plus performant.

Part à:

Retour en haut

Instant Quote