RASCSI/doc/converter.txt
Xavier Rey-Robert 35866cfb84 first commit
2018-05-03 15:47:57 +02:00

159 lines
5.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

------------------------------------------------------------------------------
SCSI Target Emulator RaSCSI (*^..^*)
version 1.33 for Raspberry Pi
Powered by XM6 TypeG Technology.
Copyright (C) 2016-2018 GIMONS
------------------------------------------------------------------------------
□変換基板の必要性について
SCSIはTTLレベルで5Vを220Ωと330Ωで分圧パッシブターミネータの場合する
ことで各信号線に3V弱の電圧がかかった状態が定常状態信号的にはネゲート)に
なっています。
イニシエータ側もしくはターゲット側が信号をアサートする0Vにしようと
すると両端のターミネータから合わせて5000÷220×2=45mAの電流が流れることに
なりますX68000のSCSIコントローラであるMB89352のデータシートを見ればシンク
電流としてIol48mAとなっています
RPIのGPIOはこのような大きなシンク電流は吸収できません。電気的に安全な接続
を行うためには汎用ロジックIC等で変換基板を作る必要があります。汎用ロジック
ICで48mAものシンク電流に耐えるのは74LS06とか07といったオープンコレクタで
ハイパワータイプのものを使用します。
作者は74HC541×3,74HC126×1,74HC04×1で基本的なSCSIの方向制御を行い更に
74LS07×3を使ってバスをドライブする回路を組んでみたところ問題なく動作する
ことを確認しました。
他にも74LS641の派生版である74LS641-1を使用すると回路はシンプルに構成できる
でしょう。ーマル品と違ってシンク電流が48mA対応なので74LS07を使用する必要
はありません。しかし入手性はそれほど良くありません。
□変換基板の回路図案
同じフォルダに回路図案を入れています。
・target.png
SCSIのターゲットモードを使用するための変換基板回路図です。基本機能である
HDDやMOのエミュレーションを行うのであればこの回路図相当の物を作れば良い
でしょう。使用するGPIOピンも最も少ない構成になります。
ピンアサインを変更しなければRaSCSIのstandardディレクトリに含まれる
バイナリを使用することが可能です。
・initiator.png
SCSIのターゲットモードに加えイニシエータモードを使用するための変換基板
回路図です。基本機能に加えてRPIがイニシエータとなって物理HDDにコマンド
を発行することが可能になります。モードの制御に追加で一つGPIOピンを消費
します。このイニシエータモードを使用したサンプルプログラムとしてrasdump
を用意しました。実HDDやMOからイメージファイルにダンプすることができます。
オプションでリストア機能も使用できます。
ピンアサインのカスタマイズでPIN_INDに標準では7を設定してコンパイルする
必要があります。ピンアサインのカスタマイズを参照してください。
・fullspec.png
SCSIのターゲットモード、イニシエータモードに加えてSCSIの通信をモニター
することができる変換基板回路図です。SCSIプロトコロルを解析する等の特殊
要件がある場合はこの回路が最適です。全ての74LS641-1の方向制御をRaSCSI
から行いますのでGPIOピンを三つ余分に使用してしまいます。SCSIの開発に
興味があればこの回路を組んでみてはどうでしょうか。特徴としてGPIOピン
を余分に使用する代わりに上のイニシエータモードが使用できる基板と比較
して74LS86が必要にならないため基板がシンプルになるという恩恵があります。
ピンアサインのカスタマイズで、PIN_TAD,PIN_IND,PIN_DTDにそれぞれ標準
では6,7,8を設定してコンパイルする必要があります。ピンアサインの
カスタマイズを参照してください。
□既存のものを手に入れる方法
最近では主にTwitter界隈を通じてRaSCSI用の変換基板を作成していただいて
いる方々がいらっしゃいます。
また秋葉原で委託販売されてます。
家電のKENCHAN 同人ハード(キット)のページ等です。
http://www.kadenken.com/shopbrand/ct76/"
現在のところ市販されているものとして
・BELさん開発のあいぼむ版
・tomcatさん開発のGAMERnium版
があります。
□ピンアサインのカスタマイズ
GPIOの信号制御論理やピンアサインはgpiobus.hとrascsidrv.cに定義があります。
定義が分かれているのはrascsidrv.cだけGPLなので敢えて分離しています。
御察し下さい。
カスタマイズ例としてgpiobus.hとrascsidrv.cに下記の二つの変換基板用定義例を
用意しました。配布物の中にはコンパイル済みバイナリも含まれています。
・BELさん開発のあいぼむ版
・tomcatさん開発のGAMERnium版
□カスタマイズ方法
・RaSCSI起動時のメッセージです。
CONNECT_DESC
・信号制御モードを選択します。
SIGNAL_CONTROL_MODE
0:SCSI論理仕様
直結またはHPに公開した74LS641-1等を使用する変換基板
アーサート:0V
ネゲート :オープンコレクタ出力(バスから切り離す)
1:負論理仕様(負論理->SCSI論理への変換基板を使用する場合)
現時点でこの仕様による変換基板は存在しません
アーサート:0V -> (CONVERT) -> 0V
ネゲート :3.3V -> (CONVERT) -> オープンコレクタ出力
2:正論理仕様(正論理->SCSI論理への変換基板を使用する場合)
RaSCSI Adapter Rev.C @132sync等
アーサート:3.3V -> (CONVERT) -> 0V
ネゲート :0V -> (CONVERT) -> オープンコレクタ出力
・制御信号ピンアサイン
PIN_ACT:SCSIコマンドを処理中の状態を示す信号のピン番号。
PIN_ENB:起動から終了の間の有効信号を示す信号のピン番号。
PIN_TAD:ターゲット信号(BSY,IO,CD,MSG,REG)の入出力方向を示す信号のピン番号。
PIN_IND:イニシーエータ信号(SEL,ATN,RST,ACK)の入出力方向を示す信号のピン番号。
PIN_DTD:データ信号(DT0...DT7,DP)の入出力方向を示す信号のピン番号。
・制御信号出力論理
0V:FALSE 3.3V:TRUEで指定します。
ACT_ON:PIN_ACT信号の論理です。
ENB_ON:PIN_ENB信号の論理です。
TAD_IN:PIN_TAD入力方向時の論理です。
IND_IN:PIN_ENB入力方向時の論理です。
DTD_IN:PIN_ENB入力方向時の論理です。
・SCSI信号ピンアサイン
PIN_DT0PIN_SEL:それぞれSCSI信号のピン番号です。
□コンパイル方法
・実行ファイル(rascsi,rasctl)
gpiobus.hを修正
make clean
make
・カーネルドライバ(rascsidrv.ko)
①OS最新化(必要あれば)
sudo apt-get update
sudo apt-get upgrade
sudo reboot
②カーネルヘッダー取得(必要あれば)
sudo apt-get install raspberrypi-kernel-headers
③コンパイル
cd kernelmodule
rascsidrv.cの修正
make
[EOF]