EN JA
SI(4)
SI(4) FreeBSD Kernel Interfaces Manual SI(4)

名称

siSpecialix International SI/XIO または SX のインテリジェントシリアルカードのためのドライバ

書式

device si

ISA ホストカードのために /boot/device.hints 中に次の行を入れます:
hint.si.0.at="isa"
hint.si.0.maddr="0xd0000"
hint.si.0.irq="12"

解説

Specialix SI/XIO と SX ハードウェアは 8 ポートから 32 ポートの RS-232 シリアルマルチプレクサで構成されます。

システムは 2 つの構成を使用します: "ホストアダプタ"は ISA、EISA または PCI スロットに差し込まれ、 37 ピンケーブル形式の外部バスと同様に、知的なバッファリングと処理能力を提供します。

このケーブルでは、"モジュール"が接続されます。 "SI"モジュールは 4 ポートと 8 ポートのバージョンが売られています。 "XIO"と "SX"モジュールは 8 ポートのバージョンだけが売られています。

ホストアダプタはモジュールとほかのマシンの間でポーリングし転送します。ホストアダプタは、維持することができるそれぞれの 32 のポートのための 256 バイトの送信と 256 バイトの受信の FIFO を提供します。

XIO モジュールは 115,200 ボーでそれらの各 8 ポートを作動させることができます。 SI バージョンは 57,600 ボーで実行できます。 SX モジュールは最大 921,600 ボーでそれらの各 8 ポートを作動させることができます。

SX モジュールは SX ホストカードに接続されるときのみサポートされます。 SI または XIO モジュールはどんなホストカードでもサポートされます。

ホストアダプタは 0xA0000 と 0xEFFFF の間の伝統的な ISA バス "穴"で共有メモリブロックを使用します。アダプタは、範囲外で設定できますが、そのメモリ範囲を明示的に非キャッシュにする必要があります。ドライバはこの操作モードをまだサポートしていません。

SX ISA ホストカードは 8/16 ビットモードの切り替えスイッチかジャンパを持っています。このスイッチかジャンパは 8 ビットモードに設定しなければなりません。

ISA アダプタは Irq の 11、12、15 を使用できます (そして、SX ホストカードの場合は 9 と 10 を使用できます)。

si デバイスドライバは、 sicontrol(8) ユーティリティで実行時にいくつかの設定を変更できます。

また、si デバイスドライバはドレインオンクローズ (drain-on-close) タイムアウトを設定するために comcontrol(8) ユーティリティに反応します。

また、ドライバは操作できる 3 つの sysctl 変数を定義しています: machdep.si_debug はドライバ全体のデバッグレベルを設定します。それは、ドライバが SI_DEBUG でコンパイルされている必要があります。 machdep.si_pollrate は失われた割り込みのために 1 秒間にどれくらいの頻度でドライバがポーリングするかを設定します。 machdep.si_realpoll はカードが割り込みであるかのようにポーリングの間隔を扱うかどうかを設定します。

si ドライバによって制御される /dev デバイスノードに対するオープンは、 sio(4) ドライバと同じセマンティクス (動作) に従います。それは cua ポートの通常のセマンティクス (動作)、"初期 termios"と "ロックされた termios"の設定を完全にサポートします。要約すれば、O_NONBLOCK が指定されなければ、 tty ポートでのオープンは DCD が上がるまでブロックされます。 CLOCAL は支持されます。 cua ポートでのオープンはいつも成功しますが、DCD が初めて上がる後に DCD 遷移は支持されます。

最大 4 つの SI/XIO ホストカードは si ドライバによって制御できます。利用可能な割り込みが不足しているため、3 つの ISA SI/XIO ホストカードしか使用することができません。

マイナデバイス番号の下位 5 ビットは、モジュールクラスタ上のポート番号を選択するために使用されます。次の 2 ビットは 4 つのホストアダプタカードのどれを選択するかです。このドライバで最大 128 のポートを許容します。

ビット 7 は、tty/dialin (ダイヤルイン) ポート (ビット 7=0) と cua/callout (発呼) ポート (ビット 7=1) を区別するために使用されます。

( FreeBSD では) ビット 8 から 15 は、それらがメジャーデバイス番号の影であるので利用不可能です。

ビット 16 が 1 である場合、デバイスノードは "初期状態"デバイスであることを示します。この "初期状態"は、初めにオープンされるときにデバイスの termios(4) 設定を準備するために使用されます。ビット 17 が 1 である場合、デバイスノードは "ロックされた状態"デバイスであることを示します。 "ロックされた状態"は、 termios(4) 設定が変更されるのを防ぐために使用されます。

初期の/ロックされた設定を操作するために、 stty(1) コマンドは役に立ちます。 "ロックされた"変数を設定するとき、ロックデバイスでモードを有効にすることは、 termios モードをロックします。一方、モードを無効にすることは、それをアンロックします。

関連ファイル

/dev/si_control
sicontrol(8) のためのグローバルなドライバ制御ファイル
/dev/ttyA*
端末/dialin (ダイヤルイン) ポート
/dev/cuaA*
dialout (ダイヤルアウト) ポート
/dev/ttyiA*
初期 termios 状態デバイス
/dev/ttylA*
ロックされた termios 状態デバイス
/dev/cuaiA*
dialout (ダイヤルアウト) ポートのための初期 termios 状態デバイス
/dev/cualA*
dialout (ダイヤルアウト) ポートのためのロックされた termios 状態デバイス

歴史

このドライバは、 Andy Rutter <andy@specialix.co.uk>によって BSDI で実行するために移植された Specialix に由来するドライバコードにおおまかに基づいています。 System V 用のドライバのソースは ftp.specialix.co.uk からの ftp で入手可能です (でした)。

このドライバは、Specialix International によってサポートされていません。

作者

Peter Wemm <peter@netplex.com.au>は Andy Rutter からコードを得て、 FreeBSD に移植しマニュアルページとともに提出しました。 Bruce Evans <bde@zeta.org.au>は、移植の間、多くの手伝いを行ないました。 Nick Sayer <nick@specialix.com>は、EISA、PCI、と SX の部分を書きました。

バグ

割り込みチューニングレートは現時点で最大の効率に最適化されているとは思われません。

ポーリングモード (標準の Specialix ドライバの特徴) は実装されていませんが、 machdep.si_realpoll を切り替えることによって、それに似たことができます。ポーリングの頻度は machdep.si_pollrate によって (1/100 秒単位で) 設定されます。

ドライバは SX モジュールで 115,200 より高いボーレートをまだサポートしていません。

伝統的な ISA "穴"の外の操作はまだサポートされていませんが、プローブルーチンからそのテストを取り除くなら働くはずです。

異なったバスタイプでホストの組み合わせはテストされていませんが、複数のホストカードはサポートされています - デバイスの番号付けは問題があることが知られており、予期しなかった結果を招くかもしれません。

September 16, 1995 FreeBSD