Hlavní navigace

Programovanie pre Palm OS na Linuxe v IDE

Patrik Hornik

Tento článok popisuje možnosti vyvíjať/testovať Palm OS aplikácie na Linuxe. Toto nie je nová téma, ale my si povieme, ako debugovať Palm OS aplikácie v IDE KDevelop. U mnohých je nemožnosť pracovať a hlavne debugovať v pohodlnom a vo väčšine prípadov rýchlejšom IDE jedinou prekážkou, prečo nezmeniť OS. A riešeni na Linuxe má ešte jednu výhodu oproti Windows IDE riešeniam - je free.

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.sourcefor­ge.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:

  1. 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
  2. Zpustíte POSE, .prc aplikáciu si donho nahrajete z menu POSE, alebo parametrom pri spustení pose -load_apps file.prc
  3. V gdb sa príkazom target pilot localhost:2000 pripojíte na POSE
  4. Po spustení Vami debugovanej aplikácie na POSE sa generuje signál STOP a gdb zastaví na začiatku fukncie PilotMain
  5. 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/pro­jects/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/pro­jects/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 &lt 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:

  1. 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
  2. Podporu pre m68k-palmos-gdb. m68k-palmos-gdb je spustené so zlinkovaným súborom, ktorý sa definuje v Project Options ako binary file.
  3. 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.

Našli jste v článku chybu?