Retrouvez cet article dans : Linux Magazine 81
Présentation
Le N770 est un concept nouveau. Pour clarifier les choses, ce n’est pas un téléphone, il s’agit d’une " tablette internet ". Derrière ce terme se cache un excellent niveau de connectivité, la connexion à Internet est possible via une liaison bluetooth avec un téléphone qui tient alors le rôle de modem, mais surtout, le N770 nous permet très facilement d’accéder aux réseaux WiFi, que ce soit en 802.11b ou 802.11g. Au niveau matériel, le N770 embarque un OMAP 1710 de chez Texas Instruments, un microcontrôleur possédant un DSP (TMS320C55x) et un processeur arm (ARM926TEJ). Reportez-vous aux liens en fin d’article pour la page de présentation de l’OMAP 1710. Ce microcontrôleur est cadencé à une vitesse maximum de 220MHz et offre la prise en charge WiFi, USB OTG (On The Go), des capacités d’accélération matérielle des graphismes 2D (vidéos notamment du coup), un contrôleur LCD (ça tombe bien !) et est annoncé pour être " raisonnable " sur sa consommation. L’arm9 annonce une possible accélération java, ce qui ne semble pas avoir séduit Nokia, le N770 étant pour l’heure totalement exempt de support Java. On imagine que le but premier de cette option serait plutôt utile aux éventuels périphériques à venir basés sur une architecture PersonalJava, mais ça reste à vérifier dans le futur. Autour de cette belle pièce, on trouve 128Mo de stockage en mémoire flash, dont 64 sont disponibles pour vos applis et 64Mo de DDR RAM. Les capacités de stockage étant complétées par un lecteur RS-MMC (Reduced Sze MultiMedia Card), qui ressemble à une demie SDCard, il est fourni une " rallonge " permettant de l’utiliser avec un lecteur multicarte en tant que MMC conventionnelle comme on en trouve pour PC/Mac dans toutes les bonnes crémeries. L’OS du N770 porte le nom " Internet Tablet 2005 software edition " (bientôt 2006). Il se cache derrière un kernel Linux 2.6.12 modifié, notamment pour améliorer le support du processeur utilisé, un OMAP, comme évoqué plus haut. Nokia a ainsi participé en contribuant par exemple au projet dspgateway. On trouve également dans le N770 des morceaux de Debian, les applications sont notamment gérées grâce à

Maemo
Nokia avait déjà commencé à nous surprendre en offrant la possibilité de développer en Python sur ses téléphones Series 60. Ils ont depuis ouvert un site recensant leurs projets open source. Parmi ceux-ci, on trouve par exemple Perl pour téléphones Nokia, mais aussi Maemo, lequel va particulièrement nous intéresser ici car c’est la plate-forme de développement, compilation et test d’applications pour N770 et pour les (on l’espère) nombreux périphériques conformes qui suivront. Le point de rencontre autour de Maemo est le site maemo.org. On y retrouve les liens utiles, les téléchargements et l’indispensable wiki, regroupant de très bons tutoriels et des astuces incontournables.Présentation fonctionnelle
On l’a déjà dit, mais répétons-le, au-dessus de la couche matérielle, on trouve du logiciel Linux avec par exemple un kernel 2.6 avec Bluez pour bluetooth, la Glibc comme bibliothèque C standard (et pas la uClibc comme c’est souvent le cas sur les appareils de ce genre), D-Bus pour les communications entre applications en xml, SDL pour les jeux... La couche supérieure, c’est la plate-forme Hildon. L’interface utilisateur fait appel à des bibliothèques bien connues, adaptées à une utilisation sur un périphérique mobile, pour la prise en charge de la saisie par clavier virtuel et la navigation au stylet par exemple, mais tout est très proche de ce que l’on connaît. L’aspect localisation est notamment pris en charge par Pango pour communiquer en utilisant tous les alphabets nécessaires. La plate-forme Hildon organise tout ce petit monde dans un " thème de bureau " spécifique au N770 avec à gauche, des boutons de lancement rapide et les applications en cours d’exécution, en haut, des icônes de statut (connexion internet, charge batterie, utilisation mémoire et processeur via une applet supplémentaire...) et enfin, au centre, des applications " raccourcis " (les Home plugins, permettant d’avoir à l’œil l’essentiel du contenu qui nous intéresse, à la façon du Today screen des Pocket PC.On y va !
Connexion
Quand on utilise le câble de connexion pour connecter le N770 au PC, il est vu comme un disque externe, au même titre qu’une clé USB. On a ainsi accès au contenu de la carte mémoire. C’est pratique pour transférer des applications, fichiers, morceaux de musique, films, etc. Mais en tant que bon geek, on reste sur sa faim. Une petite chose à noter : tant que l’on est connecté, la carte n’est plus accessible sur le N770, vous devez démonter le lecteur amovible sur votre machine ET débrancher le câble pour que la carte redevienne accessible sur le Nokia.Installer SSH
L’installation du serveur ssh fait l’objet d’une page très bien faite sur le wiki maemo. Je ne vais donc pas la paraphraser ici. Vous la trouverez dans les liens et références. Vous aurez besoin d’un terminal pour lancer le serveur, et de toutes façons, il vous sera utile par la suite, télécharger donc xterm que vous trouverez dans le catalogue d’applications (Voir liens). Pour le transfert des clés, utilisez le fait que vous avez accès à la carte RS-MMC en branchant le câble USB. Les deux étant fournis avec le N770, profitez-en. On se connecte au N770 en tant qu’utilisateur user sur le port 2222 par défaut, puisque au terme de l’installation il sera lancé en tant qu’utilisateur sans droits. A titre d’information, on trouve sur le wiki et les mailing lists les informations nécessaires pour pouvoir devenir root sur le N770 d’au moins trois façons différentes, mais je n’en ai pas eu besoin et c’est à mon sens bien comme ça. Sachez toutefois que ce n’est pas difficile et théoriquement sans danger. J’ai testé la méthode citée dans le lien fourni en fin d’article sans dommage. Une dernière note, pour connaître l’adresse IP du N770, une solution simple (une fois connecté) consiste à cliquer sur la planète en haut à droite et à choisir gestionnaire de connexions puis, dans le menu sélectionnez Connexion Internet et enfin Adresse IP. Notons enfin que pour automatiser le lancement du serveur, on a tout intérêt à placer la ligne suivante dans le fichier/var/lib/install/etc/init.d/dropbear-server start
Outils de développement
Téléchargement et Installation
La partie la plus pénible pour développer pour le Nokia 770 est d’installer les outils. Une fois cette étape passée, le reste sera simple. Pour la suite, je partirais du principe que vous utilisez une Debian ou une distribution dérivée. A titre d’information, cet article a été écrit sur une Kubuntu 5.10. On va utiliser scratchbox, un environnement de compilation croisée. Le site maemo.org recommande d’utiliser la dernière version 0.9.8 stable. On va donc désobéir et opter pour Scracthbox 1.0.2, la plus récente. Il nous faut télécharger les éléments suivants sur le site de téléchargement de Scratchbox (voir liens) :- scratchbox-libs_1.0.2_i386.deb - scratchbox-core_1.0.2_i386.deb - scratchbox-devkit-debian_1.0.2_i386.deb - scratchbox-devkit-perl_1.0.2_i386.deb - scratchbox-toolchain-arm-gcc3.4-glibc2.3_1.0.2_i386.debLes mêmes paquets sont disponibles au format tgz, à décompresser à la racine
# dpkg -i scratchbox-libs_1.0.2_i386.deb # dpkg -i scratchbox-core_1.0.2_i386.deb # dpkg -i scratchbox-devkit-debian_1.0.2_i386.deb # dpkg -i scratchbox-devkit-perl_1.0.2_i386.deb # dpkg -i scratchbox-toolchain-arm-gcc3.4-glibc2.3_1.0.2_i386.debNous avons donc installé les bibliothèques requises (libs), la base de scratchbox (core), des outils de développement (devkit) et la chaîne de compilation croisée, le premier paquet prenant en charge la compilation pour l’émulateur et le second celle à destination du vrai périphérique. Notez que le devkit perl est nécessaire pour compiler la plupart des applications,
Configuration
On doit commencer par ajouter un utilisateur à scratchbox... Utilisez votre login Linux et remplacez donc zazou par ce dernier dans la commande ci-dessous, à lancer en tant que root :# /scratchbox/sbin/sbox_adduser zazou Add user zazou to group ‘sbox’? [yes/no] (yes): Adding user `zazou’ to group `sbox’... Done. Scratchbox user account for user zazou addedA ce moment là, vous faites aussi partie du groupe
$ groups zazou adm dialout cdrom floppy audio dip video plugdev lpadmin scanner admin sbox $ /scratchbox/login You dont have active target in scratchbox chroot. Please create one by running "sb-menu" before continuing Welcome to Scratchbox, the cross-compilation toolkit! Use ‘sb-menu’ to change your compilation target. See /scratchbox/doc/ for documentation. sb-conf: No current target [sbox-: ~] >De toute évidence, il nous reste des paramètres à configurer, mais au moins, " on est dedans... ". Il nous faut à présent exécuter
[sbox-n770: ~] >On règle immédiatement quelques détails importants pour la suite à savoir la définition des variables d’environnement
[sbox-n770: ~] > cat > .bash_profile export LC_ALL=en_GB export LANGUAGE=en_GB export DISPLAY=:1 export PAGER=less [Ctrl+D]
Suite à la création du fichier.bash_profile, soit vous vous reloguez dans scratchbox, soit vous exécutez la commande ..bash_profile.Pour simuler le fonctionnement du n770 sur la machine de développement, il nous faut un serveur X. Le choix se porte sur Xephyr. Sur Ubuntu, on peut l’installer si on a ajouté universe aux catégories de dépôts utilisables. Le paquet s’appellexserver-xephyret s’installe aisément avecapt-get(générique),synaptic(Ubuntu) ouadept(Kubuntu).Une fois Xephyr installé, on le lance avec les options adaptées au N770 dans une console " normale " (pas dans scratchbox) :
$ Xephyr :1 -screen 800x480x16 -dpi 96 -ac &Une fenêtre avec un serveur X a du être affichée, si c’est le cas, on lance l’environnement maemo dedans, dans la console scratchbox.
[sbox-n770: ~] > af-sb-init.sh startOn peut alors faire connaissance avec l’interface de cet N770 émulé. Pour le moins spartiate par rapport à l’affichage de l’appareil réel. On trouve tout de même tout de suite un terminal X et on joue avec...
Test
Quand vous tapez dans scratchbox, vous êtes dans le n770 émulé, ça revient au même. La saisie étant plus simple dans un vrai terminal, je vous déconseille de reproduire l’expérience ci-dessus. Saisissez le code et compilez-le dans scratchbox. Vous n’aurez plus alors qu’à taper
Premier contact
Pour ceux qui préfèrent le texte aux images, ce qui s’affiche dans l’image ci-dessus est :$ ls
MyDocs
$ cat > hello.c
#include <stdio.h>
int main (void) {
printf ("Hello World !\n");
return 0;
}
$ gcc -o hello hello.c
$ ./hello
Hello World !
$
Une application : Scribble
On va utiliser l’exemple du tutoriel de Gtk+-2.0, Scribble. Récupérons le source (Voir liens) et compilons-le.[sbox-n770: ~] > gcc -o scribble scribble.c -I/targets/n770/usr/include/glib-2.0 \ -I/targets/n770/usr/include/gtk-2.0 -I/targets/n770/usr/lib/glib-2.0/include \ -I/targets/n770/usr/include/pango-1.0 -I/targets/n770/usr/lib/gtk-2.0/include \ -I/targets/n770/usr/include/atk-1.0 -lgtk-x11-2.0 [sbox-n770: ~] > ./scribble
Scribble, avant
Bien ! Ca compile, ça se lance et c’est fonctionnel, on peut dessiner et quitter... Le bouton quit n’est pas beau en revanche, pas du tout n770... En relisant la documentation, on note qu’il faut lancer les applis d’une façon spéciale... Ce que l’on s’empresse de faire.
[sbox-n770: ~] > run-standalone.sh ./scribbleVoilà qui améliore le côté bouton... mais on se rend compte que lors de la miniaturisation de l’application, on ne peut pas la rappeler, car elle ne se place pas dans la barre des tâches. En outre, la fenêtre " bave " à droite et en bas au lieu d’être bien intégrée dans l’interface utilisateur.
Adaptation
Transformons cette application Gtk+ pour une meilleure intégration dans Hildon. Il nous faut tout d’abord ajouter quelques en-têtes supplémentaires.#include <hildon-widgets/hildon-app.h> #include <hildon-widgets/hildon-appview.h>On doit également modifier l’initialisation. En effet, notre fenêtre Gtk+ doit être encapsulée dans une vue Hildon, elle-même appartenant à une application Hildon. On déclare un pointeur sur notre application, de type
HildonApp *app; HildonAppView *view;Hildon utilise les vues pour choisir comment afficher ses données et lesquelles. Les vues peuvent être imaginées comme différents écrans dont un est affiché à un moment donné. Une vue est à considérer par la suite comme un conteneur Gtk+. On replace donc en toute logique l’initialisation de la fenêtre Gtk+ par celles de notre application et de sa vue. (Accessoirement, dans le code, remplacez les occurrences de la variable
window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (window, "Test Input");devient
app = HILDON_APP( hildon_app_new() ); hildon_app_set_title( app, “Scribble”); hildon_app_set_two_part_title(app, TRUE); view = HILDON_APPVIEW( hildon_appview_new(“Scribble View”)); hildon_app_set_appview( app, view );Le code se passe de commentaires. On crée l’application et on lui donne un titre. La ligne suivante (
gtk_widget_show_all (GTK_WIDGET(app));Le cast de notre application Hildon en widget Gtk+ n’est là que pour supprimer les warnings lors de la compilation. Cette application telle quelle ne fonctionnerait que quelques secondes sur un vrai N770. On doit la " connecter " au système. On utilise à cette fin le couple de fonctions
osso_context_t *osso_context;
/* Initialize maemo application */
osso_context = osso_initialize("maemoscribble", "1.0.0", FALSE, NULL);
Les paramètres de la fonctionosso_deinitialize (osso_context);Pour compiler avec les headers et bibliothèques correspondant à
[sbox-n770: ~] > gcc -o maemoscribble Scribble/src/main.c \ `pkg-config --cflags --libs gtk+-2.0 hildon-libs libosso` [sbox-n770: ~] > run-standalone.sh ./maemo_scribbleAprès ce lancement, on constate une bien meilleure intégration de l’application dans l’UI maemo, notamment en bas et à droite, grâce à l’utilisation du type de vue adapté,
Scribble, au milieu
Intégration
L’intégration basique d’une application dans maemo passe par deux fichiers spéciaux. Mais avant de s’y intéresser, on commence par placer l’exécutable dans le répertoire[Desktop Entry] Encoding=UTF-8 Version=1.0 Type=Application Name=Scribble Exec=/var/lib/install/usr/bin/maemoscribble Icon=qgn_list_gene_default_app X-Osso-Service=maemoscribbleLa première ligne du fichier .desktop doit être [Desktop Entry]. Encoding doit valoir UTF-8, Version est la version du fichier .desktop, ici 1.0. Le Type est Application, Name est le nom qui apparaîtra dans le menu, Exec est le chemin vers l’exécutable. Pour la ligne Icon, on peut utiliser un icône par défaut du système ou un icône installé par l’application (dans le répertoire
[D-BUS Service] Name=com.nokia.maemoscribble Exec=/var/lib/install/usr/bin/maemoscribbleLa première ligne du fichier .service doit être
Scribble, après
Liens :
- La page du N770 : http://www.nokia.com/770
- Présentation de l’OMAP 1710 chez Texas Instruments : http://xrl.us/ji6g
- Nokia OpenSource : http://opensource.nokia.com
- Maemo : http://www.maemo.org/
- Le WiKi Maemo : http://maemo.org/maemowiki/
- Le catalogue d’applications : http://maemo.org/maemowiki/ApplicationCatalog
- Installer ssh : http://maemo.org/maemowiki/InstallSsh
- Devenir root : http://maemo.org/maemowiki/HowDoiBecomeRoot
- ScratchBox : http://www.scratchbox.org/
- ScratchBox – téléchargements pour Debian : http://www.scratchbox.org/download/files/sbox-releases/1.0/deb/
- Scribble : http://www.gtk.org/tutorial/x2947.html#AEN2949
- Portage de GAIM sur N770 : http://www.maemo.org/platform/docs/howtos/howto_porting_an_existing_application.html
Retrouvez cet article dans : Linux Magazine 81
Retrouvez cet article dans : Linux Magazine 81





Donnez votre avis
Vous devez avoir ouvert une session pour écrire un commentaire.