Fox プロジェクト

マツド・サイエンティスト研究所・分室

速報! ネットへ アクセス

Last update at the 29th of March 2002

 Fox に、汎用コンパクトフラッシュ・インターフェースを追加し、ネットワーク(10Base-T 及び 無線LAN)に接続する試作実験に成功した。


はじめに

 以前から、 Fox に対する要望の一つに、ネットワーク・インターフェースが大きくあった。 私自身もネットワークに興味があり、検討した結果、もっとも簡単と思われる方法は、NE2000 互換の RTL8019AS を使う事だと結論した。
 しかし、あえて RTL8019AS を用いず、汎用コンパクトフラッシュ・インターフェースを追加し、そこにコンパクトフラッシュ・タイプのネットワークカードを挿入する方法に挑戦した。その理由は次の通りである。  上記の内、2番目以降はともかく、最初の「3.3V 単一電源にしたい」は、説明が必要かもしれない。 RTL8019AS は、電源電圧・IO 電圧共に 5V であり、Fox の心臓部である SH-3 の 3.3V と異なる。 従って、RTL-8019AS を使うためには、電源を二種類用意し、SH-3 の 3.3V 信号を 5V に相互に変換する必要がある。
 経験上、二電源システムは、それだけでトラブルの温床になる事を知っており、できる限り避けたい。もちろん、回路が複雑になり、消費電力が増大する事も願い下げだ。

汎用コンパクトフラッシュ・インターフェース

 コンパクトフラッシュ・タイプの周辺機器カードは、PDAやハンドヘルドコンピュータでの使用を考慮しており、ほとんどの場合、3.3V 単一電源で動作する。 すなわち、 Foxに、ある程度汎用のコンパクトフラッシュ・インターフェースを付加することができれば、10Base-T のみらなず、無線LAN や PHS 、今後出るであろう BlueTooth 等の新しい規格のネットワークや多種多様な周辺機器に 3.3V 単一電源で対応できると考えたのである。
 コンパクトフラッシュのインターフェースは、PCMCIA (PC カード) のインターフェースとほぼ等しい。 このインターフェースに intel 82365SL 等と言った汎用のチップを用いると、電源数が増えたり、回路規模が大きくなる。
 そこで、今回、試作したコンパクトフラッシュ・インターフェースは、単一電電動作とし消費電力を少なくし、回路規模を抑え、低コストにするために、3.3V 単一電源動作の CPLD を使って、インターフェースをフルスクラッチで作った。
 このため、新しい Fox のコンパクトフラッシュ・インターフェースはハードウェア仕様上、以下のような制限がある。  ホットプラグ対応にするインターフェースをフルスクラッチで作ることも、技術的には不可能では無いと思われる。 しかし、組み込み用途に限定した場合、回路規模が大きくなる割には、メリットが少ない事から見送った。 もう一つの 3.3V 対応のカードについては前述の通りである。
 実は、当初、コレガの無線 LAN カードが PC カードサイズながら 3.3V 対応であったことから、3.3V 専用の PCMCIA と言う変則的なインターフェースを作る予定であった。 回路設計などの作業を進めていた昨年 10月頃、メルコ (BUFFALO) から、コンパクトフラッシュ・タイプで無線 LAN カードを発売すると発表があり、この時点で大幅に変更した。 試作ボードの写真を見ると、コンパクトフラッシュ・コネクタの下の基板に切り欠きがあるが、これは PCMCIA コネクタを付けるための物で、現状は全く役に立っていない。

動作確認済みのコンパクトフラッシュ・カード

 今回、試作したコンパクトフラッシュ・インターフェースが、Fox 本体に付いているものに比べ、進歩した点は、次の項目である。 これらの機能を付加する事で、ネットワークカード等と言った応答速度が必要なカードにも対応できる。
 なお、自動認識(プラグ・アンド・プレイ)は、ハードウェアの問題ではなく、ソフトウエア(主にオペレーションシステム)の問題である。 今のところ、NetBSD-1.5.2 を元にしたカーネルで、左の写真の二種のカードを自動認識し、必要なドライバを動作させるところまで成功している。
 現状で動作確認できているのは、これら 2 つのネットワークカードだけで、左が 10Base-T の LAN カード、右が無線 LAN カードだ。 確実なことは言えないが、コンパクトフラッシュタイプのネットワークカードで、NE2000 互換のものや ルーセントテクノロジーもしくは PRISM チップを使った無線 LAN であれば、同様に使う事ができると思う。
 その他の周辺カードでも、NetBSD-1.5.2 で標準的に使え、エンディアンの問題が解決されているドライバがあれば、比較的簡単に Fox でも使えるようになると思う。
 実は、 NE2000 互換チップ用のドライバは良く使われているせいかバグも無く、エンディアンの問題も解決していて、比較的簡単に移植できた。 実際、ドライバの本体である dp8390.c は全く変更の必要は無かった。
 しかし、NetBSD-1.5.2 の無線 LAN ドライバである if_wi.c は、PRISM が相手だと動作が不安定な上に、リトルエンディアン用であった。 NetBSD-current の無線 LAN ドライバである wi.c はエンディアンの問題が解決済みなのだが、カーネルとのインタフェースが微妙に異なり、そのままでは使えない。
 こう言った経緯で、大改造が必要だった無線 LAN ドライバの移植には時間がかかり、いまだに動作が不安定なところもある。 とは言え、無線 LAN ドライバの移植スタートから4週間で使えるようになったのだから、十分、速いか !? 動作が不安定な処は、今後、叩いていけば良いだろうし・・・

意外と時間がかかったコンパクトフラッシュインターフェース

 作業に時間がかかったと言えば、やはり、コンパクトフラッシュ・インターフェース自体の製作及びプログラムの開発であった。 実際、準備期間から入れると 10ヶ月程度、半田付けやプログラミングと言った実作業だけでも5ヶ月程かかっている。
 その理由は、一つは、SH-3(SH7708S) 自体のバグで、エリア6に用意されている PCMCIA の IO 領域へのアクセス機能が全く役に立たたず、CPLD を使って、ゼロからアクセスタイミングを作る必要があったためであるが、多くはソフトウエアの問題である。
 コンパクトフラッシュ・カードの中身を示すID である CIS を読み出し、IO 領域でのアクセスを可能にするイネーブルの方法について、ほとんど情報が無く、手探り状態の作業が続いた。 これらの作業はコンパクトフラッシュを使う故に必要であり、面倒な作業が不要な RTL8019AS を直接 SH-3 バスに接続する方法を使えば良かったと何度も思った。 ある意味、よくこの期間で作業が終わったものだとも思う。
 もう一つ、大きな理由として、昨年、私は極めて忙しい仕事が有り、その空き時間しか Fox の作業をする時間は無かったからだ。 その「極めて忙しい仕事」が何なのかは、ここで言及する気は無いが、それが何かを知っている人には、逆に「あの仕事と Fox を、よく並行でやれたなあ」と言われる。 むしろ、「あの仕事の間は、Fox なんて止めていれば良かったのに・・」と言う声すら聞こえてくるが、これに対しては、こう答えよう。
「半田付けするような手を動かす作業をしながらの方が考えが進むのだ」と。

今後の予定

 昨年来、懸案事項になっている Fox のキット化を本格化したい。 その際には、今回試作した汎用コンパクトフラッシュ・インタフェースをオプション基板として用意したいと思っている。
 また、汎用コンパクトフラッシュ・インタフェースで使えるカードを増やしたい。 深く調査したわけではないが、コンパクトフラッシュ・タイプのカードとしては、ネットワークカードの他、ハードディスク、 GPS 受信機、CMOS カメラや PHS などがあるようだ。 これらの内、どの程度が NetBSD で使えるドライバーが用意されているか判らないが、色々試してみたいと思っている。
 更に Fox 自体のインターフェースとして、次に望まれているのは、やはり USB であろうか? もちろん、USB クライアントではなく、 USB ホストの方だ。 USB のホストが、NetBSD から使えれば、拡張性は一気に上がる。
 とは言え、 USB は未知の領域なので、いつ手を付けるかは、まだ考えていない。
 本研究に対する御意見、御感想、御指摘等、ございましたら、メールで送っていただければ大歓迎です。
Copyright (C) 2002 野田篤司