mirror of
https://github.com/akuker/RASCSI.git
synced 2024-09-11 18:56:58 +00:00
159 lines
5.7 KiB
Plaintext
159 lines
5.7 KiB
Plaintext
------------------------------------------------------------------------------
|
||
|
||
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_DT0~PIN_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]
|