Linux et le Palm Pilot

Guide sous licence GPLv2. Emmanuel Michon (emmanuel.michon@polytechnique.org). Dernière modification le 24 avril 1999
Cette  page initialement sur le site de l'ENST, a été reprise par Christian Gennerat qui en assure la maintenance.

J'ai acheté il y a deux mois un Palm Pilot (mon modèle est un Palm1000 upgradé en PalmIII, donc un dinosaure en apparence, un modèle récent à l'intérieur).

Je l'utilise exclusivement sous Linux, ce qui pose quelques problèmes au départ pour trouver ses marques, mais en fin de compte, je pense que les Linuxiens sont plutôt bien servis pour un OS dit ``marginal'', surtout pour la programmation. Comme d'habitude, toutes les ressources sont gratuites, et quelques unes en GPL. J'estime que tout ce qu'on peut faire sous Windows peut être fait sous Linux, de façon moins décorative, mais pour moi c'est un avantage.

Et comme d'habitude, à chaque fois que je marque Linux, on peut mettre n'importe quel UN*X à la place... pourvu qu'il soit équipé d'une bonne base GNU (gcc).

Ethnologie? --- La rencontre des mondes Linux et Palm produit parfois des effets curieux: beaucoup de développeurs utilisent gcc mais le shareware est roi, et on trouve des aberrations (prc-tools-0.5.0/README) comme:

libc.a,
libc.sa         Small standard C library (static and shared versions).
                Includes type stuff, printf and friends.  putchar()
                and printf() send output to the LCD (even does scrolling!).
                I would not expect this to be terribly useful for anything
                except debugging, or perhaps a terminal program.  String
                functions are also included, as are memmove, bcopy and
                those sorts of things.  Much of this library thanks to
                Linus Torvalds, from the Linux kernel lib directory.  He
                gave me permission to release this stuff _without_ GPL
                encumberance.
De la même façon, l'API de PalmOS est entièrement spécifiée, mais au cas où vous voudriez obtenir une simple copie de ROM de Palm Computing, il faudrait renvoyer à Palm Computing deux exemplaires signés sur papier d'un formulaire où vous acceptez la chose suivante:
Section 5. Palm Computing se donne le droit de perquisitionner votre
domicile et d'inspecter votre ordinateur avec un préavis de 24 heures.
et si vous n'êtes pas d'accord vous pouvez toujours appeler leur avocat.

Bon allez rentrons dans le vif du sujet maintenant...

Un Palm Pilot: pourquoi, à quoi ça sert?

Évidemment, je ne compare pas le Palm Pilot à ses concurrents sous WindowsCE, qui reproduit en miniature une abomination courante sur PC... PalmOS présente l'avantage d'être simple et stable.

Contrairement à une idée répandue, un palm, ça ne sert pas qu'à flamber:

À quoi ça sert: le contenu de mon Palm, par exemple

et avec ça j'arrive à 80% de la place occupée (1.6Mo).

Inconvénients

Avantages

Ressources

...pour le Linuxien

Cette page ou celle-ci ou celle-là donnent quelques clefs, mais plus précisément:

Logiciels de communication

Autres utilitaires spécifiques

...générales

Applications

palmgear et palmcentral référencent beaucoup d'applications disponibles en download.

Textes électroniques (les fameux docs) et images

Le PalmPilot Gaulois et la pilothèque sont de très bonnes sources d'information, de documentation et de fichiers doc en français.

D'autres ouvrages en anglais se trouvent sur le palmcentral (literacy), sur memoware, et voir aussi le PalmPilot E-Text Ring et chercher etext sur yahoo.

Pour celui qui veut convertir soi-même au format doc, des livres du domaine public se trouvent en ligne sur les sites suivants:

Par exemple, l'histoire de l'informatique par Serge Rossi.

Développement d'applications sous Linux, ou: une nouvelle démonstration de la toute puissance de gcc

Il y a plusieurs environnement de développement d'applications (codewarrior) pour pilot, et différents langages (C, Java, PILA=assembleur).

Ce que Palm Computing appelle très marketinguement GNU Pilot SDK n'est autre que gcc, utilisé comme cross-compilateur pour produire du code 68000, avec quelques constructions finales pour produire des exécutables à la sauce palm.

Linux est l'environnement par excellence pour l'utiliser, mais il existe sous Windoze grâce aux outils de Cygnus.

Il faut évidemment compiler gcc en cross compiler, l'exécutable s'appelle m68k-palmos-coff-gcc. Voici comment faire avec prc-0.5, c'est vraiment très simple.

Exemple d'utilisation: pour compiler buzzword.c (au passage, la page de son auteur, Dave McLeod est très sympa). buzzword.c est le code source, buzzword.rcp est un fichier de ressources, et tAIB03e8.bin est l'icône de l'application.

[michon@notonecte trotrofor]$ ls -trl
total 17
-rw-rw-r--   1 michon   michon        144 Apr 23  1997 tAIB03e8.bin
-rw-rw-r--   1 michon   michon        974 Sep 26  1997 buzzword.rcp
-rw-rw-r--   1 michon   michon      13694 Sep 26  1997 buzzword.c
[michon@notonecte trotrofor]$ m68k-palmos-coff-gcc -c buzzword.c; ls -trl
total 24
-rw-rw-r--   1 michon   michon        144 Apr 23  1997 tAIB03e8.bin
-rw-rw-r--   1 michon   michon        974 Sep 26  1997 buzzword.rcp
-rw-rw-r--   1 michon   michon      13694 Sep 26  1997 buzzword.c
-rw-rw-r--   1 michon   michon       6572 Apr 24 15:11 buzzword.o
[michon@notonecte trotrofor]$ m68k-palmos-coff-gcc buzzword.o -o buzzword; ls -trl
total 112
-rw-rw-r--   1 michon   michon        144 Apr 23  1997 tAIB03e8.bin
-rw-rw-r--   1 michon   michon        974 Sep 26  1997 buzzword.rcp
-rw-rw-r--   1 michon   michon      13694 Sep 26  1997 buzzword.c
-rw-rw-r--   1 michon   michon       6572 Apr 24 15:11 buzzword.o
-rwxrwxr-x   1 michon   michon      88164 Apr 24 15:11 buzzword
[michon@notonecte trotrofor]$ m68k-palmos-coff-obj-res buzzword; ls -trl
total 125
-rw-rw-r--   1 michon   michon        144 Apr 23  1997 tAIB03e8.bin
-rw-rw-r--   1 michon   michon        974 Sep 26  1997 buzzword.rcp
-rw-rw-r--   1 michon   michon      13694 Sep 26  1997 buzzword.c
-rw-rw-r--   1 michon   michon       6572 Apr 24 15:11 buzzword.o
-rwxrwxr-x   1 michon   michon      88164 Apr 24 15:11 buzzword
-rw-r--r--   1 michon   michon         24 Apr 24 15:11 code0000.buzzword.grc
-rw-r--r--   1 michon   michon       4663 Apr 24 15:11 data0000.buzzword.grc
-rw-r--r--   1 michon   michon         10 Apr 24 15:11 pref0000.buzzword.grc
-rw-r--r--   1 michon   michon          2 Apr 24 15:11 rloc0000.buzzword.grc
-rw-r--r--   1 michon   michon       5076 Apr 24 15:11 code0001.buzzword.grc
[michon@notonecte trotrofor]$ pilrc buzzword.rcp; ls -trl
pilrc v1.5.  by Wes Cherry (wesc@ricochet.net)

Writing ./tFRM03e8.bin
100 bytes
Writing ./tSTR03e8.bin
455 bytes
Writing ./Talt07d0.bin
175 bytes
Writing ./MBAR0bb8.bin
88 bytes
Writing ./tver0001.bin
4 bytes
total 130
-rw-rw-r--   1 michon   michon        144 Apr 23  1997 tAIB03e8.bin
-rw-rw-r--   1 michon   michon        974 Sep 26  1997 buzzword.rcp
-rw-rw-r--   1 michon   michon      13694 Sep 26  1997 buzzword.c
-rw-rw-r--   1 michon   michon       6572 Apr 24 15:11 buzzword.o
-rwxrwxr-x   1 michon   michon      88164 Apr 24 15:11 buzzword
-rw-r--r--   1 michon   michon         24 Apr 24 15:11 code0000.buzzword.grc
-rw-r--r--   1 michon   michon       4663 Apr 24 15:11 data0000.buzzword.grc
-rw-r--r--   1 michon   michon         10 Apr 24 15:11 pref0000.buzzword.grc
-rw-r--r--   1 michon   michon          2 Apr 24 15:11 rloc0000.buzzword.grc
-rw-r--r--   1 michon   michon       5076 Apr 24 15:11 code0001.buzzword.grc
-rw-rw-r--   1 michon   michon        100 Apr 24 15:11 tFRM03e8.bin
-rw-rw-r--   1 michon   michon        455 Apr 24 15:11 tSTR03e8.bin
-rw-rw-r--   1 michon   michon        175 Apr 24 15:11 Talt07d0.bin
-rw-rw-r--   1 michon   michon         88 Apr 24 15:11 MBAR0bb8.bin
-rw-rw-r--   1 michon   michon          4 Apr 24 15:11 tver0001.bin            
[michon@notonecte trotrofor]$ build-prc buzzword.prc "Buzzword" SKWA  *grc *bin; ls -trl
total 141
-rw-rw-r--   1 michon   michon        144 Apr 23  1997 tAIB03e8.bin
-rw-rw-r--   1 michon   michon        974 Sep 26  1997 buzzword.rcp
-rw-rw-r--   1 michon   michon      13694 Sep 26  1997 buzzword.c
-rw-rw-r--   1 michon   michon       6572 Apr 24 15:11 buzzword.o
-rwxrwxr-x   1 michon   michon      88164 Apr 24 15:11 buzzword
-rw-r--r--   1 michon   michon         24 Apr 24 15:11 code0000.buzzword.grc
-rw-r--r--   1 michon   michon       4663 Apr 24 15:11 data0000.buzzword.grc
-rw-r--r--   1 michon   michon         10 Apr 24 15:11 pref0000.buzzword.grc
-rw-r--r--   1 michon   michon          2 Apr 24 15:11 rloc0000.buzzword.grc
-rw-r--r--   1 michon   michon       5076 Apr 24 15:11 code0001.buzzword.grc
-rw-rw-r--   1 michon   michon        100 Apr 24 15:11 tFRM03e8.bin
-rw-rw-r--   1 michon   michon        455 Apr 24 15:11 tSTR03e8.bin
-rw-rw-r--   1 michon   michon        175 Apr 24 15:11 Talt07d0.bin
-rw-rw-r--   1 michon   michon         88 Apr 24 15:11 MBAR0bb8.bin
-rw-rw-r--   1 michon   michon          4 Apr 24 15:11 tver0001.bin
-rw-r--r--   1 michon   michon      10931 Apr 24 15:12 buzzword.prc
[michon@notonecte trotrofor]$ pilot-xfer --install buzzword.prc
Waiting for connection on /dev/pilot (press the HotSync button now)...
Connected
Installing buzzword.prc... OK
Install done
[michon@notonecte trotrofor]$
Les documentations fondamentales et indispensables donnant l'API de PalmOS sont sur le site de Palm Computing en accès libre.

Comme je l'ai déjà signalé dans l'introduction, les conditions d'accès à d'autres ressources (des dumps de ROM) pour les développeurs sont parfaitement scandaleuses. Les liens indiqués dans ce document sont suffisants pour une bonne mise en route, inutile d'aller vendre son âme à PalmBrother(TM).

On trouve chez O'Reilly le livre Palm Programming: The Developer's Guide, par Neil Rhodes & Julie McKeehan, dont une grande partie est disponible en ligne: il décrit comment utiliser l'API suscitée, un peu sèche. Évidemment on trouve sur le web de nombreux exemples de code source, encore une fois, exemples de code source, ce dernier pointeur étant une FAQ très bien faite.

La programmation est tout de même très limitée par les possibilités du pilot, il ne faudrait pas envisager un portage rapide d'une véritable application, même si l'interface est simple (gnugo, gnuchess)... sans malloc, on ne va pas très loin.

Pour finir, il y a deux groupes de news sur news.massena.com pour les développeurs sur base gcc: pilot.programmer et pilot.programmer.gcc et une mailing-list.

Et le noyau Linux sur pilot alors?

C'est une belle prouesse technique mais une fois Linux booté, on ne peut plus lancer grand chose à cause des limitations du pilot.

La mise en oeuvre réelle nécessite de changer la ROM du pilot, elle ne peut donc pas être réalisée sur du matériel standard. En revanche, c'est très amusant et ultra-simple de charger le noyau précompilé dans l'émulateur xcopilot.

Il y a sans doute des portages plus intéressants du noyau Linux... en attendant:

Keith from [208.211.151.62] at 2:38pm ET 
Do you foresee future Linux integration with consumer electronic
devices (similar to Windows CE)? 

Linus Torvalds at 2:40pm ET 
Well, I really hope it won't be similar to Windows CE. What a
horrible piece of ...

But yes, I certainly see it integrated into a lot of embedded devices,
and you won't even necessarily realize that you're running Linux.
Imagine sending e-mail to your VCR to ask it to start taping that
important show that you only remembered about when you got in for
work..

Yes, we'll get there. And Linux will be there...