Guide des techniques et des outils de débogage professionnels pour les dispositifs IoT

Par Jacob Beningo

Avec la contribution de Rédacteurs nord-américains de DigiKey

Le développement d'un système embarqué, dans lequel le logiciel et le matériel doivent fonctionner ensemble, est devenu extrêmement complexe, même pour les dispositifs Internet des objets (IoT) apparemment les plus simples. À tel point que lorsqu'un problème se produit — ce qui arrive inévitablement — le débogage ne prend généralement pas quelques heures, mais plutôt des semaines, voire des mois. Ces retards augmentent les coûts de développement, empêchent la commercialisation du produit dans les délais, retardent les calendriers de fabrication et anéantissent les chaînes d'approvisionnement et les plans d'affaires.

Le meilleur moyen pour réduire le temps consacré au débogage et maintenir un projet sur la bonne voie consiste à utiliser une combinaison d'outils matériels de débogage et de logiciels librement disponibles pour obtenir des informations sur les performances d'un système et sur l'origine des problèmes. Ainsi, pour les professionnels comme pour les amateurs, il est essentiel de disposer des bons outils pour effectuer le travail, rapidement et correctement.

Cet article présente les logiciels et les outils de développement pouvant être utilisés pour déboguer et analyser les performances d'un dispositif IoT. Il utilise une carte de développement de STMicroelectronics comme exemple de dispositif IoT, et les outils et logiciels de SEGGER Microcontroller Systems pour comprendre et déboguer le système. Il aborde également plusieurs conseils et astuces permettant de minimiser le temps de débogage et de fournir un projet IoT dans les délais.

Le dispositif IoT typique à déboguer

Les dispositifs IoT sont devenus prépondérants dans presque tous les secteurs, de la maison intelligente à la surveillance industrielle. Malgré la variété des applications, un dispositif IoT est constitué de plusieurs composants typiques, notamment :

  • Un microprocesseur
  • Une radio pour la connectivité
  • Des capteurs

Un développeur ne voudra pas personnaliser sa propre carte pour explorer des techniques de débogage ou pour tester des parties du code de son application. Cela prendrait trop de temps. Au lieu de cela, il est plus judicieux de travailler sur une carte de développement à faible coût comme le kit de découverte B-L4S5I-IOT01A pour nœud IoT de STMicroelectronics. Ce kit contient presque tout ce que l'on trouve sur un dispositif IoT typique (Figure 1).

Schéma du kit de découverte B-L4S5I-IOT01A de STMicroelectronicsFigure 1 : Le kit de découverte pour nœud IoT B-L4S5I-IOT01A de STMicroelectronics inclut tous les composants généralement requis dans un dispositif IoT. (Source de l'image : STMicroelectronics)

La carte inclut le STM32L4S5VIT6, un microcontrôleur Arm® Cortex®-M4 fonctionnant à 120 mégahertz (MHz). Elle est soutenue par 2 méga-octets (Mo) de mémoire Flash et 640 kilo-octets (Ko) de RAM. Fait important pour les besoins de cet exercice, la carte inclut le Wi-Fi et une pléthore de capteurs qui peuvent être utilisés pour créer rapidement un dispositif de test IoT fictif.

Outils matériels professionnels de débogage

La plupart des cartes de développement sont équipées d'une interface JTAG/SWD intégrée, de sorte que les développeurs n'ont pas à se procurer leur propre programmateur. Au contraire, ils peuvent travailler avec la carte de développement dès sa sortie de l'emballage. Si cela est très bien sur le plan marketing, ce n'est pas le cas pour l'ingénierie réelle : les débogueurs intégrés sont souvent des versions considérablement réduites qui ont des limites, comme le nombre de points d'arrêt disponibles et le débit en bauds de l'interface. Pour les non-initiés, ces limitations peuvent sembler insignifiantes, mais le fait de disposer d'un nombre illimité de points d'arrêt évite de devoir constamment activer et désactiver les points d'arrêt, et des vitesses de transmission rapides sont nécessaires pour le traçage des applications (vous trouverez plus d'informations sur le traçage dans la section consacrée aux outils logiciels).

Il existe plusieurs outils différents qui peuvent fournir une expérience de débogage professionnel, mais les outils eux-mêmes ne représentent que la moitié de la solution. Les outils doivent être pris en charge par des logiciels appropriés. La série SEGGER J-Link est un ensemble d'outils se distinguant à la fois du point de vue matériel et logiciel. Cette série propose une version de débogueur pour presque tous les types de développeurs, des étudiants et des amateurs aux professionnels chevronnés.

L'expérience a montré l'utilité de deux modèles pour le développeur général : le J-Link Base et le J-Link Ultra+ (Figure 2). En termes de facteur de forme, les deux unités sont identiques, mais le J-Link Ultra+ offre au développeur des vitesses de téléchargement plus rapides vers la RAM (3 Mo/s contre 1,0 Mo/s) et une vitesse d'interface SWD supérieure (100 MHz contre 30 MHz). Les vitesses plus élevées font toute la différence lorsqu'un développeur souhaite tracer son application pour obtenir des informations sur les performances et sur le comportement du RTOS, et déboguer son système.

Image du J-Link Ultra+ de SEGGERFigure 2 : Le J-Link Ultra+ de SEGGER offre aux développeurs une expérience de débogage améliorée grâce à une interface cible de 50 MHz. (Source de l'image : SEGGER Microcontroller Systems)

L'avantage du J-Link et de la carte de développement B-L4S5I-IOT01A, c'est que les deux peuvent être connectés via un câble TC2050-IC-NL de Tag-Connect et un clip de retenue TC2050-CLIP-3PACK. Ils permettent de connecter un débogueur à la carte de développement via le « pavé de clous » (Figure 3). Il peut être nécessaire d'adapter le connecteur à 20 broches du J-Link au connecteur à 10 broches du câble TC-2050. Pour ce faire, il est possible d'utiliser l'adaptateur aiguille à 10 broches J-Link 8.06.04.

Image de la carte de développement B-L4S5I-IOT01A de STMicroelectronicsFigure 3 : Sur la carte de développement B-L4S5I-IOT01A, l'assemblage de câble Tag-Connect peut être connecté via une empreinte de carte à circuit imprimé semblable à un lit à clous (à droite). (Source de l'image : STMicroelectronics)

Une fois qu'un développeur a accompli cette étape du côté matériel, il peut utiliser les outils logiciels pour analyser et déboguer son application.

Outils logiciels professionnels de débogage

Il existe un certain nombre d'outils logiciels qui fonctionnent très bien avec les outils J-Link de SEGGER et qui, étonnamment, ne sont pas fournis par SEGGER. La suite de cet article passe en revue plusieurs de ces outils gratuits et montre comment les développeurs peuvent les utiliser pour déboguer leurs logiciels.

Le premier outil est J-Scope. J-Scope est un outil semblable à un oscilloscope qui affiche des valeurs de variables dans le temps. Les développeurs peuvent surveiller une seule variable ou plusieurs dizaines de variables. Notez cependant que plus le nombre de variables surveillées est élevé, moins il est possible de prélever d'échantillons avant que le tampon d'échantillonnage ne déborde et que les données ne soient perdues.

Les variables sont sélectionnées en fournissant à J-Scope le fichier ELF qui est généré par le compilateur. Cela fournit les emplacements de mémoire à lire, et le développeur peut alors définir ses fréquences d'échantillonnage et surveiller comment la ou les variables évoluent dans le temps. Un exemple simple de trace à trois variables est présenté à la Figure 4.

Image du J-Scope de SEGGER pouvant être utilisé pour surveiller les variablesFigure 4 : J-Scope peut être utilisé pour surveiller des variables via le J-Link pendant qu'une application s'exécute en temps réel. (Source de l'image : SEGGER Microcontroller Systems)

L'outil suivant est Ozone. Ozone est une interface de débogage et un analyseur de performances. Les développeurs peuvent charger leur fichier ELF dans l'outil et effectuer un débogage au niveau source. Ils peuvent définir des points d'arrêt et mettre à jour leur code. Une fonctionnalité particulièrement utile pour les développeurs est qu'ils peuvent également effectuer un suivi des instructions (si leur matériel le prend en charge) et identifier quelles instructions de code assembleur et de code C ont été exécutées. Cela est particulièrement utile pour vérifier la couverture de code des tests HiL (Hardware In the Loop).

Ozone peut également aider les développeurs à analyser les performances de leur système (Figure 5) et à visualiser les variables dans le temps. Cela fournit des capacités semblables à celles de J-Scope mais d'une manière plus intégrée. Il peut même être utilisé pour surveiller la consommation d'énergie et synchroniser tous ces événements à un seul emplacement.

Image d'Ozone de SEGGER pouvant être utilisé pour tracer les variables dans le J-LinkFigure 5 : Ozone peut être utilisé pour suivre les variables dans le J-Link pendant qu'une application s'exécute en temps réel, et pour la couverture du code et du débogage en fonction du RTOS. (Source de l'image : SEGGER Microcontroller Systems)

Un troisième outil est SystemView. SystemView permet aux développeurs d'analyser le comportement d'exécution de leur système RTOS. Le changement de tâche est enregistré dans un tampon de trace, puis signalé à SystemView via le débogueur (Figure 6). SystemView affiche ensuite ces informations de manière à permettre à un développeur de voir les changements de contexte et de mesurer les performances de son système. C'est aussi un excellent moyen de visualiser un système et d'identifier les bogues et autres problèmes.

Schéma du SystemView de SEGGER fournissant une liaison vers un RTOSFigure 6 : SystemView fournit une liaison vers un RTOS, permettant aux développeurs de mesurer les performances des tâches et de visualiser ce que fait le RTOS et quand. (Source de l'image : SEGGER Microcontroller Systems)

Conseils et astuces pour déboguer un système embarqué

Le débogage d'un dispositif IoT exige que les développeurs disposent des outils appropriés tant du point de vue matériel que logiciel. Ces deux éléments doivent être en place si les développeurs veulent réduire le temps consacré au débogage. Pour un débogage réussi, il existe plusieurs conseils et astuces que les développeurs doivent prendre en compte, notamment :

  • Utiliser un débogueur professionnel qui maximise le débit en bauds de l'interface. La quantité de données utiles pouvant être obtenues d'un système dépend de la rapidité avec laquelle ces données peuvent être reçues. Une vitesse plus lente entraîne une session de débogage plus longue.
  • Configurer le logiciel de débogage au début du cycle de développement. Les développeurs ne doivent pas attendre d'avoir un problème pour configurer leurs outils de débogage.
  • Utiliser des outils de traçage dès le début du développement. Les développeurs pourront ainsi surveiller les performances de leur système et comprendre immédiatement comment les changements logiciels l'affectent.
  • Exploiter le traçage des instructions ou l'échantillonnage des compteurs de programmes pour comprendre la couverture du code système pendant les tests. Des bogues existeront dans les branches conditionnelles et le code non testés.
  • Tirer parti des protocoles de transfert rapide pour obtenir des données hors puce, comme les bibliothèques de transfert en temps réel (RTT).

Les développeurs qui suivent ces « conseils et astuces » constateront qu'ils économisent beaucoup de temps et d'efforts lors du développement de leur dispositif IoT.

Conclusion

Les logiciels des dispositifs IoT sont devenus complexes, mais cela ne signifie pas pour autant que les développeurs professionnels ou amateurs soient contraints de constamment déboguer leurs systèmes. L'utilisation de logiciels et d'outils de développement professionnels peut fournir aux développeurs les informations dont ils ont besoin non seulement pour déboguer un système, mais également pour analyser et améliorer les performances de leurs systèmes. En investissant dans ces outils, les utilisateurs peuvent considérablement réduire le temps consacré au débogage, et s'assurer que leurs projets sont fonctionnels et commercialisés dans un délai raisonnable.

DigiKey logo

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

À propos de l'auteur

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo est un consultant en logiciels embarqués, et il travaille actuellement avec des clients dans plus d'une douzaine de pays pour transformer radicalement leurs activités en améliorant la qualité, les coûts et les délais de commercialisation des produits. Il a publié plus de 200 articles sur les techniques de développement de logiciels embarqués. Jacob Beningo est un conférencier et un formateur technique recherché, et il est titulaire de trois diplômes, dont un master en ingénierie de l'Université du Michigan. N'hésitez pas à le contacter à l'adresse jacob@beningo.com et sur son site Web www.beningo.com, et abonnez-vous à sa newsletter mensuelle Embedded Bytes.

À propos de l'éditeur

Rédacteurs nord-américains de DigiKey