スポンサーリンク

NAME

si − Specialix International SI/XIO および SX インテリジェントシリアル カードのためのドライバ

書式

device si0

device si0 at isa? tty irq 12 iomem 0xd0000

解説

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

上の 1 行目は EISA と PCI ホストカード用で、2 行目は ISA ホストカード用の ものです。

システムは 2 つの部分を使います: 「ホストアダプタ」は ISA、EISA あるいは PCI スロットに挿入され、 37 ピンケーブル形式の外部バスと、制御とデータの バッファリングおよび処理を行う能力を提供します。

このケーブルには「モジュール」が接続されます。 "SI" モジュールは 4 ポート あるいは 8 ポートのバージョンがあります。"XIO" および "SX" モジュールは 8 ポートのバージョンだけがあります。

ホストアダプタはデータをポーリングし、モジュールとマシンの間の転送を行な います。ホストアダプタは、制御できる 32 個のポートのそれぞれについて 256 バイトの送信用および 256 バイトの受信用 FIFO バッファを提供します。

XIO モジュールは 8 個のポートそれぞれについて 115,200 ボーで使用できま す。SI バージョンは 57,600 ボーです。 SX モジュールは 8 個のポートそれぞ れについて最大 921,600 ボーで使用できます。

SX モジュールは SX ホストカードに接続されている場合にのみサポートされま す。SI または XIO はどのホストカードでもサポートされています。

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

SX の ISA ホストカードは、8 ビットモードと 16 ビットモードを切り替えるス イッチまたはジャンパを持っています。このスイッチまたはジャンパは、8 ビッ トモードにセットされていなければなりません。

ISA アダプタは IRQ 11, 12, 15 を利用できます (さらに、SX ホストカードでは IRQ 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 の変化も効きます。

si ドライバは SI/XIO ホストカードを最大 4 枚まで制御できます。割り込みが 足りないため、同時に使用できる SI/XIO ホストカードは 3 枚までです。

マイナデバイス番号の下位 5 ビットは、モジュールクラスタ上のポート番号を選 択するために使われます。次の 2 ビットは 4 枚のホストアダプタカードのどれ を選択するかを決めます。これにより、このドライバ上で最大 128 個のポートが 利用可能になります。

bit 7 で tty/着呼ポート (bit 7=0) と cua/発呼ポート (bit 7=1) を区別しま す。

bit 7 から bit 15 ( FreeBSD において) はメジャーデバイス番号の影にあたる ため利用できません。

bit 16 が 1 であれば、そのデバイスノードは "初期状態" デバイスであること を示します。この "初期状態" は、最初にオープンされた時にデバイスの termios(4) の設定を準備するために使われます。 bit 17 が 1 であれば、"ロッ ク状態" デバイスであることを示します。 "ロック状態" は、 termios(4) の設 定の変更を阻止するために使われます。

初期 / ロックの設定を操作するためには、 stty(1) コマンドを使うとよいで しょう。 "ロック" 変数の設定においては、ロックデバイスのモードを有効にす ると、 termios(4) のモードがロックされます。逆に、ロックデバイスのモード を無効にすると、 termios(4) のモードがロック解除されます。

ファイル

       /dev/si_control

sicontrol(8) が使用する、ドライバを制御するグローバルな ファイル。
/dev/ttyA*

ターミナル / 着呼ポート
/dev/cuaA*

発呼ポート
/dev/ttyiA*

初期状態 termios デバイス
/dev/ttylA*

ロック状態 termios デバイス
/dev/cuaiA*

発呼ポート用の初期状態 termios デバイス
/dev/cualA*

発呼ポート用のロック状態 termios デバイス

関連項目

stty(1), sio(4), termios(4), tty(4), comcontrol(8), sicontrol(8)

歴史

このドライバは Specialix 由来のドライバコードをおおざっぱにベースとしてお り、 Andy Rutter ⟨andy@specialix.co.uk⟩ が BSDI で動かすために移植しまし た。 System V 用のドライバソースが ftp で ftp.specialix.co.uk. から入手 可能です (入手可能でした)。

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 の "穴" の外での動作はまだサポートされていません。プローブ ルーチンから穴のテストを削除すれば動くはずですが。

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

スポンサーリンク