PatDef.fr

Accueil du site > Electronique embarquée > gnuarm - gcc - gdb - eclipse - openocd > Compilation de la chaine arm-elf-gcc

Compilation de la chaine arm-elf-gcc

mardi 13 mai 2008, par patrick Deflandre

Vous voulez développer des applications sur des cibles embarquées à base de coeur ARM. Il vous faut alors utiliser un cross-compilateur. Une solution parmis d’autre est d’utiliser un cross-compilateur GNU.

Cet article vous décrit comment compiler la chaîne de développement.



Choix d’installation

Tout d’abord, une petite description des choix que j’ai fait au niveau de l’installation du cross compilateur.

Il y a 2 façons d’installer un compilateur arm-elf-gcc :
- une installation globale, dans /usr/local/bin
- une installation par projet, dans /home/utilisateur/embedded/type_projet

Cette seconde possibilité permet d’avoir plusieurs versions différentes d’un compilateur arm-elf-gcc installées sur un même poste de travail, et de choisir simplement celle sur laquelle on travaille en l’activant par la variable d’environnement $PATH. Cette configuration pouvant être effectuée pour chaque terminal à l’aide d’un petit script.

J’ai fait le choix d’une installation par projet, et le reste de la présentation part de ce principe.

L’arborescence sera donc :

- répertoire de travail :

/home/utilisateur/embedded/projets/arm_gcc_4.1.1/

C’est le répertoire de travail spécifique à la version du compilateur. Pour chaque version, il faudra créer un répertoire spécifique et recommencer la procédure de compilation du cross-compilateur.

- répertoire dans lequel on va construire le cross-compilateur :

/home/utilisateur/embedded/projets/arm_gcc_4.1.1/build-tools

- répertoire dans lequel on va installer le cross-compilateur :

/home/utilisateur/embedded/projets/arm_gcc_4.1.1/tools

- répertoire dans lequel on va développer nos applications :

/home/utilisateur/embedded/projets/arm_gcc_4.1.1/sources


Vérification avant compilation

La compilation du cross-compilateur arm-elf-gcc nécessite que vous ayez installé les paquets gcc et libncurses5-dev.

Vous pouvez vérifier leur présence par la commande :

apt-cache --installed show gcc libncurses5-dev

Si cette commande ne renvoi pas d’information sur ces paquets, vous pouvez les installer avec les commandes en tant que superutilisateur :


apt-get update
apt-get install gcc libncurses5-dev

Si vous oublier d’installer la librairie libncurses5-dev, vous aurez l’erreur suivante lors de la compilation de gdb :

configure: error: no termcap library found


Création de l’arborescence

Comme expliqué au début de l’article, j’ai fait le choix de pouvoir installer plusieurs versions de cross-compilateur arm-elf-gcc sur mon poste de travail.

Il faut pour respecter cette arborescence créez les répertoires suivant :


mkdir -p ~/embedded/arm_gcc_4.1.1/build-tools
mkdir -p ~/embedded/arm_gcc_4.1.1/sources

Script d’installation

J’ai développé 2 petits scripts qui facilitent l’installation et l’utilisation du compilateur.

Zip - 521 octets
devel_arm.zip
GZ - 3.2 ko
build_gnuarm_1.1.tar.gz

Le premier, devel_arm, à placer et décompresser dans le répertoire racine de l’utilisateur, met à disposition d’un shell les variables d’environnement pour la compilation et l’utilisation du cross-compilateur.

Le second, build_gnuarm_4.1.1, à placer et décompresser dans le répertoire ~/embedded/arm_gcc_4.1.1/build-tools, simplifie la compilation du cross-compilateur.

Les paramêtres à passer à build_gnuarm sont :

fetch — télécharge les sources et les décompresse
erase — efface les constructions précédentes
build — compile ET installe le cross compilateur
install — réinstalle le cross compilateur


Compilation, Installation

- Ouvrir un terminal
- Exécuter la commande . devel_arm

On se trouve maintenant dans le répertoire ~/embedded/arm_gcc_4.1.1

- Changer de répertoire pour procéder au téléchargement des sources.

cd build-tools

- Télécharger les sources :

. build_gnuarm fetch

- Compiler ET installer le cross-compilateur :

. build_gnuarm install


Utilisation

Vérification du fonctionnement du compilateur :

cd ~/embedded/arm_gcc_4.1.1/sources

Créer un fichier main.c contenant les lignes suivantes :


int main( void )

{
        int i;

        for (i=0; i<100000; i++) ;
        while(1);
        return 1;
}

Et compiler ce fichier avec la commande :

arm-elf-gcc -o main.o main.c

Si vous obtenez un fichier main.o c’est que votre compilateur fonctionne correctement. Félicitation.

P.-S.

Les scripts ont été réalisés en grande partie grâce aux informations données sur le site www.gnuarm.org. Je vous invite à consulter ce site pour affiner votre recherche d’information.

Suivre la vie du site RSS 2.0 | Contactez-moi | Plan du site | SPIP