[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[pbsd-mg2] MC-R700 status



MC-R700での動作状況と私の作業状況について簡単に報告します。

[動作状況]

主にdisklessで動作させています。FlashATAをルートファイルシステムにしての
起動も成功していますが、条件によってCFスロット(ソケット)のデバイスを認識
しないことがあるため、普段は使っていません。CFスロットが認識されない件に
ついては調査中です。GPIO関係の設定状況に依存するのかもしれません。(CEの
動作状況によって認識する/しないが変化するようなので。)

コンソールはシリアルです。シリアルを有効にすると思われるGPIOのビットは何
とか捜し当てました。

GIUの割り込みがCEが設定したままになっているとハンドリングできない割り込
みが入って止まってしまうようなので、GIUの割り込みは最初に全部無効にする
ように変更したところ、安定してブートするようになりました。(それまでは、
不特定のタイミングで止まっていた。)

disklessでの動作ですが、今一つ不安定です。

調子がいいときは1時間くらいかけてカーネルのコンパイルをしても大丈夫だっ
たり、emacsのmakeができたりします。調子が悪いときは、make buildの途中で、
謎のpanicを起こしたりします。

ちなみに、現在disklessでmake buildを行なっていますが、2時間くらい経過し
た現在、快調にmakeが続いています。(だめなときは10分でダウンするのですが。)

APA-1460と外付のHDDを買ってきて試してみたのですが、disklabelを読もうとす
ると、ドライバの中でbus errorを起こします。HDDそのものは認識されています。
(ベンダ名や容量などの情報は表示される。)

CF cardのホストマシン(NetBSD 1.4(i386))での読み書きには、IO Dataの
CardDock IN/SCというSCSI接続のアダプタを使っていますが、このアダプタだと
IBM Microdriveを認識しないため、Microdriveはお休みしています。Melcoの同
様なアダプタだとMicrodriveの動作確認リストに載っているため、Melcoのアダ
プタは今度買ってくるつもりです。Microdriveがホストマシンで読み書きできる
ようになったら、Microdriveをルートファイルシステムとしたスタンドアロン動
作を検証してみるつもりです。(340MBあれば結構入るので、カーネルやらemacs
やらのコンパイルテストくらいはできると思います。)

[作業状況]

userlandがmake buildできるようになったのは既にお伝えしたとおりです。自分
でmakeしたバイナリでdiskless環境を作る際に、さらに修正点を見つけました。

etc/etc.hpcmips/MAKEDEVはi386用のものが入っているため、これを使ってデバ
イスファイルを作ると当然動作しません。カーネルのソースでは、メジャー番号
はpmaxと基本的には同じになっているので、pmax用をベースに修正する必要があ
ります。make distributionでdisklessのルートファイルシステムを作成したと
ころ、全然動かなくてしばらく悩みました。

-msoft-floatに関する件ですが、libcのsoftfloatライブラリを呼ばないのは
egcs(gcc)のコンフィグファイルでそのように書いてあるのが原因であることが
わかりました。gcc/config/mips/elf.hで、

#include "gofast.h"

という行があるため、softfloatのライブラリ関数はdpadd等の"US Software
goFast"ライブラリの名前を呼び出すようになります。したがって、コンフィグ
ファイルを修正するか、別のコンフィグファイルを使うかしないとlibc.aの関数
は呼び出されません。

この辺りのメカニズムが理解できていなかったので、取りあえずt-mipsを書き換
えてfp-bit.c dp-bit.cがリンクされるようにしてしまった次第です。(libgccの
Makefileについても同様に修正しました。)

#include "gofast.h"をなくしたらlibc.aが使われるかどうかはこれから検証し
てみます。

-msoft-floatをデフォルトにする方法ですが、CC1SPECを変更するよりも、
TARGET_DEFAULTを変更するほうが良いのではないでしょうか?こんな感じです。

#define TARGET_DEFAULT (MASK_GAS|MASK_DEBUG_A|MASK_SOFT_FLOAT)

デフォルトがどうなっていても、必要があれば-mhard-float/-msoft-floatをオ
プションで指定すれば望みの動作に変更できます。

CC1SPECを修正すると、デフォルト動作と異なる動作を指定したい場合に、たと
えば以下のように、相反する二つのオプションが同時に指定されてしまいます。

xxxx/cc1 -msoft-float -mhard-float .....

こういうのを見ると、果たしてどのように動作するのか不安になるので、
TARGET_DEFAULTを変えるほうがわかりやすいと思うのですが、いかがでしょうか。

* * * * *

NetBSD/hpcmipsの(将来の)配布形態と利用形態について少し考えてみました。

プロジェクトがターゲットとしているマシンは、PDAやHPCなどの、比較的非力な
マシンです。HDDを内蔵していないのが普通なので、二次記憶装置の容量がノー
トPCなどと比較しても圧倒的に少ないのが特徴です。

したがって、利用形態としては、利用者の用途に合わせた必要最小限のサブセッ
トを入れて使うというものが考えられます。要するに、サンダーバード2号方式
ですね:-)

また、インストール方法等を考えても、ターゲットマシン単体でできるようにす
るのは無理があるので、ホストマシンを用意して、そのマシンがCF等のメディア
にインストールするというのが合理的だと思います。

ということで、配布形態としては、フルセットのバイナリ(とソース)を作り、そ
の中から利用者の必要とするサブセットが容易に取り出せるようにするのがいい
のではないかと思います。

私が使うとすれば、とにかくemacsで文章が書けさえすればいいemacsキットとか、
外出先でmailを読むためのお出かけmailキットとかを作ると思います。あるいは、
どこでもソースを読むためのソース読みキットとか:-)

動かしたいアプリケーションの動作環境の依存関係を調べるのは結構大変かもし
れませんが、利用者が作ったキットの作成情報を集めるようにすれば、どんどん
便利になっていくような気がします。

PocketBSDについては実は内容をほとんど把握していないので、すでにこういう
ことがなされているようでしたら失礼。

篠原