Passer au contenu principal Passer à la recherche Passer à la navigation principale
Menu

Programmeurs & débogueurs

Un débogueur aide à trouver des erreurs dans les logiciels et le matériel en contrôlant le déroulement du programme. Un programmeur transfère des programmes sur des microcontrôleurs pour les flasher et les contrôler. Les deux sont essentiels pour le développement de projets électroniques.

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

Un débogueur est un outil permettant de diagnostiquer et de trouver des erreurs dans les systèmes informatiques. Le débogueur vérifie principalement les programmes, mais aussi le matériel disponible pour leur exécution. Une autre fonction des débogueurs est de contrôler le déroulement du programme. Avant de commencer le débogage, il est possible de définir des points dans le code où l'exécution du logiciel doit être mise en pause, appelés points d'arrêt (breakpoints). Cela permet d'examiner l'état exact du logiciel à ce moment-là. On obtient par exemple un aperçu de toutes les variables et peut ainsi vérifier si les valeurs attendues sont présentes. Par ailleurs, il est possible de faire avancer le programme pas à pas à partir du point d'arrêt et d'observer ainsi précisément ce qui se passe. On voit comment et quand les valeurs des différentes variables changent. De plus, il est possible de suivre en direct comment le code est exécuté, c'est-à-dire dans quel ordre les différentes instructions sont appelées et traitées. Cette analyse détaillée contribue à mieux comprendre les processus et à résoudre ainsi des erreurs complexes. Dans certains cas, il est également possible de revenir à des étapes précédentes et de relancer l'exécution du programme à partir de là.

Qu'est-ce qu'un programmateur ?

Un programmateur est un composant matériel permettant de transférer un programme exécutable sur un microcontrôleur. Il existe différents concepts, tels que celui du bootloader, de la programmation parallèle ou de l'interface JTAG. De plus, pour les microcontrôleurs Atmel, le « Serial Download » joue un rôle important, mieux connu sous le nom d'« ISP » (In System Programming). Dans ce cas, l'interface « Serial Processor Interface » est utilisée, que l'on trouve sur la plupart des contrôleurs AVR. Les programmateurs ISP se distinguent souvent par leur faible complexité matérielle. Dans le cas de ces « programmateurs bon marché », les protocoles sont générés à l'aide d'un programme correspondant sur l'ordinateur, et le matériel de programmation ne sert qu'à adapter les niveaux. Certains programmateurs simples sont conçus de telle manière qu'ils ne se composent que de trois résistances de protection et d'un petit circuit pilote qui assure une transmission sécurisée avec des câbles plus longs. Cela permet une entrée très économique dans la programmation des contrôleurs Atmel AVR. Par ailleurs, il existe des programmateurs dotés de leur propre « intelligence », appelés « programmateurs série ». Avec ceux-ci, la transmission des données vers le programmateur s'effectue via une interface série ou par USB. Le programmateur lui-même dispose d'un contrôleur qui reçoit les données et exécute le protocole de programmation. Le SI-Prog, largement répandu, est également connecté via une interface série, mais il est équivalent aux programmateurs parallèles et ne dispose pas de sa propre intelligence. C'est pourquoi il n'est pas possible de faire fonctionner le SI-Prog avec un adaptateur USB-série standard du commerce.

Programmateurs ISP à port parallèle

Programmateurs compatibles STK 200

Les programmateurs à port parallèle sont souvent des reproductions des interfaces de programmation des premiers kits de démarrage d'ATMEL, le STK200 ou le STK300. Ils sont souvent présentés comme compatibles STK200 ou comme des programmateurs ISP standard. L'avantage de ces programmateurs réside dans le fait que presque tous les logiciels de programmation les prennent en charge. La compatibilité concerne ici l'affectation des lignes sur le port LPT et n'a rien à voir avec l'utilisation d'un circuit pilote de ces programmateurs.

Brochage LPT du STK200

SCK = 6 ;

MOSI = 7 ;

RESET = 9 ;

MISO = 10 ;

Programmateurs compatibles SP12

Le programmateur SP12 est à l'origine une solution très simple qui utilise seulement trois résistances de protection et aucun autre circuit d'adaptation de niveau. Ce programmateur très économique est très populaire. La raison principale en est sa conception, qui permet d'alimenter le système cible via le port LPT. Avec le circuit STK200, le programmateur doit être alimenté par le système cible. Ainsi, avec le SP12, aucune alimentation supplémentaire n'est nécessaire pour la programmation.

Brochage LPT du SP12 :

VCC = 4,5,6,7,8 ;

RESET = 3 ;

SCK = 2 ;

MOSI = 9 ;

MISO = 11 ;

Programmateurs pseudo-série

Le SI-Prog, connu pour son bon support du populaire PonyProg, est souvent appelé programmateur série. Cependant, son circuit révèle que les lignes de commande DTR, RTS et CTS du port COM sont utilisées pour faire fonctionner un protocole SPI. Les lignes TxD et RxD, qui sont les lignes de commande réelles, ne sont pas du tout connectées, ce qui signifie que ce programmateur ne peut pas fonctionner via USB et que PonyProg ne peut donc pas être utilisé comme outil de programmation.

Programmateurs série réels

Les programmateurs série réels sont souvent basés sur la note d'application Atmel AN910 ou sont compatibles STK500. Ils ont en commun la présence d'un contrôleur avec un micrologiciel compatible AVR910 ou STK500, qui peut généralement être mis à jour via le bootloader. Les programmateurs parallèles sont pris en charge par la plupart des outils de flashage et peuvent également fonctionner avec des adaptateurs USB-série standard.

L'ancien protocole selon AN910 pose problème pour la prise en charge des nouveaux contrôleurs, car le programmateur doit connaître l'ID du contrôleur. Pour les nouveaux contrôleurs, une mise à jour du logiciel dans le programmateur est donc nécessaire. Les évolutions importantes pour les programmateurs série sont les protocoles AVR911 et STK500v2.

Programmateurs USB

La particularité de ces programmateurs réside dans le fait qu'ils disposent eux-mêmes d'une interface USB, ce qui permet de les connecter facilement à l'ordinateur. Il s'agit généralement de solutions compatibles AVR910 ou STK500, pour lesquelles un pilote doit être installé sous Windows, simulant un port COM virtuel dans le système.

Un microcontrôleur AVR peut émuler l'interface USB pour des vitesses USB lentes. Le protocole USB lui-même est souvent implémenté de manière minimaliste, ce qui peut entraîner des incompatibilités. Le plus grand avantage de l'utilisation de l'AVR comme contrôleur USB virtuel est qu'il permet de construire des programmateurs USB sans composants CMS, qui fonctionnent sans interface série.

Programmateurs JTAG et PDI

Avec la sortie du XMEGA, ATMEL s'est éloigné de la norme ISP et utilise désormais PDI ou JTAG.

Pour les cartes à microcontrôleurs, Atmel propose un connecteur 6 broches, avec un pas de 2,54 mm, avec l'affectation suivante (vue de dessus) :

DATA 1 2 VCC

N.C. 3 4 N.C.

C L K 5 6 GND

Arduino en tant que programmateur ISP

Un Arduino peut également être utilisé assez simplement comme programmateur ISP pour d'autres microcontrôleurs. Dans ce cas, l'interface SPI série est utilisée. À l'aide d'un programmateur ISP, il est possible de programmer divers types de microcontrôleurs. ISP signifie In-System-Programming, ce qui signifie que le contrôleur peut être programmé directement dans le système d'exploitation. Pour que l'Arduino puisse être utilisé comme programmateur ISP, il doit d'abord être programmé en conséquence. Pour cela, l'IDE Arduino contient déjà l'exemple « ArduinoISP », qui doit simplement être ouvert et chargé sur l'Arduino via USB. Dans l'IDE Arduino, il faut ensuite sélectionner dans le menu Outils → Programmateur → Arduino as ISP.

Une fois tout correctement câblé, le croquis peut être chargé sur le microcontrôleur cible soit en cliquant sur le bouton de téléchargement tout en maintenant la touche Maj enfoncée, soit via le menu Croquis → Télécharger avec programmateur.

À quoi sert chaque programmateur/débogueur ?

Avec le USB ISP ASP AVR Programmer, il est possible, par exemple, de flasher via USB des bootloaders sur des Arduino défectueux ou d'anciennes cartes mères d'imprimantes 3D 8 bits.

Le ST-Link V2 Debugger et programmateur interne au circuit peut être directement enfiché sur l'Arduino et communiquer avec les microcontrôleurs STM8 ou STM32 de la carte d'application via les interfaces SWIM et JTAG/SWD.