Palm の PC-UNIX での開発環境

PalmOS の prc ファイルを PC-UNIX(主に FreeBSD)上で 作るための環境構築メモです. 未だ状況を理解したわけではありませんので,もしかしたらもっと効率的な 方法が存在するかも知れませんが,その辺はメモということで御了承下さい.



はじめに

Palm の開発環境といえば, Metrowerksの CodeWarrior for PalmOS SDK が有名です. が...セットで買っていればまだ安かったのかも知れませんが, PalmIII を諦めて PalmPilot Professional を選択した私にとってはやや高い感があります.

基本的に開発プラットホームは Mac か Windows になるわけですが, いつもの環境上で PalmOS のアプリケーションができればなぁ,ということで, PC-UNIX 上での開発環境を探してみました. CodeWarrior があるだけに,あまり期待していなかったのですが, 実際にはかなり充実しています. ここでは,GNU tools を利用している prc-tools の環境を探ってみたいと思います.

prc-tools の環境構築

環境構築のために,以下のファイルを取ってきます.

開発資料の在処

ドキュメントについては,3Com の Developer Zone に正式な物が公開されています. API は PalmOS SDK Reference を参照すればよいでしょう. また,PalmOS バイブル(3Com 公式ドキュメントの和訳)や O'Reilly の Palm プログラミング も参考になります.

アプリを作る上での作法はこれらの資料やサンプルコードなどを参照して下さい. EventDriven な Window プログラミングと基本的には同じ考えで行けると思います.

リソースの作成は PilRC の言語で書く必要があります.パッケージに HTML によるマニュアル が付属していますが英語なので,私が翻訳したもの(日本語訳) も参考になるかと思います.

gdb と xcopilot によるデバッグ

xcopilot によるデバッグは,gdb と併用することで可能です. xcopilot と prc-tools の他に,gdbpanel.prc が必要です (本当は prc-tools に含まれてるはずなのですが,FreeBSD 2.2.8R の packages には含まれてなかったので, gdbplug から取って来ました).

  1. xcopilot を起動します. バージョンによってオプションが違うので怪しいですが,手元にある 0.6.6 による 起動では, "xcopilot -debug 2 -serial -port /dev/ptypf" としました. オプションの意味は以下の通り.
  2. gdbplug 付属の gdbpanel.prc を xcopilot に投入します.
  3. デバッグ対象の prc ファイル を xcopilot に投入します.
  4. 別ウィンドウ(端末)で m68k-palmos-coff-gdb を起動します. ターゲットファイル名は COFF object (prc ではなく実行ファイル) を指定します. COFF object は file で確認すると "mc68k COFF object not stripped" などと表示されるはずです.
  5. gdb のプロンプト上で "target pilot /dev/ttypf" として,ターゲットと gdb を tty 経由で接続します.
  6. xcopilot の Launcher で gdbpanel をクリックして,ウィンドウ内のEnable stub(チェックボックス) に印をつけます.
  7. xcopilot の Launcher に戻って,ターゲットをクリックすると, gdb が 1 行目で待機状態になります.

xcopilot は古い Copilot を X11 に移植した物なので, すでにメンテされていません. Win32 や Linux の環境ならば,最新版の POSE(Palm OS Emulator) を 手に入れることが出来るはずです.
POSE(Win32) だと TCP/IP 経由で直接ターゲットを投入したり, Emulator 側でデバッグ情報を指定したりできるのでかなり有効です.
また,PalmOS 3.x を使う場合は,POSE を使用するしかありません.

自分用 pdb ファイルの作成

Under Construction...以下無保証メモ.

疑問点

以下,Palmware を開発していく上で発生した,私の疑問点を上げておきます. どなたかご存知の方はこっそりと連絡してください(^^;)


戻る