Palm OS a Linux majú veĺa spoločného. A to aj v prípade, že vynecháme ich pozíciu na poli operačných systémov svojej platformy… (Bez ohĺadu na poradie samozrejme.) Tieto spoločné znaky by som nazval „čistým designom“ – dobre definovanými API a transparentnou funkčnosťou. Preto nepochybujem, že mnoho priaznivcov jednej platformy patrí zároven aj medzi priaznivcov platformy druhej.
Potrebné nástroje
Pre prácu budeme potrebovať tieto nástroje:
- prc-tools – gcc, gdb, as a ostatné nástroje pre kompilovanie, linkovanie, debugovanie a postlinkovanie pre m68k (prípadne k dispozícii je už aj verzia pre ARM)
- Palm OS SDK 4.0 – hlavičkové súbory, knižnice pre Palm OS 4.0
- Palm OS Emulator (POSE) – emulátor Palm OS PDA
- ROM pre POSE – obraz ROM pamäte PDA
- PilRC – Palm resource kompilátor
- Guikachu – editor Palm resourcov
- KDevelop – IDE, ktoré je súčasťou KDE
- patch pre KDevelop – patch pre KDevelop umožnujúci debugovanie Palm OS aplikácií v KDevelop
prc-tools a Palm OS SDK 4.0
RPM balíčky prc-tools je možné nájsť na prc-tools.sourceforge.net. Palm OS SDK 4.0 sa dá stiahnuť na stránkach www.palmos.com – potrebujete verziu pre Unix vo forme .tar.gz obsahujúceho RPM. Po nainštalovaní RPMs spustite palmdev-prep, ktoré nájde a nastaví defaultné Palm OS SDK pre prc-tools. Aplikácie prekompilované s použitím SDK 4.0 pobežia bez problémov aj na nižších verziách OS, pokiaĺ použijeme volania API dostupné v príslušnej verzii OS.
Nástroje z prc-tools sú vlastne upravené originálne gcc, gdb, as a iné podporujúce novú target platformu – m68k-palmos. Preto môžete nimi kompilovať, debugovať, linkovať tak, ako ste zvyknutí s originálnymi gcc, gdb, as. Existujú samozrejme drobné odchýlky, čo sa týka najmä debugovania, pretože hotovú Palm OS aplikáciu nespúšťate na PC, ale na POSE (alebo PDA). Debugovať s m68k-palmos-gdb môžete teda takto:
- Pustíte m68k-palmos-gdb s výsledným súborom po linkovaní. Pozor, nie s .prc súborom, ten vznikne až spustením postlinkovacích nástrojov na tento súbor
- Zpustíte POSE, .prc aplikáciu si donho nahrajete z menu POSE, alebo parametrom pri spustení pose -load_apps file.prc
- V gdb sa príkazom target pilot localhost:2000 pripojíte na POSE
- Po spustení Vami debugovanej aplikácie na POSE sa generuje signál STOP a gdb zastaví na začiatku fukncie PilotMain
- Daĺší postup sa ničím nelíši od debugovania Linux aplikácie
POSE a ROM pre POSE
Aplikácie je možné testovať a debugovať z KDevelopu aj priamo na Vašom PDA, ale je určite nepomerne jednoduchšie a pohodlnejšie debugovať na emulátore. POSE a sadu skinov môžete nájsť na sourceforge.net/projects/pose. Potrebujete RPM pose a pose-skins. Dalej potrebujete ROM nejakého Palm OS PDA so zodpovedajúcou verziou OS. Kedže na ROM sa vzťahujú isté licenčné podmienky, nie je ich možné stiahnuť z oficiálnych stránok jednotlivých výrobcov PDA. Daĺšou možnosťou je stiahnuť si ROM z vlastného PDA.
PilRC a Guikachu
Palm OS aplikácie používajú resource pre formuláre, menu a podobne. PilRC je kompilátor textových definičných súborov takýchto resourcov na binárny formát. PilRC môžete nájsť na sourceforge.net/projects/pilrc. K PilRC existuje grafický viewer – pilrcui – jeho kvalita je ale diskutabilná. Naproti tomu Guikachu je editor resourcov pre Palm OS v pomerne dobrej kvalite plne postačujúci na účel, na ktorý bol vytvorený. Zopár drobných výhrad – nezobrazuje viacradkové statické texty (obsahujúce \r) na viacerých riadkoch, ked sa mu nepodarí súbor uložiť (súbor vlastnil root), nepodá o tom hlásenie. Guikachu vie resource do formátu pre PilRC len exportovať, interne používa XML. Preto je rozumné primárny súbor s resourcami udržiavať vo formáte pre Guikachu a pri buildovaní z neho vyrobiť potrebný formát pre PilRC – Guikachu má na to command line nástroj guikachu2rcp.
Guikachu využíva C++ framework pre Gnome gnomemm a gtkmm. Tieto balíky neboli v skorších verziách Redhatu. Na RH 7.2 sa ako najschodnejšia cesta javila prekompilovať gnomemm, gtkmm aj guikachu.
KDevelop a patch pre KDevelop
A teraz prichádza to najlepšie. Integrácia do KDevelop. KDevelop je IDE vytvorené najmä pre písanie QT a KDE aplikácií. Nič Vám ale nebráni ho používať aj s C, C++ a inými projektami. Posledná dostupná stabilná verzia pre KDE 2.2 aj 3.x je 2.1, konkrétne 2.1.3. KDevelop na integrované debugovanie používa gdb. Ale rozdiely vo funkčnosti gdb a m68k-palmos-gdb popísané vyššie nám bránia KDevelop úspešne použiť na debugovanie Palm OS aplikácií.
Čo teda s tým? Jednoduchá pomoc – napísal som patch pre KDevelop verzie 2.1.3, ktorý dodáva potrebnú funkcionalitu. Tento patch by sa mal bez problémov aplikovať aj na ostatné 2.1 verzie. Ako teda postupovať – stiahnuť si source KDevelop napríklad z CVS. Pozor, treba sťahovať branch KDE2_2_BRANCH, pretože vývoj pokračuje na verziu 3.0 fungujúcu iba pod KDE 3.x a zatiaĺ nie vo funkčnom stave. Spustiť patch -p1 < kdevelop-2.1.3-prc-tools.patch, spustiť configure, make a make install. Zatiaĺ je dostupný len patch, v prípade veĺkého záujmu o .rpm takto upraveného KDevelop 2.1.3 fungujúceho pravdepodobne na všetkých RH 7.2+ bude toto .rpm prístupné na webe. Linku nájdete v tomto článku, prípadne, ak záujemcov nebude až tak veĺa, tak bude zaslaná na email. Záujem je treba prejaviť na kdevelop@makefive.sk.
Patch obsahuje nasledovné vylepšenia KDevelop-u:
- Podpora pre Palm OS projekty. Je zapnutá, ked konfiguračný súbor projektu *.kdevprj obsahuje sekciu [Palm OS] a v nej definovanú položku palm_os. Vtedy pri spustení debugovania projektu spustí KDevelop pose s load_apps = definovanému prc a s run_app = menu aplikácie app, v prípade, že je v konfiguračnom súbore definované run_app. Príklad konfigurácie:
[Palm OS] palm_os=1 run_app=1 app=Test prc=Test.prc gdb=/usr/bin/m68k-palmos-gdb pose=/usr/bin/pose
- Podporu pre m68k-palmos-gdb. m68k-palmos-gdb je spustené so zlinkovaným súborom, ktorý sa definuje v Project Options ako binary file.
- Pri spustení príkazu Run, Continue a Run to cursor sa okno KDevelopu dá do pozadia a naopak, pri prerušení činnosti programu – breakpoint, prijatie signálu a podobne do popredia.
Ukážkový projekt
K dispozícii je ukážkový projekt, ktorý demonštruje použitie jednotlivých nástrojov a na ktorom si je tiež možné odskúšať debugovanie v KDevelop-e.