PEBDEV - v3 - Développements ARMDéveloppeur sur plates-formes mobiles 2012-04-30T22:45:00+01:00urn:md5:c631bc7cc9bb028d9cb05bfc9c404fdfPluXml 5.0.25.0.25.0.2[MAC OSX] Installation d'une chaine de compilation ARMurn:md5:654607e6cc88bf4ed73743f4448e5bc52012-04-30T22:45:00+01:00PEBDéveloppements ARM<p>
Dans la continuité d'une initiation au développement sur MAC OSX, nous allons installer une chaine de cross-compilation ARM EABI sur OSX Lion.
</p><p>
<br>
<center>
<img src="http://pebdev.eu/data/images/arm-chip.gif" alt="" />
</center>
<br><br>
<table bgcolor=black style="color:red">
<tr><td>
Soyons claire dès le début, l'installation peut être capricieuse. Alors comment arriver au bout sans soucis? En suivant à la lettre ce tuto, en ne sautant aucune ligne, pas même un simple redémarrage. :)
</td></tr>
</table>
<br><br><br>
<h2>1- Installation de XCode</h2>
<b style="color:green">1-</b> Installez la dernière version de Xcode 4.3 (sur l'AppStore)<br>
<b style="color:green">2-</b> REDEMARREZ<br>
<b style="color:green">3-</b> Lancez Xcode, <b>Préférence > Download > Installez Command Line Tools</b><br>
<b style="color:green">4-</b> Mettez à jour le chemin de XCode (changement apparu dans la version 4.3). Lancez Terminal et entrez :<br>
<table bgcolor=black style="color:green">
<tr><td>
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
</td></tr>
</table>
<br><br><br>
<h2>2- Installation d'Homebrew</h2>
Homebrew est un logiciel permettant de récupérer/installer simplement des packages Unix sur OSX.
Lancez Terminal puis tapez les commandes suivantes :
<table bgcolor=black style="color:green">
<tr><td>
cd /opt/<br>
git clone https://github.com/mxcl/homebrew.git<br>
cd homebrew<br>
sudo cp -R * /usr/local<br>
sudo chown -R <b style="color:red">votre_UserName</b> /usr/local/<br>
brew doctor
</td></tr>
</table>
Ces commandes ont installé brew dans <b>/usr/local</b> et configuré ce chemin en lecture/écriture pour votre UserName.
La commande brew doctor quand à elle permet de vérifier que l'installation c'est bien déroulée. Si vous avez des erreurs essayez de les corriger ou demandez de l'aide via les commentaires ci-dessous.
<br><br><br><br>
<h2>3- Compilation/Installation de CodeSourcery</h2>
Installons les outils nécessaires à la compilation :
<table bgcolor=black style="color:green">
<tr><td>
brew install mpfr<br>
brew install gmp<br>
brew install libmpc<br>
brew install texinfo<br>
brew install libelf
</td></tr>
</table>
<b style="color:red">Remarque : </b> Si vous rencontrez une erreur lors de l'installation d'un des packages, ressayez plusieurs fois, cela peut finir par passer :)<br><br>
<table bgcolor=black style="color:green">
<tr><td>
cd /opt/<br>
https://github.com/jsnyder/arm-eabi-toolchain.git<br>
cd arm-eabi-toolchain <br>
PREFIX=/opt/arm-eabi-toolchain/arm-cs-tools make install-cross
</td></tr>
</table><br>
Et voila, dans le dossier <b>/opt/arm-eabi-toolchain/arm-cs-tools</b> vous trouverez votre bonheur :)<br>
Pour utiliser le compilateur <b>arm-none-gnueabi</b> que nous venons de compiler, ajoutez simplement le path à la variable PATH :
<table bgcolor=black style="color:green">
<tr><td>
export PATH=/opt/arm-eabi-toolchain/arm-cs-tools/bin:$PATH
</td></tr>
</table><br>
Vous pouvez enfin vérifier que la compilation a réussi :
<table bgcolor=black style="color:green">
<tr><td>
arm-none-eabi-gcc -v
</td></tr>
</table><br>
Si vous rencontrez des soucis n'hésitez pas à poser vos questions dans les commentaires.
</p>[IGEP v2][Angstrom] Construction d'Angstrom avec OpenEmbedded et Bitbakeurn:md5:5b6ad6be603efe6cc2f189431adbc6942010-12-04T07:55:00+01:00PEBDéveloppements ARM<p>
Après Android, nous allons tester une autre distribution orientée pour le monde de l'embarqué, Angstrom!<br>
L'utilisation d'OpenEmbedded et de BitBake n'aura plus de secrets pour vous ;)
</p><p>
<br>
<center>
<img src="http://pebdev.eu/data/images/angstrom.png" alt="" />
</center>
<br><br>
Angstrom est une distribution intéressante. Elle est légère, peut gourmande en ram et relativement simple à mettre en place. Si nous devions lui trouver un défaut, je ne pourrais en citer qu'un : le temps de construction de l'image rootfs extrêmement longue... Mais bon, après c'est le PC qui travaille, ce n'est donc pas vraiment un défaut^^.<br><br>
Au niveau des informations sur cette distribution, il n'y en a pas beaucoup...
Depuis peu, Archos s’intéresse à cette distribution pour ses tablettes, il est donc possible que les informations fleurissent petit à petit.<br>
C'est un projet issu du regroupement de plusieurs autres projets : OpenZaurus, OpenEmbedded et OpenSimpad. <br><br>
Voila pour les présentations. Je vous laisse le lien du site officiel : <a href="http://www.angstrom-distribution.org/" target="angs1">http://www.angstrom-distribution.org/</a>.<br><br>
<table bgcolor="black" style="color:red">
<tr><td>
Cet article fait appel à des notions vues dans les articles précédents. J'ai essayé de détailler au maximum, cependant certaines informations peuvent ne pas être ré-expliquées. Dans ce cas je vous conseil d’aller faire un petit tour dans la rubrique ARM ;)
</td></tr>
</table>
<br><br><br><br><br><br>
<h2><u>Informations sur la construction d'Angstrom</u></h2>
<br>
La construction de cette distribution se fait à l'aide de deux outils :<br>
<ul>
<li><b>OpenEmbedded :</b> c'est un regroupement de composants libre pouvant être utilisés pour un système embarqué. Une sorte de grosse bibliothèque de l'embarquée :)</li>
<li><b>BitBake :</b> c'est un exécuteur de tâches et un gestionnaire de metadata. Il permet de construire des packages en gérant les dépendances, la cross-compilation,... En gros, c'est le <b>make</b> pour OpenEmbedded (vulgarisation pour simplifier les choses).</li>
</ul>
Nous allons uniquement interagir avec ces deux outils, ce qui rend la construction simple.
<br><br><br><br><br><br>
<h2><u>Préparation de notre environnement de travail</u></h2>
<br>
Avant de commencer, nous devons installer quelques packages :<br>
<table bgcolor="black" style="color:green">
<tr><td>
$ apt-get install diffstat texi2html git cvs subversion gawk chrpath gcc g++ python-psyco
</td></tr>
</table>
<br>
Ensuite on se place dans notre dossier de travail habituel :<br>
<table bgcolor="black" style="color:green">
<tr><td>
$ cd /srv/nfs/angstrom/image-base/igep020/
</td></tr>
</table>
<br>
<br><br><br><br>
<h2><u>Installation des outils</u></h2>
<ul>
<li><h3>Installation de <b>BitBake</b></h3>
- Téléchargement de <b>BitBake</b> : <a href="http://pebdev.eu/data/telechargements/igep/bitbake-1.10.1.tar.gz" target="bitbake1">bitbake-1.10.1.tar.gz</a> (<a href="http://developer.berlios.de/projects/bitbake" target="bitbake">lien serveur</a>).<br>
- On créer nos dossiers de travail :<br>
<table bgcolor="black" style="color:green">
<tr><td>
// Création de dossiers<br>
$ mkdir -p build/conf<br>
$ mkdir -p bibake
</td></tr>
</table>
- On décompresse BitBake dans <b>bitbake/</b><br>
<table bgcolor="black" style="color:green">
<tr><td>
$ tar xfvz bitbake-1.10.1.tar.gz -C bitbake/
</td></tr>
</table>
<br>
</li>
<li><h3>Installation d'<b>OpenEmbedded</b></h3>
- On télécharge <b>OpenEmbedded</b> :<br>
<table bgcolor="black" style="color:green">
<tr><td>
$ git clone git://git.openembedded.org/openembedded
</td></tr>
</table>
Voila, c'est tout^^<br><br>
</li>
<li><h3>Configuration pour la construction d'images/packages</h3>
- On doit créer un fichier de configuration pour spécifier à <b>Bitbake</b> notre cible.<br>
Pour cela, suivez les étapes suivantes :<br>
<table bgcolor="black" style="color:green">
<tr><td>
// Copie du fichier de configuration de base :<br>
$ cp openembedded/conf/local.conf.sample build/conf/local.conf<br><br>
// Edition du fichier de configuration<br>
$ nano build/conf/local.conf<br><br>
//Modifiez les lignes suivantes<br>
- DL_DIR = "/srv/nfs/angstrom/image-base/igep020/sources"<br>
- BBFILES = "/srv/nfs/angstrom/image-base/igep020/openembedded/recipes/*/*.bb"<br>
- MACHINE = "igep0020"<br>
- DISTRO = "angstrom-2008.1"<br>
- Commentez la dernière ligne
</td></tr>
</table>
<br>
Quelques petites explications sur ces modifications.<br>
<ul>
<li>Pour connaitre les distributions possibles, vous pouvez faire un tour dans le dossier <b>openembedded/conf/distro/</b>. Les fichiers <b>.conf</b> représentent les différents distributions.</li>
<li>Pour connaitre les machines disponibles, suivez ce lien : <a href="http://gitorious.org/angstrom/openembedded/trees/org.openembedded.dev/conf/machine" target="lien1">http://gitorious.org/angstrom/openembedded/trees/org.openembedded.dev/conf/machine</a>.</li>
</ul>
<br>
Dernière chose, on configure les variables d'environnements :<br>
<table bgcolor="black" style="color:green">
<tr><td>
// Nos variables habituelles pour la cross-compilation<br>
$ export ARCH=arm<br>
$ export CROSS_COMPILE=/opt/codesourcery/bin/arm-none-linux-gnueabi-<br>
$ export PATH=/opt/codesourcery/bin/:$PATH<br><br>
// Variables pour BitBake<br>
$ export BBPATH=$/nfs/angstrom/image-base/igep020/stuff/angstrom-setup-scripts/build:/nfs/angstrom/image-base/igep020/stuff/angstrom-setup-scripts/sources/openembedded<br>
$ export PATH=/nfs/angstrom/image-base/igep020/stuff/angstrom-setup-scripts/sources/bitbake/bin:$PATH
</td></tr>
</table>
<table bgcolor="black" style="color:red">
<tr><td>
Pensez bien à les configurer à chaque nouvelle session.
</td></tr>
</table>
<br>
Comme nos variables commencent à devenir longue à taper, je vous conseil de créer un fichier qui permettra de les charger rapidement. Pour cela créer un fichier <b>.vars_bashrc</b> où vous souhaitez (le nom n'a pas d'importance), mettez toutes les variables d'environnement que vous souhaitez dedans.<br>
Pour le charger (pour la session), tapez la commande suivante :<br>
<table bgcolor="black" style="color:green">
<tr><td>
$ source .vars_bashrc
</td></tr>
</table>
</li>
</ul>
Voila, nous avons tous nos outils d'installés et configurés pour notre igep!<br>
Pensez bien à mettre à jour <b>BitBake</b> et <b>OpenEmbedded</b> de temps en temps (je vous rappel qu'avec git, pour mettre à jour, vous devez faire un <b>git pull</b>).<br>
<br><br><br><br>
<h2><u>Construction d'images/packages</u></h2><br>
Pour avoir la fameuse <b>rootfs d'Angstrom</b>, nous allons construire l'image à l'aide des outils précédements installés. Vous allez voir, c'est un jeu d'enfant :)<br><br>
Nous allons commencer par construire une image de base d'Angstrom (très légère, mais "console" uniquement). Pour cela, tapez la commande suivante dans votre terminal :<br>
<table bgcolor="black" style="color:green">
<tr><td>
$ MACHINE=igep0020 bitbake base-image
</td></tr>
</table>
<br>
<table bgcolor="black" style="color:red">
<tr><td>
ATTENTION : La construction m'a pris environ <b>24h</b>! Durant tout ce temps, le PC doit resté connecté à internet! Sachez le, le moindre package peut prendre plusieurs heures de construction! (exemple : nano = 9h).
</td></tr>
</table>
<br>
Si vous souhaitez construire une image avec une interface, tapez ceci :<br>
<table bgcolor="black" style="color:green">
<tr><td>
$ MACHINE=igep0020 bitbake x11-image
</td></tr>
</table>
<br>
En gros vous devez saisir <b>< nom_image_souhaitee >-image</b> ou alors uniquement <b>< package ></b>.<br>
Voila, il n'y a rien de plus à savoir pour la construction :)<br>
<br><br><br><br><br>
<h2><u>Test de la rootfs Angstrom</u></h2><br>
La première chose à faire et à ne surtout pas oublier, c'est la <b>configuration réseau du PC</b>, du <b>montage nfs</b>, du <b>serveur tftp</b> et d'<b>u-boot</b>.<br><br>
Pour ce qui est du PC : (en root)<br>
<table bgcolor="black" style="color:green">
<tr><td>
$ ifconfig eth0 192.168.254.10 netmask 255.255.255.0
</td></tr>
</table>
<br>
Pour le <b>NFS</b> ajoutez simplement les lignes suivantes au fichier <b>/etc/exports</b> :<br>
<table bgcolor="black" style="color:green">
<tr><td>
# Angstrom image-base<br>
/srv/nfs/angstrom/image-base/igep020/rootfs/ 192.168.254.254(rw,no_root_squash,no_subtree_check,sync)
</td></tr>
</table>
Il n'est pas utile de supprimer les autres lignes ;).<br><br>
On pense à relancer le serveur :<br>
<table bgcolor="black" style="color:green">
<tr><td>
$ /etc/init.d/nfs-kernel-server restart
</td></tr>
</table>
<br>
Pour le <b>tftp</b>, rien à faire. Pensez juste à mettre votre <b>uImage</b> (celle que vous avez utilisé pour BusyBox par exemple) dans le dossier :<br>
<b>/srv/tftp/angstrom/base-image/igep020/kernel/</b>.<br><br>
Pour uboot, lancez <b>putty</b>, allumez la carte et entrez dans le menu de <b>config u-boot</b>. Vérifiez ensuite les variables suivantes :<br>
<table bgcolor="black" style="color:green">
<tr><td>
nfs-boot=if ping ${serverip}; then run nfs-bootargs; tftp 0x80000000 ${distro}/${project}/${machine}/kernel/uImage; bootm; fi;<br><br>
nfs-bootargs=setenv bootargs ${bootargs-base} init=/init root=/dev/nfs nfsroot=${serverip}:/srv/nfs/${distro}/${project}/${machine}/rootfs ; run addip
</td></tr>
</table>
<br>
Si vous n'avez pas ces valeurs, je vous rappel la commande pour les modifier :<br>
<table bgcolor="black" style="color:green">
<tr><td>
$ setenv nfs-boot 'if ping ${serverip}; then run nfs-bootargs; tftp 0x80000000 ${distro}/${project}/${machine}/kernel/uImage; bootm; fi;'<br><br>
$ setenv nfs-bootargs 'setenv bootargs ${bootargs-base} init=/init root=/dev/nfs nfsroot=${serverip}:/srv/nfs/${distro}/${project}/${machine}/rootfs ; run addip'
</td></tr>
</table>
<br>
Voila! Tout est ok! Maintenant vous relancez la carte (par l'alimentation ou par un petit <b>run bootcmd</b> dans <b>u-boot</b>).<br><br>
Si vous avez compilé une <b>image de base</b>, vous obtenez ceci :<br>
<center>
<img src="http://pebdev.eu/data/images/anstrom_base.jpg" alt="" width="80%" heigth="80%"/>
</center>
<br>
<i>(Comment ça mon image est floue? et pas centrée? et bien...oui^^)</i>
<br><br>
Si vous avez compilé une <b>image x11</b>, vous obtenez ceci :<br>
<center>
<img src="http://pebdev.eu/data/images/angstrom_x11.png" alt="" width="80%" heigth="80%"/>
</center>
<br><br><br>
Nous avons terminé! Au cours de cet article, vous avez pu remarquer l'avantage majeur de cette distribution : sur quelques Mo vous avez une rootfs avec une interface graphique ultra légère! C'est une très bonne base de travail ;)<br>
Pour la rootfs "console" par contre le gain est beaucoup moins important. En effet, environ 24h de construction est peut être beaucoup pour un simple rootfs... Après c'est intéressant de savoir que cela existe.<br><br>
Si vous avez des questions, remarques ou autres, les com' ci-dessous sont là pour ça.
</p>[IGEP v2][BusyBox] Créez votre distributionurn:md5:e7b71f4a2f5d15a227a508776c0643d82010-11-22T14:21:00+01:00PEBDéveloppements ARM<p>
Allez, c'est parti! Aujourd'hui, nous allons créer notre distribution embarquée pour l'IGEP. L'avantage sera majeur : nous intégrerons uniquement ce que nous voulons.<br><br>
</p><p>
<br>
<center><img src="http://pebdev.eu/data/images/box-icone.png" alt="" /></center>
<br><br>
Dans cet article nous utiliserons un <b>montage NFS</b> et un <b>serveur tftp</b> pour faire nos tests. Je vous conseil donc très fortement de lire le post à ce sujet avant d'attaquer ce morceau (<a href="http://pebdev.eu/index.php?article19/igepv2-kernel-et-rootfs-via-tftp-et-nfs" target="peb24">[IGEPv2] Kernel et Rootfs via tftp et nfs</a>).<br><br>
Nous utiliserons aussi <b>Git</b>, un gestionnaire de version. Si vous ne l'avez pas, installez le :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ apt-get install git
</td></tr>
</table>
<br>
Nous aurons aussi besoin de la librairie <b>ncurses</b> pour disposer d'une interface plus conviviale lors des <b>menuconfig</b> :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ apt-get install libncurses5-dev
</td></tr>
</table>
<br><br><br><br>
<h2><u>Préparation de notre environnement de travail</u></h2>
<br>
On va commencer par le plus simple, créer nos dossiers. Comme dans l'article précédent, nous allons suivre cette hiérarchie de dossier :<br>
<b>/srv/tftp/pebdev-dist/image-base/igep020/kernel/<br>
/srv/nfs/pebdev-dist/image-base/igep020/rootfs/</b><br><br>
Nous devrons utiliser le Bourne Shell, si vous êtes sur Debian :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ dpkg-reconfigure dash
</td></tr>
</table>
Répondre <b>NON</b>.
<br><br><br><br><br><br>
<h2><u>Chaîne de compilation croisée</u></h2>
<br>
Nous allons compiler sur notre PC des fichiers qui devront être exécutés sur une plate-forme ARM. Nous ne pouvons donc pas utiliser le compilateur gcc classique. Si nous le faisons, les fichiers pourront être exécutés uniquement sur une plate-forme i386 (un PC). En effet, le compilateur va transformer un code source en une suite d'instructions compréhensible par la plate-forme cible. Voila pourquoi nous devons utiliser un compilateur croisé, et dans notre cas, pour une cible ARM.<br><br>
Notre choix se portera sur <b>CodeSourcery G++ Lite</b>. Ne vous posez pas de question sur le G++, c'est bien un compilateur C/C++ :)<br><br>
Lien du projet G++ : <a href="http://www.codesourcery.com/sgpp" target="peb25">CodeSourcery G++</a><br><br>
Commencez par le télécharger :
<ol>
<li> Allez sur la <a href="http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite" target="peb26">page de téléchargement</a>.</li>
<li> Sélectionnez <b>GNU/Linux</b>.</li>
<li> Téléchargez la dernière version.</li>
</ol>
Ensuite nous l'installons :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ chmod +x arm-2010q1-202-arm-none-linux-gnueabi.bin<br>
$ mkdir /opt/codesourcery<br>
$ chown peb /opt/codesourcery<br>
$ ./arm-2010q1-202-arm-none-linux-gnueabi.bin
</td></tr>
</table>
Rien de compliqué lors de l'installation. Notez juste que vous devez choisir une installation <b>Custom</b> pour définir le chemin d'installation <b>/opt/codesourcery/</b>.<br><br>
Maintenant nous allons tester l'installation :<br>
<table bgcolor=black style="color:green">
<tr><td>
//On met à jour <b><u>temporairement</u></b> la variable PATH<br>
$ export PATH=/opt/codesourcery/bin:$PATH<br><br>
//Si vous souhaitez visualiser le résultat<br>
$ echo PATH<br><br>
//On regarde la version du compilateur<br>
$ arm-none-linux-gnueabi-gcc -v
</td></tr>
</table>
Normalement vous devriez avoir un pavé de texte qui s'affiche, si ce n'est pas le cas, c'est qu'il y a un problème avec l'installation ou que votre variable PATH n'a pas été mise à jour correctement...<br><br>
<table bgcolor=black style="color:red">
<tr><td>
Si vous fermez le terminal, les modifications faites sur la variable PATH seront perdues, pensez à la remettre à jour.<br>
Sinon il existe une autre méthode plus rapide qui consiste à se loguer ainsi : <br>
<b>$ su - peb</b><br>
Dans ce dernier cas, la variable sera ajoutée toute seule :)
</td></tr>
</table>
<br><br>
<br><br><br>
<h2><u>Compilation d'un noyau de base</u></h2>
<br>
Attention aux âmes sensibles... On est entre nous, donc pour la préparation du noyau pour l'IGEP, on va bourrinner et en faire le strict minimum :p<br>
Par là, comprenez que nous allons récupérer les sources d'un noyau linux omap, mais qu'on va le compiler en utilisant une configuration déjà préparée. Nous toucherons éventuellement 2,3 paramètres, mais attention, pas plus! ;)<br><br>
Allez, on télécharge ce noyau omap qu'ISEE nous propose pour l'IGEP (<a href="http://git.igep.es/" target="peb31">http://git.igep.es/</a>). Pour cela on va cloner le repo avec git (attention ça prend du temps : ~20min pour moi.<b style="color:red">NE PAS ETRE EN ROOT</b>) :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ cd /srv/tftp/pebdev-dist/image-base/igep020/kernel/<br>
$ git clone git://git.igep.es/pub/scm/linux-omap-2.6.git
</td></tr>
</table>
<br>
La première étape après le téléchargement, c'est de bien choisir le noyau que l'on souhaite :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ cd linux-omap-2.6<br><br>
//On regarde les différentes versions<br>
$ git tag<br><br>
//On choisi la dernière version<br>
$ git checkout -b v2.6.35.9-0 v2.6.35.9-0<br>
</td></tr>
</table>
<br>
Juste avant, pour la compilation croisée, on doit configurer 2 variables :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ export ARCH=arm<br>
$ export CROSS_COMPILE=/opt/codesourcery/bin/arm-none-linux-gnueabi-
</td></tr>
</table>
Cela permet de renseigner notre cible et le compilateur à utiliser.<br><br>
Ensuite on charge la configuration pour notre carte. Pour cela on va chercher une configuration qui comporterait le mot <b>igep</b> :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ cd linux-omap-2.6<br>
$ make help | grep igep
</td></tr>
</table>
<br>
Et là on cherche dans le résultat un fichier de configuration qui pourrait aller pour notre carte igep... et ça tombe bien! il y a un fichier qui se nomme <b>igep0020_defconfig</b>! On va donc utiliser cette configuration :) <br><br>
Maintenant on charge le fichier de configuration :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ make PREFIX=/opt/codesourcery/bin/arm-none-linux-gnueabi- igep0020_defconfig
</td></tr>
</table>
On lance ensuite le menu de configuration :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ make PREFIX=/opt/codesourcery/bin/arm-none-linux-gnueabi- menuconfig
</td></tr>
</table>
A titre indicatif, ici on peut modifier la configuration du noyau. Bien sur nous, nous allons prendre soin de ne rien toucher, le fichier de configuration c'est chargé de tout ça^^<br><br>
Donc c'est parti, on peut compiler (~45min) :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ make PREFIX=/opt/codesourcery/bin/arm-none-linux-gnueabi- uImage modules
</td></tr>
</table>
<b>Note :</b> si à la fin de la compilation un message vous indique que l'<b>uImage</b> n'a pas pu être générée parce qu'il manque le package qui va bien (et dont je ne me souviens pas du nom^^⁾, installez le et retapez la commande précédente.<br><br>
Voila, nous avons notre noyau. Il se nomme <b>uImage</b> et se trouve dans :<br>
<b>/srv/tftp/pebdev-dist/image-base/igep020/kernel/linux-omap-2.6/arch/arm/boot/</b>.<br><br>
A noter aussi, le mot <b>modules</b> va nous permettre de générer les drivers que l'on pourra ajouter à la rootfs par la suite.<br><br>
<br><br><br><br><br>
<h2><u>Rootfs de base avec BusyBox</u></h2>
<br>
Nous avons un noyau, nous pouvons donc nous attaquer à la rootfs. Dans un premier temps, nous allons mettre le strict minimum de sorte à avoir un shell.<br>
Pour cela il existe un petit outils assez pratique : <b>BusyBox</b>.<br><br>
On le télécharge avec Git (<b style="color:red">NE PAS ETRE EN ROOT</b>), faites bien attention au chemin cible : <br>
<table bgcolor=black style="color:green">
<tr><td>
$ cd /srv/nfs/pebdev-dist/image-base/igep020/<br>
$ git clone git://git.busybox.net/busybox
</td></tr>
</table>
Si vous avez fermé votre terminal après la compilation du noyau, pensez bien à vous loguer correctement et à configurer les 2 variables pour la compilation :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ export ARCH=arm<br>
$ export CROSS_COMPILE=/opt/codesourcery/bin/arm-none-linux-gnueabi-
</td></tr>
</table>
On lance ensuite le menu de configuration :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ cd busybox/<br>
$ make PREFIX=/opt/codesourcery/bin/arm-none-linux-gnueabi- menuconfig
</td></tr>
</table>
Ensuite dans le menu <b>BusyBox Settings > Build Options</b>.<br>
Cochez la case (touche espace) : <b>[*] Build BusyBox as a static bianry</b><br>
Complétez aussi la ligne pour la cross-compilation : <b>(/opt/codesourcery/bin/arm-none-linux-gnueabi-) Cross Compiler prefix</b><br><br>
Nous allons aussi changer le chemin d'installation, pour cela revenez au menu principal, est allez dans <b>BusyBox Settings > Installation Options</b>.<br>
Pour l'option <b>BusyBox installation prefix</b> configurez le chemin suivant <b>../rootfs/</b>
<br><br>
Nous n'avons que cela à configurer. Faites donc <b>Exit</b> le nombre de fois qu'il faut pour quitter le menu. Lorsqu'on vous le demande, enregistrez la nouvelle configuration.<br><br>
Tout est prêt, nous pouvons compiler!
<table bgcolor=black style="color:green">
<tr><td>
$ make PREFIX=/opt/codesourcery/bin/arm-none-linux-gnueabi- install
</td></tr>
</table>
Nous avons notre <b>rootfs</b> dans <b>/srv/nfs/pebdev-dist/image-base/igep020/rootfs/</b>.<br><br>
Nous ajoutons les modules du noyau :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ cd /srv/tftp/pebdev-dist/image-base/igep020/kernel/linux-omap-2.6<br>
$ make PREFIX=/opt/codesourcery/bin/arm-none-linux-gnueabi- modules_install INSTALL_MOD_PATH=/srv/nfs/pebdev-dist/image-base/igep020/rootfs/
</td></tr>
</table>
<br>
Et enfin, pour terminer, nous ajoutons les noeuds de périphériques statiques. Pour cela nous utiliserons un petit programme que nous allons commencer par télécharger : <br>
<table bgcolor=black style="color:green">
<tr><td>
$ apt-get install makedev
</td></tr>
</table>
Maintenant on l'utilise :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ cd /srv/nfs/pebdev-dist/image-base/igep020/rootfs/<br>
$ mkdir dev<br>
$ cd dev/<br>
$ su root<br>
$ /sbin/MAKEDEV console<br>
$ /sbin/MAKEDEV fb0<br>
$ /sbin/MAKEDEV null<br>
$ /sbin/MAKEDEV std<br>
$ /sbin/MAKEDEV tty<br>
$ /sbin/MAKEDEV ttyS<br>
$ /sbin/MAKEDEV hd<br>
</td></tr>
</table>
<br>
Voila, notre rootfs est prête!
<br><br><br><br><br><br>
<h2><u>Test de la distribution par tftp et NFS</u></h2>
<br>
Si vous vous souvenez bien (cf. article précédent), la première chose à faire est de configurer le tftp et le nfs. Pour le tftp, nous n'avons rien à modifier sur le PC, par contre pour le nfs nous devons mettre à jour le chemin d'accès.<br><br>
Pour cela on édite le fichier <b>/etc/exports</b>, on commente le chemin qui pointe vers la rootfs d'Android et on ajoute la ligne suivante :<br>
<table bgcolor=black style="color:green">
<tr><td>
# pebdev-dist image-base<br>
/srv/nfs/pebdev-dist/image-base/igep020/rootfs/ 192.168.254.254(rw,no_root_squash,no_subtree_check,sync)
</td></tr>
</table>
On redémarre le serveur nfs pour terminer :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ /etc/init.d/nfs-kernel-server restart
</td></tr>
</table>
<br>
On pense aussi à configurer l'adresse IP du PC :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ ifconfig eth0 192.168.254.10
</td></tr>
</table>
<br>
Maintenant on doit reconfigurer <b>uboot</b>. On branche la carte, on interrompt la séquence d'autoboot grâce à la liaison série (si cela ne vous parle pas, allez faire un tour sur l'article précédent), et on change les variables d'environnement qu'il faut :<br>
<table bgcolor=black style="color:green">
<tr><td>
//On change le nom de la distribution<br>
$ setenv distro 'pebdev-dist'<br><br>
//On change l'accès au noyau<br>
$ setenv nfs-boot 'if ping ${serverip}; then run nfs-bootargs; tftp 0x80000000 ${distro}/${project}/${machine}/kernel/linux-omap-2.6/arch/arm/boot/uImage; bootm; fi;'<br><br>
//On sauvegarde les variables<br>
$ saveenv
</td></tr>
</table>
<br>
Voila! Tout est prêt! On lance la commande <b>run bootcmd</b> à uboot pour voir le résultat...<br><br>
<center>
<img src="http://pebdev.eu/data/images/busybox_rootfs.jpg" alt="" width="90%" height="90%"/>
</center>
<br>
Si vous branchez un clavier et que vous appuyez sur une touche vous aurez accès au shell.<br><br>
Nous verrons dans un prochain article comment rendre notre roofs plus conviviale.<br><br>
Si vous avez des questions, comme d'habitude, n'hésitez pas à utiliser les com ci-dessous ;)<br><br>
</p>[IGEP v2] Kernel et Rootfs via tftp et nfsurn:md5:14e1000b8f86fc3964edd10accc731ca2010-11-21T13:42:00+01:00PEBDéveloppements ARM<p>
Après avoir réussi à démarrer Android sur l'IGEP à partir de la microSD, nous allons mettre en place un environnement de développement pour éviter d'avoir à manipuler sans cesse la microSD. Pour cela nous allons utiliser un serveur tftp pour que la carte récupère le noyau à partir du PC, et un montage nfs pour que la carte charge la rootfs directement à partir de notre dossier de travail.<br>
</p><p>
<br><br>
<center><img src="http://pebdev.eu/data/images/nfs_mount.png" alt="" /></center>
<br><br>
Remarque : Il est fortement conseillé de lire l'article précédent : <a href="http://pebdev.eu/index.php?article18/igepv2-kernel-et-rootfs-sur-minisd" targe="peb23">LIEN</a>.<br><br>
Commençons par installer les packages :
<table bgcolor=black style="color:green">
<tr><td>
$ apt-get install tftpd nfs-kernel-server
</td></tr>
</table>
<br>
On a va ensuite définir notre environnement de travail (hiérarchie de nos dossiers) ainsi :<br>
<b>
/ srv / tftp /android / image-base / igep020 / kernel /<br>
/ srv / nfs /android / image-base / igep020 / rootfs /
</b><br><br>
Pourquoi de cette manière? Afin de suivre la structure suivante :<br>
<b>[distribution] / [Projet] / [plate-forme] /</b><br><br>
Respectez cette structure, c'est important pour la suite ;)<br><br>
<b style="color:red"><u>Important :</u> pour éviter les Access violation dans le futur, et après avoir créé ces dossiers, revenez dans <i>/srv</i> et changez les accès :</b><br>
<table bgcolor=black style="color:red">
<tr><td>
$ chmod -R 777 tftp<br>
$ chmod -R 777 nfs
</td></tr>
</table>
<br><br><br><br><br>
<h2><u>Mise en place du serveur tftp</u></h2>
<br>
Rien de particulier à faire pour configurer le serveur tftp, sachez juste que le fichier de configuration est le suivant : <b>/etc/inetd.conf</b>. Si vous souhaitez le modifier n'oubliez pas de taper la commande <b>killall -HUP inetd</b> après.<br><br>
Vous pouvez copier le noyau Android fourni par ISEE dans le dossier <b>tftp/android/...</b> (<a href="http://pebdev.eu/data/telechargements/igep/uImage-2.6.29-igep0020-20100407145010.bin">uImage-2.6.29-igep0020-20100407145010.bin</a>).<br><br>
<table bgcolor=black style="color:red">
<tr><td>
Note : pensez bien à renommer le noyau uImage-2.6.29-igep0020-20100407145010.bin en uImage (pensez bien à enlever le .bin), sans quoi uboot ne trouvera pas l'image.
</td></tr>
</table>
<br>
Pour le fichier <b>boot.ini</b> ne le copiez pas comme dans l'article précédent, je vous expliquerai plus bas le pourquoi ;)<br><br>
Voila, pour le serveur tftp c'est bon!
<br><br><br><br><br><br>
<h2><u>Mise en place du montage NFS</u></h2>
<br>
Nous allons éditer le fichier de configuration NFS.<br>
Éditez le fichier<b>/etc/exports</b> et ajoutez la ligne suivante :<br>
<table bgcolor=black style="color:green">
<tr><td>
# Android image-base<br>
/srv/nfs/android/image-base/igep020/rootfs 192.168.254.254(rw,no_root_squash,no_subtree_check,sync)
</td></tr>
</table>
<br>
Remarque : l'adresse IP 192.168.254.254 correspond à l'IP par défaut de l'IGEP.<br><br>
On redémarre le serveur nfs pour terminer :<br>
<table bgcolor=black style="color:green">
<tr><td>
/etc/init.d/nfs-kernel-server restart
</td></tr>
</table>
Vous pouvez extraire (en root) la <b>rootfs</b> dans le dossier <b>nfs/android/...</b> (<a href="http://pebdev.eu/data/telechargements/igep/android-image-eclair-2.1-update1-20100407145010.tar.bz2" target="peb22">android-image-eclair-2.1-update1-20100407145010.tar.bz2</a>) :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ tar xvfj android-image-eclair-2.1-update1-20100407145010.tar.bz2 -C /srv/nfs/android/image-base/igep020/rootfs/
</td></tr>
</table>
Le NFS est prêt.
<br><br><br><br><br><br>
<h2><u>Configuration d'u-boot</u></h2>
<br>
U-boot permet à la carte de démarrer le système. Ainsi il est intéressant de connaître 2,3 commandes importantes pour interagir avec lui.<br><br>
Vous vous souvenez du fichier <b>boot.ini</b> que nous avons créé dans l'article précédent? Vous deviez vous demander à quoi servait ce fichier? Et bien il permet de paramétrer uboot de façon "temporaire", afin de modifier certains paramètres. Si nous ne souhaitons pas utiliser ce fichier (notre cas ici), nous devons alors paramétrer directement uboot.<br><br>
Lorsque vous branchez la carte, vous pouvez voir via la liaison série un message vous invitant à appuyer sur une touche pour stopper le processus de boot. Faites le, vous accéderez ainsi aux entrailles de uboot ;)<br><br>
<i>Juste à titre indicatif, je suis passé de minicom à putty pour l'interface série. La raison de ce changement est l'impossibilité d'envoyer des commandes avec minicom. En gros, si vous appuyez sur une touche et que le compteur continu son avancé folle, c'est que vous rencontrez le même problème que moi. Deux solutions s'offrent à vous, soit vous trouvez une solution avec minicom, soit vous utilisez putty :p</i><br><br>
Si vous souhaitez passer aussi sur putty, pensez à aller dans <b>Terminal</b>, de cocher <b>implicit CR in every LF</b>, puis <b>Force On</b> pour les options <b>Line discipline</b>.<br>
Minute astuce : pour copier dans putty faites un clic droit, pour coller faites un clic gauche-droit.<br><br>
Revenons en à U-boot. Voici les principales commandes :<br>
<ul>
<li><b>printenv</b> : permet d'afficher les variables 'environnement.</li>
<li><b>setenv</b> : permet de changer la valeur d'une variable. </li>
<li><b>run</b> : lance ce que vous indiquez après cette commande.</li>
<li><b>saveenv</b> : sauvegarde les changements.</li>
<li><b>help</b> : aide d'u-boot</li>
</ul>
Maintenant intéressons nous aux variables plus en détail.<br>
<ul>
<li>La variable <b>bootcmd</b>, permet de définir la séquence de boot. Si vous faites un <b>printenv bootcmd</b> vous obtiendrez l'ordre de boot suivant :<br>
<table bgcolor=black style="color:green">
<tr><td>
bootcmd=run mmc-boot; run nfs-boot; run onenand-boot
</td></tr>
</table>
<br>
Si vous souhaitez intervertir la microSD et le NFS par exemple, vous pouvez utiliser la commande <b>setenv</b> :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ setenv bootcmd 'run nfs-boot; run mmc-boot; run onenand-boot'
</td></tr>
</table>
</li>
<li>La variable <b>serverip</b> définit l'adresse IP du serveur (sérieux? :p), nous retiendrons donc que l'adresse ip du pc devra être <b>192.168.254.10</b>.<br><br>
</li>
<li>Les variables <b>distro</b>, <b>project</b> et <b>machine</b> doivent vous rappeler quelque chose... En effet, je vous en ai parlé au tout début de cet article! Elles vont définir le chemin d'accès pour le montage nfs et pour accéder au serveur tftp.<br><br>
Nous allons donc les modifier pour que cela puisse coller avec ce qu'on a défini plus haut :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ setenv distro 'android'<br>
$ setenv project 'image-base'<br>
$ setenv machine 'igep020'<br>
</td></tr>
</table>
<br>
</li>
<li>Les variables <b>nfs-bootargs</b> et <b>nfs-boot</b> contiennent le chemin d'accès nfs et tftp. Il faut donc les adapter à notre environnement. La variable <b>bootargs-base</b> paramètre divers périphériques, nous la reprendrons aussi pour adapter l'affichage : <br><br>
Initialement nous avons :<br>
<table bgcolor=black style="color:green">
<tr><td>
bootargs-base=mem=512M console=ttyS2,115200n8 console=tty0 omapfb.mode=dvi:1024x768MR-16@60<br><br>
nfs-bootargs=setenv bootargs ${bootargs-base} root=/dev/nfs nfsroot=${serverip}:/srv/nfs/${distro}/${project}/${machine} ; run addip<br><br>
nfs-boot=if ping ${serverip}; then run nfs-bootargs; tftp 0x80000000 ${distro}/${project}/${machine}/uImage; bootm; fi;<br>
</td></tr>
</table>
<br>
Nous les remplaçons par :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ setenv bootargs-base 'mem=512M console=ttyS2,115200n8 console=tty0 omapfb.mode=dvi:1024x768MR-16@60 omap-dss.def_disp=dvi'<br><br>
$ setenv nfs-bootargs 'setenv bootargs ${bootargs-base} init=/init root=/dev/nfs nfsroot=${serverip}:/srv/nfs/${distro}/${project}/${machine}/rootfs ; run addip'<br><br>
$ setenv nfs-boot 'if ping ${serverip}; then run nfs-bootargs; tftp 0x80000000 ${distro}/${project}/${machine}/kernel/uImage; bootm; fi;'<br>
</td></tr>
</table>
<b><u>Remarque :</u></b> dans <b>nfs-bootargs</b> nous devons aussi ajouter l'accès init (init=/init). Lorsque nous travaillons avec la microSD, ce paramètre était dans le fichier <b>boot.ini</b>.<br><br>
Voila, on a tout bien configuré, on peut sauvegarder :<br>
<table bgcolor=black style="color:green">
<tr><td>
$ saveenv
</td></tr>
</table>
</li>
</ul>
Voila! Maintenant vous êtes capable de, soit d'utiliser un fichier <b>boot.ini</b>, soit de paramétrer directement <b>uboot</b> :)
<br><br><br><br><br><br>
<h2><u>Lancement d'android</u></h2>
<br>
On configure la carte Ethernet du PC :
<table bgcolor=black style="color:green">
<tr><td>
$ ifconfig eth0 192.168.254.10
</td></tr>
</table>
<br>
<table bgcolor=black style="color:red">
<tr><td>
Cet adressage est valable pour la session actuelle, si vous redémarrez votre PC n'oubliez pas de reconfigurer l'adresse IP d'eth0! Si vous souhaitez fixer définitivement l'adresse IP, modifiez le fichier <i>/etc/network/interfaces</i>.
</td></tr>
</table>
Ensuite on pense à bien retirer la microSD (dans le cas où vous n'avez pas touché la variable bootcmd d'uboot) et on y va, on envoi un petit <b>run bootcmd</b> à uboot (via putty ou minicom) pour démarrer le système ou alors si vous aviez éteint votre IGEP, et bien vous la rebranchez^^<br><br>
On observe ce qui se passe. Première étape, la récupération du noyau par tftp par la carte :
<table bgcolor=black style="color:green">
<tr><td>
Using smc911x-0 device<br>
TFTP from server 192.168.254.10; our IP address is 192.168.254.254<br>
Filename 'android/image-base/igep020/kernel/uImage'.<br>
Load address: 0x80000000<br>
Loading: #################################################################<br>
#################################################################<br>
#################################################################<br>
#################################################################<br>
#################################################################<br>
#################################################################<br>
##########################<br>
done<br>
</td></tr>
</table>
Ici la récupération c'est bien déroulée. Si jamais cela ne fonctionne pas :<br>
<ul>
<li><b>Erreur (1) [Fichier non trouvé] :</b> la configuration du chemin d'accès est mauvaise, soit dans uboot, soit dans le fichier de config de tftp. Comme vous n'avez théoriquement pas modifié la config de tftp, le problème vient de uboot ;).</li>
<li><b>Erreur (2) [Access Violation] :</b> Faites un petit <b>chmod -R 777 /srv</b>.</li>
</ul>
Ensuite au tour du montage NFS. Les lignes importantes sont les suivantes :<br>
<table bgcolor=black style="color:green">
<tr><td>
IP-Config: Complete:<br>
device=eth0, addr=192.168.254.254, mask=255.255.255.0, gw=192.168.254.10,<br>
host=192.168.254.254, domain=, nis-domain=(none),<br>
bootserver=192.168.254.10, rootserver=192.168.254.10, rootpath=<br>
Looking up port of RPC 100003/2 on 192.168.254.10<br>
Looking up port of RPC 100005/1 on 192.168.254.10<br>
VFS: Mounted root (nfs filesystem) on device 0:13.<br>
</td></tr>
</table>
La dernière ligne nous informe que le montage NFS a été correctement fait.<br>
Si ce n'est pas le cas, le problème vient soit du fichier de config du nfs, soit de uboot.<br><br>
Dernière étape, le chargement du <b>rootfs</b>. Là, pas de secret. Si vous avez un <b>kernel panic</b> c'est que vous avez fait une bourde soit dans la configuration d'<b>uboot</b>, soit dans la mise en place des fichiers...<br><br><br>
Si tout se passe bien vous devriez obtenir ça sur la sortie HDMI :<br><br>
<center><img src="http://pebdev.eu/data/images/chargement_android.jpg" alt="" /></center>
<br><br>
Si vous avez un soucis, une remarque ou autres, les commentaires ci-dessous sont là pour ça ;)
<br><br>
</p>[IGEP v2] [Android] Kernel et Rootfs sur miniSDurn:md5:a2243a9664512fd16a34cc0a29a661d62010-11-21T01:02:00+01:00PEBDéveloppements ARM<p>
La présentation de l'IGEP étant faite, nous allons mettre les mains dans le cambouis avec comme objectif le boot d'Android pré-compilée, à partir d'une carte miniSD.<br>
</p><p>
<br><br>
<center><img src="http://pebdev.eu/data/images/android-rendered.jpg.tb" alt="" /></center>
<br><br>
Lien vers l'article précédent : <a href="http://pebdev.eu/index.php?article17/premiers-pas-avec-une-carte-igepv2" target="pebdev_2">LIEN</a><br><br>
<b>Objectif :</b> démarrer Android 2.1 (eclair) sur l'IGEP à partir de la microSD.<br><br><br><br>
<h2><u>Formatage de la microSD</u></h2>
<br>
Nous allons tout d'abord faire deux partitions sur la microSD :<br>
<ul>
<li>Une partition VFat pour le noyau</li>
<li>Une seconde partition au format ext2 pour le rootfs</li>
</ul>
On va utiliser l'utilitaire de disque (Applications > Outils système) pour faire ça rapidement :<br>
<ol>
<li>Sélection du bon disque (Generic - Multi-Card pour ma part)</li>
<li>On démonte la partition</li>
<li>On supprime la partition déjà présente</li>
<li>On créer la première partition <b>boot</b> en Fat (200Mo est largement suffisant)</li>
<li>On créer la seconde partition <b>rootfs</b> en ext2 (le reste de la microSD) en <b>décochant les cases</b></li>
</ol>
<br><br><br><br>
<h2><u>Mise en place du noyau</u></h2>
<br>
Maintenant nous allons mettre le noyau pour Android fourni par isee sur la partition <b>boot</b>.<br>
Téléchargez l'image : <a href="http://pebdev.eu/data/telechargements/igep/uImage-2.6.29-igep0020-20100407145010.bin">uImage-2.6.29-igep0020-20100407145010.bin</a><br>
<b style="color:red">Note : pensez bien à renommer le noyau uImage-2.6.29-igep0020-20100407145010.bin en uImage (pensez bien à enlever le .bin), sans quoi uboot ne trouvera pas l'image.</b><br><br>
Créez ensuite sur votre disque le fichier <b>boot.ini.android</b> : <br>
<table bgcolor=black style="color:green">
<tr><td>
# Set bootargs for android MMC boot<br>
setenv bootargs 'mem=512M androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootdelay=3 init=/init rootwait omap-dss.def_disp=dvi omapfb.video_mode=800x600MR-16@60'<br>
# Read kernel from FAT partition<br>
fatload mmc 0:1 80100000 uImage<br>
# and boot ...<br>
bootm 80100000
</td></tr>
</table>
On le converti en fichier <b>boot.ini</b> pour uboot : <br>
<table bgcolor=black style="color:green">
<tr><td>
$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Boot setup script' -d boot.ini.android /media/boot/boot.ini
</td></tr>
</table>
Voila, le fichier <b>boot.ini</b> a été écrit sur la partition <b>boot</b>. Sachez juste pour le moment que ce fichier sert à paramétrer uboot (ci cela ne vous dit rien, ce n'est pas grave, nous en reparlerons dans un autre article). Avant de mettre la rootfs, nous allons nous assurer que le noyau démarre correctement. Mettez en place la liaison série, mettez la microSD dans l'IGEP et branchez.<br>
Si vous faites attention à ce qui s'affiche, vous voyez les différentes étapes :
<ul>
<li>L'x-loader charge u-boot.bin</li>
<li>L'u-boot détecte le matériel de l'IGEP</li>
<li>La microSD est détectée :<b>mmc0</b></li>
<li>Lecture de l'uImage sur la microSD/<li>
<li>Chargement du noyau</li>
</ul>
Si vous n'obtenez pas cela et que l'IGEP boot sur Poky, c'est que vous avez fait une bourde.<br><br><br><br><br>
<h2><u>Mise en place du rootfs</u></h2>
<br>
Là non plus, rien de compliqué. Téléchargez l'image rootfs :<br>
<a href="http://pebdev.eu/data/telechargements/igep/android-image-eclair-2.1-update1-20100407145010.tar.bz2">android-image-eclair-2.1-update1-20100407145010.tar.bz2</a><br><br>
Ensuite nous décompressons l'archive sur la partition <b>rootfs</b>: (en root)<br>
<table bgcolor=black style="color:green">
<tr><td>
$ tar xvfj android-image-eclair-2.1-update1-20100407145010.tar.bz2 -C /media/rootfs/
</td></tr>
</table>
Démontez la microSD, mettez la dans l'IGEP, branchez, patientez un peu et là... vous avez des Chocapics!<br><br>
<center><img src="http://pebdev.eu/data/images/chargement_android.jpg" alt="" /></center>
<br><br>
Si vous avez un soucis, une remarque ou autres, les commentaires ci-dessous sont là pour ça ;)
</p>[IGEP v2] Premiers pas avec l'IGEP v2urn:md5:07c0bbfd88b32d59026838f8920ff5802010-11-20T22:15:00+01:00PEBDéveloppements ARM<p>
La carte IGEP v2 de la société ISEE est un véritable petit ordinateur pour le monde de l'embarqué. Vous pourrez trouver dans ce topic des infos pour bien débuter avec.<br>
</p><p>
<br>
<center><img src="http://pebdev.eu/data/images/isee_small.jpg" alt="" /></center>
<br><br>
Commençons tout d'abord les présentations. En une phrase, ses caractéristiques sont assez impressionnantes! La carte n'est guère plus grande qu'une carte de crédit, et pourtant elle est vraiment très complète :<br><br>
<ul>
<li>TI OMAP3530: ARM CORTEX A8 core (720Mhz) + POWERVR SGX 530 core + IVA2.2 + DSP TMS320C64+</li>
<li>4Gb NAND/ 4Gb Mobile Low Power DDR SDRAM @ 200 Mhz</li>
<li>Ethernet 10/100 Mb BaseT (SMSC LAN9221i)</li>
<li>Wifi IEEE 802.11b/g (Marvell 86w8686B1)</li>
<li>Bluetooth 2.0 (CSR BC4ROM/21e)</li>
<li>Antenne intégrée, connecteur pour une externe.</li>
<li>1 x USB 2.0 OTG</li>
<li>1 x USB 2.0 Host</li>
<li>Port MicroSD</li>
<li>Port HDMI</li>
<li>Stereo audio in et out.</li>
<li>Connecteur pour I/O, Camera, SPI, UART...</li>
<li>Connecteur pour LCD.</li>
<li>RS232</li>
<li>RS485</li>
<li>Connecteur JTAG(2x7)</li>
</ul>
<br>
Pour plus d'informations sur cette carte, je vous laisse le lien du fabricant : <a href="http://www.igep.es/index.php?option=com_content&view=article&id=46&Itemid=55" target="isee">LIEN</a>.
<br><br>
<center><img src="http://www.igep.es/images/stories/igepv2_rc_photo2.jpg" width="90%" height="90%"></center>
<br>
Petite précision avant d'attaquer le morceau et juste à titre indicatif, je développe sous Debian.<br><br>
L'objectif de ce post va être de présenter les interfaces de la carte.
<br><br><br><br><br>
<h2><u>Utilisation de la liaison RS232</u></h2>
<h3>> Au niveau Hardware</h3>
Pour mettre en place la liaison série, vous devez disposer de :<br>
<ul>
<li>Un convertisseur RS232 <-> USB</li>
<li>Un câble DB9-M TO IDC-10 pour l'interface avec l'IGEP. Pour info le schéma de câblage est disponible dans le manuel software, c'est pas vraiment logique tout ça^^<br>
Le voici :<br>
<center><img src="http://pebdev.eu/data/images/igep_rs232.png" alt="" /></center>
<br>
</li>
<li>Un câble série croisé M-M (RX<->TX et TX<->RX) afin de relier les deux autres morceaux précédents. ;) Pour ce dernier, voici une petite illustration si vous ne voyez pas ;)<br><br>
<center><img src="http://pebdev.eu/data/images/rs232_croise.jpg" alt="" /></center>
<br></li>
</ul>
<h3>> Terminal : minicom</h3>
Je vous conseil <b>minicom</b> ou <b>PuTTy</b>.<br>
Avant toute chose on configure le modem sur minicom (en root) :<br>
<table bgcolor=black style="color:green">
<tr><td>
//Lancement en root pour configurer le modem<br>
$ minicom -s /dev/ttyUSB0
</td></tr>
</table>
Dans <b>Serial port Setup</b>, pour <b>E-</b>, mettre <b>115200 8N1</b> (115200bps, sans parité, 1 bit de stop et 8 bits de données). Ensuite on sauvegarde et c'est bon, le modem est prêt.<br><br>
Remarque : le menu de minicom est accessible avec CTRL+A.
<br><br><br><br><br>
<h2><u>Utilisation de la liaison Ethernet</u></h2>
<br>
Pour cela rien de bien compliqué, une simple connexion ssh est nécessaire. Si vous démarrez la carte avec la distribution déjà présente sur la NAND, vous devez procéder ainsi : (en root)<br>
<table bgcolor=black style="color:green">
<tr><td>
//Configuration de votre carte Ethernet<br>
$ ifconfig eth0 192.168.254.10<br><br>
//Connexion SSH (mot de passe letmein)<br>
$ ssh root@192.168.254.254<br>
</td></tr>
</table>
<br><br><br>
<h2><u>Les ports USB</u></h2>
<br>
Deux ports USB sont présents sur la carte :<br>
<ul>
<li>Un USB (mini) OTG (support USB 1.0/1.1./2.0)</li>
<li>Un USB A 2.0 uniquement (pour le support des USB 1.0/1.1./2.0 il vous faudra passer par un hub)</li>
</ul>
En gros, soit vous passez par un adaptateur [mini-USB]<->[USB A] avec un hub usb après, soit vous branchez le hub directement sur le port USB A.<br>
Cependant méfiez-vous! Je me branche sur l'USB A, et pour ma part seul un hub alimenté fonctionne, les autres hubs auto-alimentés (sans alimentation externe) dont je dispose n'ont jamais fonctionné...<br><br><br><br><br>
<h2><u>Le port JTAG</u></h2>
<br>
<i>En cours de rédaction...</i>
<br><br>
</p>