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-0.5.0 (ftp://ryeham.ee.ryerson.ca/pub/PalmOS/)
- binutils-2.7
- gcc-2.7.2.2
- gdb-4.16
GNU の binutils, gcc, gdb (以下,GNU tools)を用いて,
PalmOS のクロスコンパイル環境を提供します.
prc-tools のコンパイルの際に,GNU tools の展開,パッチ,コンパイルを
全て行ってくれるので,ほとんど気にすることはありません.
GNU tools は archie などで近くのサイトから探せば見つかるでしょう.
以上の各バージョンは prc-tools-0.5.0 に対応するものです.
- PilRC/PilRCUI 2.5a (http://www.hig.se/~ardiri/development/palmIII/pilrc/)
リソースコンパイラです.*.rcpファイルに専用言語で記述し,
PilRC でコンパイルして,各リソースオブジェクトを作成します.
PalmOS では Mac のように GUI(Form) の配置やデータなど
(実際にはコード自体も)をある型を持ったリソースとして管理しています.
また,*.rcpファイルの内容を確認するための PilRCUI もあります
(最新版では libgtk が必要).
- xcopilot-0.6.0 (http://xcopilot.cuspy.com/)
Palm エミュレータです.コンパイルごとに出来上がった*.prcファイルを
Palm 上に Sync させるのは面倒であり(場合によっては)危険なので,
エミュレータ上で動作をチェックします.
- pilot-link-0.9.0
RS-232C で接続された Cradle 上の Palm と
Sync(Backup,Restore,Install,Sync など) するためのツールです.
ドキュメントについては,3Com の Developer Zone に正式な物が公開されています.
API は PalmOS SDK Reference を参照すればよいでしょう.
また,PalmOS バイブル(3Com 公式ドキュメントの和訳)や O'Reilly の Palm プログラミング も参考になります.
アプリを作る上での作法はこれらの資料やサンプルコードなどを参照して下さい.
EventDriven な Window プログラミングと基本的には同じ考えで行けると思います.
リソースの作成は PilRC の言語で書く必要があります.パッケージに HTML によるマニュアル
が付属していますが英語なので,私が翻訳したもの(日本語訳)
も参考になるかと思います.
xcopilot によるデバッグは,gdb と併用することで可能です.
xcopilot と prc-tools の他に,gdbpanel.prc が必要です
(本当は prc-tools に含まれてるはずなのですが,FreeBSD 2.2.8R の packages
には含まれてなかったので,
gdbplug
から取って来ました).
- xcopilot を起動します.
バージョンによってオプションが違うので怪しいですが,手元にある 0.6.6 による
起動では,
"xcopilot -debug 2 -serial -port /dev/ptypf" としました.
オプションの意味は以下の通り.
- debug モードは gdb (2)
- シリアル使用
- ポートは仮想 tty の /dev/ptypf を使用(後で gdb の /dev/ttypf と接続)
- gdbplug 付属の gdbpanel.prc を xcopilot に投入します.
- デバッグ対象の prc ファイル を xcopilot に投入します.
- 別ウィンドウ(端末)で m68k-palmos-coff-gdb を起動します.
ターゲットファイル名は COFF object (prc ではなく実行ファイル) を指定します.
COFF object は file で確認すると "mc68k COFF object not stripped" などと表示されるはずです.
- gdb のプロンプト上で "target pilot /dev/ttypf"
として,ターゲットと gdb を tty 経由で接続します.
- xcopilot の Launcher で gdbpanel をクリックして,ウィンドウ内のEnable stub(チェックボックス) に印をつけます.
- xcopilot の Launcher に戻って,ターゲットをクリックすると,
gdb が 1 行目で待機状態になります.
xcopilot は古い Copilot を X11 に移植した物なので,
すでにメンテされていません.
Win32 や Linux の環境ならば,最新版の POSE(Palm OS Emulator) を
手に入れることが出来るはずです.
POSE(Win32) だと TCP/IP 経由で直接ターゲットを投入したり,
Emulator 側でデバッグ情報を指定したりできるのでかなり有効です.
また,PalmOS 3.x を使う場合は,POSE を使用するしかありません.
Under Construction...以下無保証メモ.
- Header 部は SDKヘッダ(System/DataPrv.h)と pilot-file 出力で解析しながらその通りに作る.
Web にもいくつか説明しているサイトがあるので参照のこと.
- Data 部は位置(chunkID)を記録しつつデータを詰め込む.
この辺は Perl script などで計算しながらでないと困難.
chunk 内のデータ構造は自分で勝手に決めればよい.
- 要するに自動生成ツールはないので,自力でなんとかするしかない.
- 複数のリソースとして作るなら build-prc の方が楽かも.
- アクセスは DmOpenDatabaseByTypeCreator で open,DmQueryRecord で get,DmCloseDatabase で close,という手順がおそらく簡単.
以下,Palmware を開発していく上で発生した,私の疑問点を上げておきます.
どなたかご存知の方はこっそりと連絡してください(^^;)
- 1 Tick は 何ms くらい?
- Hard-Application Key は KeyDownEvent で反応できない?
- FreeBSD で POSE はコンパイル可能?(何かのToolkit がいるはず)
戻る