In Japanese In English
prc-tools-2.0 には致命的なバグがあるのでできるだけ最新版 (prc-tools-2.0.9x)にアップデートしたほうがいいでしょう。これはメ ンテナの John Marshall さんもメーリングリストなどでよく言われて います。(2002-03-12)
このページはかなり読みにくいと思っているので構成変更を予定しています。 (2002-03-02)
SDK 4.0 に移行しましたが、手順はほとんど 3.5 のときと同じで OK でした。(2001-07-17)
現在のところ SDK 3.5 と prc-tools-2.0 のインストールについてしか 書いていません.これら以外に pilrc という リソースコンパイラが必要です。(2000-11-19)
開発環境を構築する前に、まず、デベロッパ登録をすることを勧めます。 私は www.palmos.com から登録しましたが、日本法人からでも登録でき るはずです。私の場合、申し込んでから、だいたい 2 週間くらいかか りました。
(契約書を直接、封書でやりとりしなければならないのでこれくらいか かります。手続きそのものは簡単で契約書をよく読み、内容に同意でき たら印刷してそれに必要事項を記入し、送付して、先方の担当者の署名 が入ったものが送り返されてくるのを待つだけです。)
なぜデベロッパ登録が必要かというと、それはデバッグ ROM を入手する ためです。私の経験からすると、デバッグ ROM と POSE なしでの Palm ソフトウェアの開発は想像できません。
Palm の Web ページに構 築方法があるのでそれにしたがって行えばわりと簡単に構築できる はずであったが、すんなりとはいかなかった。 私が普段持ち歩いているのは OpenBSD-2.6 i386 なので それに環境を構築してみた。
SDK の置場所は /usr/local/palmdev/sdk-3.5 としました。そのまま展開すると、Unix 的ではない path になるので展開後 path 名を変更します。
$ cd /usr/local/palmdev $ zcat sdk35.tar.gz | tar -xvf - [...] $ mv 'Palm OS 3.5 Support/Incs' sdk-3.5/include $ mv 'Palm OS 3.5 Support/GCC Libraries' sdk-3.5/lib $ ln -s sdk-3.5 sdk
どこに置いても構いませんが、私は /usr/local/palmdev/src に置きました。
$ mkdir /usr/local/palmdev/src $ cd /usr/local/palmdev/src $ zcat prc-tools-2.0.tar.gz | tar -xvf - $ zcat binutils-2.9.1.tar.gz | tar -xvf - $ zcat gcc-2.95.2.tar.gz | tar -xvf - $ zcat gdb-4.18.tar.gz | tar -xvf - $ zcat make-3.77.tar.gz | tar -xvf -
次にパッチをあてます。
$ cat prc-tools-2.0/*.palmos.diff | patch -p0 $ find . -name '*.rej'
prc-tools ディレクトリの下に各ソースファイルへのリンクを張ります。
$ cd prc-tools-2.0 $ ln -s ../binutils-2.9.1 binutils $ ln -s ../gcc-2.95.2 gcc $ ln -s ../gdb-4.18 gdb $ ln -s ../make-3.77 make
configure を実行します。私は以下のようなシェルスクリプトを 作りました。configure の中で /usr/local 配下に ディレクトリを作ろうとするので su してから実行します。 (ちょっとべたべたな解決です...)
OpenBSD-2.6 の gcc-2.95.1 では -O2 とすると ld がうまく 動きませんでした。
#!/bin/sh export CFLAGS="-g -O" export CXXFLAGS="-g -O" ../prc-tools-2.0/configure \ --target=m68k-palmos \ --enable-languages=c,c++ \ --with-headers=`pwd`/empty \ --sharedstatedir=/usr/local/palmdev \ --with-build-sdk=3.5
$ cd /usr/local/palmdev/src $ mkdir build $ cd build $ vi zzz [上記のスクリプトを作成] $ mkdir empty $ su # sh -x zzz 2>&1 | tee zzz.out # chown -R js3guj:js3guj . # exit $
いよいよコンパイルです。
(2000-11-25 追記)以下ですが やり方 の通りなのですが,一般ユーザで実行する部分で /usr/local 配下にディレクトリを作ろうとしますので,/usr/local を 一般ユーザで書き込みできないようにしている場合は全部 root で 実行したほうが一回で済むので楽ちんだと思います.
$ cd /usr/local/palmdev/src/build $ gmake all-host $ su Password: # gmake install-host # exit $ gmake all-gcc $ su Password: # gmake install-gcc # gmake install-palmdev # exit $ gmake all-target $ su Password: # gmake install-target
OpenBSD の sh (pdksh) ではうまく生成されないようなので linux などで 生成したものをコピーします.ディレクトリは以下の通り. genscript.sh というのでエラーになるのですが深く追求していません:-)
/usr/local/m68k-palmos/lib/ldscripts
まだ POSE を NetBSD-1.4.3 で動作させることはできていませんが 実機を使って gdb でデバッグする方法がわかりました.
たぶん POSE 使うときと違うところは target で指定するデバイスのところ だけなのかなと想像しています.
(2001-04-16) 久しぶりにデバッガを起動してみたところ,なぜかつながらなく なっています. 前回やったときは
(gdb) target pilot /dev/tty01 Remote debugging under PalmOS using /dev/tty01 Waiting... (Press Ctrl-C to connect to halted machine)
と表示されていたところが,Remote 以下のメッセージが表示されないのです.
ktrace で追ってみると target コマンドを入れたあと,open(2) で ブロックしていることがわかりました.
試しに別のウィンドウで stty -f /dev/tty01 clocal と いれてやってからもう一度 target コマンドを入れてやると Remote... も表示され接続できるようになりました.
なにがどうなっているのかいまいちよくわかっていません.
(2001-10-19) POSE を NetBSD もしくは OpenBSD で動作させることができていないので WindowsNT で POSE を動かし、OpenBSD で gdb を起動してデバッグして います。
以下は私がぶちあたった問題とその解決方法です。これらの問題はほと んど、POSE + debug ROM + Gremlin で発見できるものです。私はすべ てのデベロッパの皆さんに必ず POSE + debugROM + Gremlin でテスト することを強く勧めます。また 1 million gremlin (100万イベント分 の gremlin を実行する)をエラーなしで達成するようにすることも強く 勧めます。私の考えでは gremlin が出す警告は場合によっては無視し てよいものもあると思います。(将来の PalmOS との互換性などを考え ると警告もすべて直したほうがよいです。) エラーは無視してはいけま せん。
13.971 (335):=== WARNING: Zulu (1.0) just read from memory location 0x00004AEC, which is in the "bounds" field of the frmTableObj starting at 0x00004AE4, which belongs to the form starting at 0x00004A08. The data at this memory location is owned by the Form Manager. Applications should not access the data directly. Instead, they should make the appropriate Form Manager calls.
static void BatmonShowAbout (void) { FormPtr previousForm = FrmGetActiveForm (); FormPtr frm = FrmInitForm (ShowAboutAlert); FrmSetActiveForm (frm); FrmDoDialog (frm); FrmEraseForm (frm); FrmDeleteForm (frm); if (previousForm) FrmSetActiveForm (previousForm); }FrmDoDialg() 以降の関数はかならずこの順番で呼び出さなければなりません。
MENU ID CommandsMenu BEGIN PULLDOWN "Commands" BEGIN MENUITEM "Update Status" ID UpdateStatusMenuCmd "U" MENUITEM "Change Battery Profile\030" ID ChangeBattProfileMenuCmd "C" MENUITEM SEPARATOR MENUITEM "About Batmon" ID AboutMenuCmd END END
DR 8 がリリースされました。私が作成したアプリケーションを 動かしてみました。
アプリケーション画面です。DR 8 ではデフォルトで高解像度で起動します。 アイコンなども高解像度のものになっています。ちょっと気持ち悪い。
高解像度になってもアルファベットや、ボタンやそのほかの UI の部品 の外枠などの太さはあまりかわっていません。もちろんギザギザは少く なっていますが。この辺り、ソニーの高解像度の UI の設計のダサさが よくわかります。「高解像度なんだからなんでもかんでも細くしてしま え。」みたいな。
MailStub はカラーアイコンがないのと、背景を透明にしていないので こんな表示になります。e*Memo, e*Mail のカラーアイコンは背景を 透明にしています。Batmon は透明の処理はやっていないのですが 透明になっています。*.pbitm で作成しているからでしょうか。
Batmonです。電圧が変化しないようですが、 バッテリのプロファイルの変更なども動作しているようです。
e*Mailです。こちらもとくに問題なく動作している ようです。
おまけです。UI エレメントの色の組み合わせが設定できるようになってます。
OS4.1 のデバッグ ROM できちんと動作しているものは OS5 でも基本的 にちゃんと動作するような感じです。OS 5 搭載のマシンが実際にリリー スされるころまでには、完全なテスト(1 million gremlin とか)してお きたいところです。
Comments, suggestions, and donations are welcome.
Go to index page
Copyright (c) 1999-2003 IKEDA Shigeru. ALL RIGHTS RESERVED.
Last modified $Date: 2003/10/06 10:38:41 $