MI03 TP Les objectifs du TP sont Construction d'un système linux embarqué complet Intégration de l'extension temps réél Xenomai Mise en place d'un environnement de développement croisé La validation a lieu sur une carte ARM émulée
Étapes Builroot Génération d'une chaîne de compilation croisée Utilisation de cette chaîne pour compiler un noyau et un système de fichier Paramètrage fin du noyau selon les caractéristiques exactes de la carte émulée Démarrage de linux embarqué sur la carte émulée
Paquetages logiciels nécessaires downloaded_material Les paquetages logiciels nécessaires ont tous été installés dans le répertoire downloaded_material Vous y trouverez Les logiciels principaux (buildroot, xenomai, linux) Les paquetages requis par buildroot Dans dl Les paquetages a installé sur la machine hôte Dans apt_cache
Carte émulée Qemu Émulateur de systèmes x86, sparc, arm, powerpc La carte que nous émulerons est une integratorcp qemu system arm M integratorcp kernel zimage Les informations précises concernant les périphériques émulés se trouve sur le site de qemu http://wiki.qemu.org/manual
Buildroot
Buildroot Construit un ensemble Chaîne de développement Noyau Système de fichiers Spécialement adapté à l'embarqué Nombreuses plateformes cibles supportées Utilise des versions spéciales de certains paquetages Busybox uclibc
Installation de buildroot Téléchargement de la dernière version sur http://buildroot.uclibc.org Décompression du fichier tar cd ~ tar xvjf buildroot 2010.02.tar.bz2 cd buildroot 2010.02
Utilisation de buildroot (1/2) Configuration make ARCH=arm menuconfig Le paquetage ncurses devel est nécessaire (libncurses5 dev sur ubuntu) Compilation make ARCH=arm Différent paquetages sont nécessaires g++, flex, gettext, texinfo...
Utilisation de buildroot (2/2) Plateforme supportée Buildroot fournit des configurations adaptées à un certain nombre de plateformes Les plateformes supportées sont dans le répertoire target/device Exemple make ARCH=arm help Configuration pour la carte AMD integrator/cp make ARCH=arm integrator926_defconfig
Principe de fonctionnement Buildroot ne contient pas le code des paquetages à construire Le projet contient les meta données suivantes Dépendances entre paquetages Liste des serveurs fournissant les paquetages Patchs à appliquer en fonction des versions Scripts de création d'un système de fichier
Chaîne de développement Meta données Les informations permettant de créer la chaîne de développement sont dans le rép. toolchain Résultat Les différents paquetages de la chaîne de développement sont compilés dans le rép. output/toolchain Les binaires croisés sont déposés dans output/staging/usr/bin
Paquetages Meta données Les informations permettant de construire les paquetages logiciels de la cible sont dans le rép. package Résultat Les paquetages sont compilés individuellement dans le répertoire output/build Les résultats de la compilation croisée des paquetages sont rassemblés au fur et à mesure dans le répertoire output/staging
Répertoire de travail staging Après la compilation de chaque paquetage les résultats sont copiés dans ce répertoire Programmes dans bin et usr/bin Librairies dans lib et usr/lib Fichiers d'entête dans usr/include Cela permet de gérer les dépendances entre paquetages Ce répertoire contient tous ce qui peut être intégré dans le système de fichier embarqué
Images Le système de fichier est assemblé dans output/target Les fichiers binaires prêts à flasher sont générés dans output/images Contenu root.<arch>.<fs> est le système de fichier u boot.bin est le firmware de la cible uimage est le noyau linux dans un format manipulable par u boot
Paquetages installés Uboot Firmware légé adapté à l'embarqué Initialise la carte avant de démarrer le noyau (linux ou autre) Busybox Un seul exécutable incluant de nombreux programmes en version légére
Problèmes rencontrés Uboot Trouver la bonne cible à utiliser dans le répertoire d'uboot Modifier la configuration de buildroot en conséquence
Problèmes rencontrés Noyau Le noyau compilé par buildroot n'est pas fonctionnel Il faut Sélectionner attentivement les pilotes des périphériques émulés Compiler le noyau avec l'eabi car la chaîne de développement croisée générée par buildroot est arm linux uclibcgnueabi <outils>