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...
Contrairement à une idée répandue, un palm, ça ne sert pas qu'à flamber:
Il s'agit d'un ensemble de programmes en ligne de commande très bien faits, le plus important étant pilot-xfer, qui est d'ailleurs l'ancien nom de pilot-link. Il peut être utile de positionner la variable suivante pour communiquer à la vitesse limite du pilot:
export PILOTRATE=57600Le backup complet de la RAM du pilot se fait par:
pilot-xfer --backup repertoire_destinationle contraire:
pilot-xfer --restore repertoire_destinationet l'installation de la dernière appli dans le vent:
pilot-xfer --install appli_dans_le_vent.prcon imagine difficilement plus simple. Les autres utilitaires du package gèrent individuellement les adresses, l'agenda, etc. L'agenda du pilot peut être interfacé avec korganizer et plan.
[PilotManager est une] appli graphique en Tcl/Tk qui fait les synchros très simplement comme sur les autres OS, réalise automatiquement les backups et les installations et surtout dispose de plusieurs conduits très simples d'emplois et pratiques comme : - traduction automatique des Memos en fichiers texte simple - envoi automatique des emails écrits avec l'appli de base du Palm par ta machine Linux (via sendmail, tout simplement). - synchro de l'horloge du Palm avec celle de la machine Linux (mais vu la précision de l'horloge des PC, c'est plutot le contraire qui serait utile...) - SyncPlan : synchro d'agenda avec un agenda graphique qui tourne sous Unix/Linux etc...
giftopnm ~/images/tut.gif |ppmimgvquant -fs |ppmtopgm |pgmtoimgv -c >yop.pdb
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:
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.
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...