In Japanese In English

Palm Development Tips

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)

Index


まずはデベロッパ登録する

開発環境を構築する前に、まず、デベロッパ登録をすることを勧めます。 私は www.palmos.com から登録しましたが、日本法人からでも登録でき るはずです。私の場合、申し込んでから、だいたい 2 週間くらいかか りました。

(契約書を直接、封書でやりとりしなければならないのでこれくらいか かります。手続きそのものは簡単で契約書をよく読み、内容に同意でき たら印刷してそれに必要事項を記入し、送付して、先方の担当者の署名 が入ったものが送り返されてくるのを待つだけです。)

なぜデベロッパ登録が必要かというと、それはデバッグ ROM を入手する ためです。私の経験からすると、デバッグ ROM と POSE なしでの Palm ソフトウェアの開発は想像できません。

開発環境を構築する

Palm の Web ページに構 築方法があるのでそれにしたがって行えばわりと簡単に構築できる はずであったが、すんなりとはいかなかった。 私が普段持ち歩いているのは OpenBSD-2.6 i386 なので それに環境を構築してみた。

準備するもの

  1. PalmOS SDK 3.5
  2. prc-tools-2.0
  3. binutils-2.9.1
  4. gcc-2.95.2
  5. gdb-4.18
  6. make-3.77
  7. pilrc-2.5b1

PalmOS SDK 3.5 をインストール

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 を実行します。私は以下のようなシェルスクリプトを 作りました。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
      

ldscript のコピー

OpenBSD の sh (pdksh) ではうまく生成されないようなので linux などで 生成したものをコピーします.ディレクトリは以下の通り. genscript.sh というのでエラーになるのですが深く追求していません:-)

/usr/local/m68k-palmos/lib/ldscripts
      

実機を使ってソースレベルデバッグ 2001-03-18

まだ POSE を NetBSD-1.4.3 で動作させることはできていませんが 実機を使って gdb でデバッグする方法がわかりました.

  1. gdbpanel をデバイスにインストールします.
  2. デバッグ対象のプログラムを -g オプション付きでコンパイル,リンク し,デバイスにインストールします.
  3. gdbpanel を起動して,Enable stub をチェックします.
  4. gdb (m68k-palmos-gdb [progname]) を起動し target pilot /dev/tty01 などと入力します.
  5. デバッグ対象のアプリケーションを起動します.

たぶん 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 との互換性などを考え ると警告もすべて直したほうがよいです。) エラーは無視してはいけま せん。

PalmOS5 Simulator

DR 8 がリリースされました。私が作成したアプリケーションを 動かしてみました。

os5launcher

アプリケーション画面です。DR 8 ではデフォルトで高解像度で起動します。 アイコンなども高解像度のものになっています。ちょっと気持ち悪い。

高解像度になってもアルファベットや、ボタンやそのほかの UI の部品 の外枠などの太さはあまりかわっていません。もちろんギザギザは少く なっていますが。この辺り、ソニーの高解像度の UI の設計のダサさが よくわかります。「高解像度なんだからなんでもかんでも細くしてしま え。」みたいな。

MailStub はカラーアイコンがないのと、背景を透明にしていないので こんな表示になります。e*Memo, e*Mail のカラーアイコンは背景を 透明にしています。Batmon は透明の処理はやっていないのですが 透明になっています。*.pbitm で作成しているからでしょうか。

Batmon

Batmonです。電圧が変化しないようですが、 バッテリのプロファイルの変更なども動作しているようです。

e*Mail

e*Mailです。こちらもとくに問題なく動作している ようです。

theme

おまけです。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 $

Valid XHTML 1.0! Valid CSS1!

Hosted by www.Geocities.ws

1