Visor用CFアダプタのハードウェア



ハードウェア自作愛好者の方々のために、ハード製作・デバッグ用ソフトの詳細をまとめてみました。
ただし、ある程度腕に自信のある方だけ、お願いします。ハード・ソフトがからみ、エミュレータも使えないので、問題が発生したときのデバッグは簡単なものではありません。

製作したもの(ハードウェア)

SpringBoard−Compact Flashアダプタです。

市販のPCMCIA-CFアダプタを分解して取り出した内部の基板をベースにしています。アダプタはどこのメーカーでも大丈夫だと思います。私はI/Oデータのものとアドテックのものを使いました。
Springboard用のケースはATL Technologyという会社から購入しました。


中身の写真は以下の通りです。 74HC00,74HC04を使ったデコーダ、データバス上位・下位入れ替えやアドレスバスを1ビットシフトしている、などの改造です。


新バージョンでは基板を切ってちょっと小さくしてみました。こっちはLVC04とLVC32x2を使っています。

ハードウェア詳細

回路の論理式は以下の通りです。回路図の方がよい方はこれ

(CF <= Visor)  

[A10:A0] <= [A11:A1]
[D7:0] <= [D15:8]
[D15:8] <= [D7:0]
-CE1 <= (CS1* | A21)
-CE2 <= (CS1* | A20)
-OE <= OE* | A23
-WE <= WE* | A23
-IORD <= OE* | ~A23
-IOWR <= WE* | ~A23
-REG <= ~(A23 | ~A22)
RESET <= ~RESET*
-CD1 <= CD1*
-CD2 <= CD2*
BVD1, BVD2 を10k-100kでプルアップ

この改造により、モジュールのCS1空間内で、以下のようなメモリマップになります。

address offset
(Byte)
ブロック内容
00000000h アトリビュートメモリ 16bitアクセス(-CE1=L, -CE2=L)
00100000h 8bitアクセス(-CE1=L, -CE2=H)
00200000h 無効(-CE1=H, -CE2=L)
00300000h 無効(-CE1=H, -CE2=H)
00400000h コモンメモリ 16bitアクセス(-CE1=L, -CE2=L)
00500000h 8bitアクセス(-CE1=L, -CE2=H)
00600000h 8bithアクセス(-CE1=H, -CE2=L)
00700000h 無効(-CE1=H, -CE2=H)
00800000h I/O 16bitアクセス(-CE1=L, -CE2=L)
00900000h 8bitアクセス(-CE1=L, -CE2=H)
00A00000h 8bithアクセス(-CE1=H, -CE2=L)
00B00000h 無効(-CE1=H, -CE2=H)
00C00000h I/O(ゴースト)
アドレスバスはVisor[A11:A1]がCF[A10:A0]に接続されているので、各ブロック内でのオフセットはCFアドレスの2倍になります。

「8bitアクセス(-CE1=L, -CE2=H)」空間のデータ

address
(Word)
D15-D8 D7-D0
xxxxxxx0h 偶数アドレスのデータ High-Z/Don't Care
xxxxxxx1h 奇数アドレスのデータ High-Z/Don't Care

「8bitアクセス(-CE1=H, -CE2=L)」空間のデータ

address
(Word)
D15-D8 D7-D0
xxxxxxx0h High-Z/Don't Care 奇数アドレスのデータ
xxxxxxx1h High-Z/Don't Care 奇数アドレスのデータ


「16bitアクセス(-CE1=L, -CE2=L)」空間のデータ

address
(Word)
D15-D8 D7-D0
xxxxxxx0h 偶数アドレスのデータ 奇数アドレスのデータ
xxxxxxx1h 偶数アドレスのデータ
(ゴースト)
奇数アドレスのデータ
(ゴースト)

上位・下位バイトが入れ替わっているので注意して下さい。

Visorでは、8ビットアクセスをするとD15-D8を使ってバイトデータにアクセスします。そのため、VisorとCFでデータバスの上位・下位が入れ替えてあります。

ハードウェアテスト用アプリ

HandSpringのサンプル(DiagRefModulel(1.00))をベースにちょっと変更しただけです。
開発環境はHandpringのホームページからダウンロードできるgccです。
プロジェクトファイルversion0.01はこれです。


コマンドはグラフティから入力します。

コマンド体系は以下の通りです。
読み出し
r<a|m|w> <start addr> <num>
a:アトリビュート
m:コモンメモリ
i:I/O

書き込み
w<a|m|w> <addr> <value>
a:アトリビュート
m:コモンメモリ
i:I/O

以下では、P-in Comp@ctを差した場合の例を示します。

まずアトリビュートを読み出してみます。

ra 0 4<return>

と入力すると左のようにアトリビュートメモリが読み出されるはずです。

次にI/Oを読み出してみます。

ri 3f8<return>

と入力します。

コンフィギュレーションが完了していないので、すべてゼロになっています。

次にコンフィグレーションメモリに値を書き込みます。

wa 200 20<return>と入力します。

そして再度

ri 3f8<return>

と入力すると今度はI/Oレジスタの値が読み出せます。

シリアル通信カード用ドライバ

PinDriver_11c.lzh

情報源

参考にした情報
Handspring Developers 当然、Handspring社のDeveloperのページ。SDKやサンプルなど、必携。
EXAR社のST16C650A HandspringのDiagnostic ModuleではここのUARTを使っているので、ちょっとだけ参考にしました。
トラ技スペシャルNo.63,67
パソコン周辺インターフェースのすべてI,II
PCMCIA, CFに関する情報。
CompactFlash Association Homepage CFの仕様書がダウンロードできます。ただし根底の部分はPCMCIAの仕様書を入手しないとだめです。
PCカードテクニカルガイド( 翔泳社 ) 3000円。PCカードのソフトウェア開発に関する情報を中心に書かれている。Windows用ドライバのサンプルもある。
http://www.efig.com/ Extender Card, Diagnostic Cardを製造・販売している。モジュールの受託設計もしてくれる。
Linuxカーネルのソース
PCMCIAモジュールのソース
LinuxのPCMCIA,シリアルドライバのソースコード
Shared libraries on the Palm Pilot バークレー大のISAACによるPalmOS Shared Libraryの解析結果、サンプルコードなど。
Developer Knowledge Base Knowledge Baseは大変役に立ちます。「Serial」「Driver」などのキーワードで検索すると有用な情報がヒットします。
PCMCIA仕様書 持ってないです。4万円もします。欲しいです。


著作権・免責事項など

本ページに記載されている論理式・回路図・ソフトウェア等の著作権はTTRMKRが保有します。無断転載・商用利用などは禁止します。個人的な製作に利用することは制限しません。
本ホームページを参考にしたいかなる結果についても、責任は負いません。
自作SpringBoardをVisorに装着した結果Visorが壊れてしまった場合には、メーカー保証が効かない可能性があります。注意してください。


トップページ

Last update:2000-07-18  TTRMKR