«

»

Déc 13

L’api Ada

Salut à tous,

Nous allons maintenant installer l’api ada qui nous avons développé au club. Avant de poursuivre, assurez-vous d’avoir réussi à installer le compilateur. Si ce n’est pas le cas, je vous renvois Ici.

Ensuite, assurez vous d’avoir git installé. Si ce n’est pas le cas, tapez simplement dans la console :

sudo apt-get install git

Nous pouvons maintenant récupérer l’api. Pour cela, rien de plus simple. Il suffit de cloner le dépot mis à votre disposition par le club. Entrez dans le terminal :

git clone https://github.com/telrob/ada-api

Voila, vous avez installé l’api ! Testons maintenant son fonctionnement. Rendez vous dans le dossier ada-api :

cd ada-api

Un fichier d’exemple est mis à votre disposition. Pour vérifier qu’il compile comme il faut. Entrez :

make

dans la console. Si tout se passe comme il faut, vous trouverez l’exécutable dans le dossier bin et les objets intermédiaires dans le dossier objs. Vous pouvez essayer de flasher votre carte. Pour cela, deux choix s’offrent à vous. Le premier est de réutiliser la méthode vue dans le chapitre précédent . L’autre consiste à utiliser un fichier appelé .gdbinit qui va exécuter tout seul un certain nombre de commande à l’ouverture de gdb. Il se trouve dans le fichier bin. Au premier lancement, il ne sera pas actif. Pas de problème, gdb vous le signale. Il vous dit qu’il faut écrire un ligne du genre add-auto-load-safe-path /home/julien/Documents/ADA_API_STM32/bin/.gdbinit dans le fichier /home/nom_utilisateur/.gdbinit . Si ce fichier n’existe pas, créez le et copiez-y la ligne. Relancez gdb. La consigne a disparu. Il vous suffit maintenant de faire un load pour flasher la carte. N’oubliez pas de lancer openocd avec gdb. SI des problèmes persistent, débranchez, rebranchez la carte et relancer openocd et gdb. Si vous êtes curieux, jeté un œil dans le fichier .gdbinit. Vous reconnaîtrez alors certaines commandes, parfois en abrégé. Ces commandes sont exécutées au lancement de gdb et vous pouvez les modifier ou en ajouter. Je vous renvoie vers l’article de Félix pour plus d’informations.

Détaillons maintenant le contenu. Comme je l’ai déjà précisé, le dossier bin va contenir les exécutables que vous génèrerez. Le dossier objs, qui n’a pas trop d’importance, contient les fichiers intermédiaires. Le dossier hwinterface contient les fonctions de base qui nous permettrons de programmer sur la stm32. Le dossier doc contient la documentation des fonctions utilisables (en cours d’écriture à l’heure actuelle). Pour la lire, ouvrez le fichier masterindex.html avec votre navigateur préféré 😉

Vous trouverez ensuite un fichier Makefile. Si vous ne savez pas ce que c’est, sachez qu’il s’agit d’un fichier souvent présent dans les projets de programmation et qui permet d’effectuer des actions prédéfinies, comme compiler par exemple. Quand nous avons appelé make, nous avons en réalité appelé la première fonction du Makefile qui a compilé le programme. Vous pouvez aussi supprimer tous les fichiers créés pendant la compilation en tapant make clean . Le Makefile est un concept très important et je vous conseille fortement d’apprendre à l’utiliser 🙂

Si nous regardons le contenu du Makefile, on peut voir que arm-none-eabi-gnatmake est appelée. Souvenez vous, c’est cette fonction que nous avons utilisé pour vérifier l’installation du compilateur. Cette fois, elle est accompagnée du plus d’arguments, et notamment un appel au fichier build.gpr . Il s’agit d’un fichier pour gérer les projets (on l’inclut d’ailleurs avec -P). Dedans, vous trouverez des définitions liées à l’organisation du projet. On y définit par exemple l’emplacement des fichiers sources, l’emplacement des exécutables, des options de compilation,… Une option nous intéresse plus particulièrement : Main. C’est la liste des fichiers dont nous souhaitons obtenir les exécutables. Ainsi, si vous rajoutez un exécutable, vous pouvez venir le l’ajouter à la liste :

for Main use ("example", "projet1","foo");

Pour les plus téméraires, vous pouvez aussi jouer avec les autres options de compilation.

Voilà, je pense avoir fait le tour. Vous devriez maintenant être capable de poursuivre avec les cours sur le site ou en solo.

 

A+,

Julien