Mise en place de l'environnement de développement pour le microcontrolleur ARM Cortex M3 (Eclipse + openOCD + GCC)

Introduction

Ce tutoriel a pour but la mise en place de la chaîne de développement qui permettra de créer des applications sur un microcontrolleur ARM Cortex M3 de STMicroelectronics, à savoir la chaîne de compilation croisé ARM-GCC, l'IDE et le serveur JTAG openOCD. Nous n'aborderons par ici les étapes de la compilation à proprement parlé sur un projet à implémenter dans l'µC, cependant ce tutoriel a été testé avec succès sur la démo de chibiOS/RT v1.3.0.

Téléchargement et installation des différents logiciels

NOTE : certaines commandes linux (tel que 'yaourt' ) sont propre à la distribution archlinux utilisé dans ce tutoriel, sur les autres distributions, veuillez vous référer à leur propre documentation (vous êtes également invités à laisser un commentaire en bas d'article pour toute remarque ou question éventuelle).
Il est préférable de tester le bon fonctionnement de chaque logiciel indépendament afin de faciliter la résolution des problèmes.
1. Avant toute chose, il faut installer la chaîne de compilation croisé pour ARM. Il existe une chaîne déjà compilé et prête à l'emploi maintenue par l'entreprise CodeSourcery. Vous pouvez télécharger l'installateur automatique => ici <= (l'installateur nécessite la machine virtuelle java pour fonctionner).
2. Le deuxième logiciel à installer est openOCD (en console 'yaourt -S openocd-svn', ce paquet se trouve dans AUR, il faudra donc le compiler).
3. La dernière brique de l'environnement est l'IDE eclipse cdt que vous trouverez => ici <=. Pour l'installer il suffit de décompresser l'archive dans votre dossier personnel, l'executable étant le fichier 'eclipse'. Ce logiciel nécessite une machine java pour fonctionner correctement.

Configuration d'openOCD

Pour pouvoir communiquer avec la carte, openOCD à besoin d'un fichier de configuration lui explicitant comment et avec quoi il va interagir. Fort heureusement, les créateurs d'openOCD fournissent le fichier stm32.cfg (sur archlinux, ce fichier se trouve dans /usr/lib/openocd/interface). A ce fichier il ne reste qu'à ajouter la sonde utilisé et les ports de communications (et peut-être à commenter une ou deux lignes pour effacer les messages d'erreurs, mais ceux ci n'altèrent en rien le bon fonctionnement). Vous trouverez => ici <= le fichier déjà modifié pour le microcontrolleur stm32f103rbt6 et pour une sonde ARM-USB-TINY.
Pour la suite de ce tutoriel, nous considérerons que vous utilisez le fichier stm32.cfg fournit précédement.
Pour tester le bon fonctionnement d'openOCD, branchez la sonde sur la carte et sur le PC, mettez sous tension la carte puis tapez dans un terminal 'openocd -f stm32.cfg' (en considérant que vous avez placé le fichier stm32.cfg dans l'espace courant du terminal, habituellement votre répertoire personnel).
Dans un second terminal, tapez 'telnet localhost 4444'. Si tout ce passe bien vous devriez obtenir ceci :
  1. $ telnet localhost 4444
  2. Trying 127.0.0.1...
  3. Connected to localhost.
  4. Escape character is '^]'.
  5. Open On-Chip Debugger
  6. >
  7.  
Si ce n'est pas le cas, soit telnet n'est pas installé sur votre distribution, soit le serveur openOCD ne s'est pas lancé correctement. Dans le cas où openOCD refuse de démarrer car les permissions d'accès à la sonde sont incorrectes, il est nécessaire de préciser à udev que la sonde jtag peut être utilisé par un utilisateur standard. Pour ce faire, vous devez rajouter au fichier 00.rules (ou le créer s'il n'existe pas) situé dans le dossier /etc/udev/rules.d la règle d'utilisation de la sonde. Dans le cas d'une sonde ARM-USB-TINY, la règle est :
  1. SUBSYSTEM=="usb",
  2. ATTR{idVendor}=="15ba",
  3. ATTR{idProduct}=="0004",
  4. ACTION=="add",
  5. GROUP="users",
  6. MODE="0666"
  7.  

Configuration de la chaîne de compilation croisé de CodeSourcery

La chaîne de compilation de CodeSourcery doit normalement modifier le PATH lors de son installation, cependant la modification effectué n'a eu aucun résultat dans mon cas et il m'était impossible de l'utiliser facilement (il fallait alors préciser systématiquement le chemin à utiliser...). Pour remédier à ce problème et pour pouvoir l'utiliser avec eclispe, la variable PATH doit être modifié pour tout les utilisateurs. Pour ce faire, il faut modifier le fichier profile dans /etc en y ajoutant à la fin la ligne suivante :
  1. export PATH=$PATH:/home/votre_nom/CodeSourcery/bin
  2.  
La modification prendra effet lors du prochain redémarrage.
Pour utiliser le compilateur fournit par CodeSourcery dans un Makefile, la variable TRGT doit posséder la valeur arm-none-eabi-

Configuration de l'IDE eclipse

Démarrez eclipse, choisissez le dossier 'workspace' (celui qui contiendra les projets et leurs fichiers).
Il faut maintenant installer Zylin, vous trouverez une documentation complète => ici <= à la section Install Zylin CDT Plugin
 
Pour pouvoir lancer openOCD via eclipse, il suffit de l'ajouter en tant que programme externe (Run->External Tools->External Tools Configuration), de renseigner le champ 'location', les arguements (ici "-f stm32.cfg") et de cocher le menu où ajouter le raccourci dans l'onglet 'common'.
Démarrez un nouveau projet (File->New-> C/C++ project), puis dans Run->Debug Configurations, créez une nouvelle configuration native de zylin (clic droit sur Zylin Embedded debug (Native) et New).
Dans l'onglet 'main', donnez lui un nom, puis choisissez le projet concerné (champ project) et le fichier .elf du projet (champ C/C++ Application), ce dernier doit donc être compilé auparavant.
Dans l'onglet 'debugger', sélectionné le débuggeur fournit par votre chaîne (pour CodeSourcery, il s'agit de l'executable arm-none-eabi-gdb dans le dossier bin de l'installation).
Dans l'onglet 'Commands', section 'initialize', copiez collez ceci (ou modifier le à votre guise) :
  1. target extended-remote localhost:3333
  2. monitor reset
  3. monitor sleep 500
  4. monitor poll
  5. monitor soft_reset_halt
  6. b main
  7. load
  8. monitor soft_reset_halt
  9.  
Ce petit bout de commandes à pour effet de lancer le debuggeur au travers d'openOCD et de placer un breakpoint dans le main.

Conclusion

Vous devriez désormais pouvoir utiliser pleinement ces puissants outils que sont gcc, eclipse et openocd.
Cet article traitant d'un contenu conséquent, il est probable que certaines sections soient flous où incomplètes. Si vous n'arrivez pas à suivre une étape, n'hésitez par à nous en faire part en laissant un commentaire !
Votre note : Aucun(e) Moyenne : 4 (2 votes)