I- Qu'est qu'Android ?
Android est une plateforme complète destiné aux appareils mobiles (telephone, PDA, netbook...).
Donc il à la fois un système d'exploitation, ensemble des librairies "middleware", et d'une multitude d'applications (calendrier, navigateur, gprs...).
Android est basé sur un kernel linux 2.6. Ses librairies "middleware" sont programmés en C/C++ mais le Framework est écrit en Java, d'où la nécessité d'une machine virtuelle appelée Dalvik qui est caractérisé par sa légèrité remarquable.
II-Pourquoi le portage ?
- le protage d'Android est encore un sujet très récent vu que le produit est sortie vers la fin de l'année dernière. Ici le but de portage est de faire fonctionner Android sur le matérielle cible en tenant compte des périphériques présents (usb, ecran tactile, son...).
- la cible "DEV2410 de pragmatec": une carte d'évaluation basée sur l'architecture de microprocesseur ARM9 version 4T +détails.
III- Les Grandes phases
1- Couche basse (au niveau du noyau)
L'objectif est d'intégrer les drivers dans le noyau afin qu'ils soient pris en compte par le systeme lors de démarrage. Puisque que le noyau géneric d'android n'inclu pas les drivers de la cibles, alors il faudra soit créer des nouveaux pilotes qui est une tache très difficile et nécéssite beaucoup de connaissance. Alors nous allons juste réutilisé les drivers fournient par le constructeur de la carte en apportant une légère modifications afin qu'ils soient compatible avec Android.
Voici donc les étapes à suivre:
a- Téléchargement des sources:
Le noyau (
google) et le compilateur croisé (
CodeSourcery: EABI Sourcery G++ Lite 2009q1-161 for ARM EABI)
b- Désarchivage du noyau et installation du compilateur
Un compilateur croisé est un compilateur qui permet de générer un exécutable (fichier objet) destiné à une plateforme différente (cible) du celle de développement (host). Dans notre cas, la cible c'est la carte DEV2410 (ARM9) et le host c'est le PC portable ou fixe (x86) où nous effections la conpilation.
c- Configuration du noyau:
$ cd kernel.git
$ make menuconfig
- Les options importantes:
- EABI: afin de supporter l'espace utilisateur d'android
- Tous les drivers propre à Android (binder, ashmem,...)
- les drivers de la cible (touchscreen, usb, led...)
- les drivers utiles: system des fichiers (ext2,yaffs,nfs...)
- ...
NB: utiliser "/" pour faire des recherches.
d- Compilation:
Si la configuration c'est bien passée nous pouvons maintenant passer à la compilation en utilisant notre compilateur croisé.
make [options] [var env] [format]Image
-
options: dans le cas de plusieurs processeurs nous pouvons utiliser "-j x"
(x = 4 fois le nombre des processeurs)
- les "var env": il faut préciser l'architecture cible (ARCH) et le compilateur croisé (CROSS_COMPILE) à utiliser
-
format: cela dépend du l'utilisation du noyau:
- zImage ou bzImage: le noyau sera compréssé respectivement en gz ou bz2
- uImage: dans le cas où vous utiliser NFS (mais il faudra inclure l'option CONFIG_NFSROOT lors de la configuration).
e- Récupération du noyau:
Après la compilation le noyau résultat se trouve dans "arch/arm/boot" sous le nom [
z|bz|u]Image suivant le format.
2- Couche supérieur (Espace Utilisateur)