STL(4)

名称
stl, stli - Stallion Technologies 社製のマルチポートシリアルコントローラ用のドライバ

書式
stl0 at isa? port <addr> tty irq <irq> stli0 at isa? port <io-addr> tty iomem <mem-addr> iosiz <size> flags <type> stli0 at eisa? port <io-addr> tty iomem <mem-addr> iosiz <size> flags <type>

解説
これは、Stallion Technologies 社製のマルチポートシリアルコントローラ用の カーネルドライバです。 ドライバは 2 種類あり、それぞれ異なる種類のボードに対応しています。 stl ドライバは EasyIO ボードと EasyConnection 8/32 ボードに対応しており、 stli ドライバは他の全ての種類のボードに対応しています。これには ONboard, Brumby, EasyConnection 8/64 が含まれます。

設定
システムにインストールされているそれぞれのボードについて、 カーネルの設定ファイルにエントリが必要です。 ボードの種類が異なると、それぞれに対して必要なオプションやパラメータも 少しずつ異なります。 ボードの種類によって、 stl ドライバか stli ドライバのいずれかが使われます。 stl ドライバと stli ドライバは 8 枚までのボードに対応できます。

ハードウェアの設定 (ディップスイッチ、ジャンパ等) はボードごとに 異なります。 ハードウェアの細かい設定については、ボードに付属している文書を ご覧ください。 あるいは、Stallion Technologies 社の WWW サイト (http://www.stallion.com) からもボードに関する文書を入手できます。

EasyIO 系と EasyConnection 8/32 系のボードでは stl ドライバを使います。 stl ドライバ用の ISA ボード設定エントリは、一般的に以下の形式です:

stlX at isa? port <io-addr> tty irq <irq>

X はボードに割り当てられているユニット番号です。 0 から 7 までの任意のユニークな番号が有効です。

ボードが使用する I/O アドレスは <io-addr> で指定します。 EasyIO ボードと EasyConnection 8/32-AT ボードはそれぞれ 0 から 0x400 の範囲の I/O アドレスを使用できます。

全ての EasyIO ボードと EasyConnection 8/32 ボードは割り込みを必要とし、 この割り込みは <irq> で指定します。 ISA ボードで有効な IRQ 値は 3, 4, 5, 7, 10, 11, 12, 15 です。 EasyIO-8M を除く全てのボードでは、割り込みはソフトウェア的に プログラムされています。

EasyConnection 8/32-AT ボードはセカンダリの I/O アドレス領域も使います。 このアドレス値は、ドライバのコード内で 0x280 に決め打ちされています。 全ての EasyConnection 8/32-AT ボードは同じセカンダリ I/O アドレス領域 を共有できます。

EasyConnection 8/32 PCI ボードは、起動時にシステムが自動的に検出します。 これらのボードに対しては、設定情報を予め与えておく必要はありません。 起動中には、 stl ドライバは EasyConnection 8/32 PCI ボードを検出したことと、このカード に関するいくつかの情報を示すメッセージを出力します。

以下では、 stl ドライバがサポートしている ISA ボードのそれぞれに対する設定エントリの 例をいくつか示します。 それぞれの設定例においては、各種類のボードに関する重要な詳細情報も いくつか述べます。

それぞれの EasyIO ボードは 8 バイトの I/O アドレス空間と 1 つの IRQ 線 を必要とします。 EasyIO ボード用の設定エントリは以下のようになるでしょう:

stl0 at isa? port 0x2a8 tty irq 15

このエントリは、I/O アドレスが 0x2a8 にあり、IRQ 15 を使っている EasyIO ボードを指定します。 I/O アドレスと IRQ 値は必要に応じて変更できます。

それぞれの EasyConnection 8/32-AT ボードは 2 組の I/O アドレスと 1 つの IRQ 線を必要とします。 プライマリの I/O アドレス領域は、大きさが 2 バイトで、かつシステム上に あるそれぞれの EasyConnection 8/32-AT ボードについてユニークでなければ なりません。 セカンダリの I/O アドレス領域は、大きさは 32 バイトですが、複数の EasyConnection 8/32-AT ボードで共有できます。 このセカンダリの I/O アドレスは、ドライバのコード中で 0x280 に 設定されています。 設定エントリは以下のようになります:

stl0 at isa? port 0x2a0 irq 10 tty

この設定は、プライマリの I/O アドレスが 0x2a0, セカンダリの I/O アドレス が 0x280, IRQ が 10 である EasyConnection 8/32-AT を指定します。

ONboard, Brumby, EasyConnection 8/64 系のボードでは stli ドライバを使います。 stli ドライバはこれらの系列のカードの ISA 版と EISA 版に対応しています。

stli ドライバ用の ISA ボード設定エントリは、一般的に以下の形式となります:

stliX at isa? port <io-addr> tty iomem <mem-addr> iosiz <size> flags <type>

X はボードに割り当てられたユニット番号です。 0 から 7 までの任意のユニークな番号が有効です。

ボードが使う I/O アドレスは <io-addr> で指定します。 サポートされているボードであっても、有効な I/O アドレスの制限は ボードの種類ごとにそれぞれ異なり、必要とされる I/O 空間の大きさも 異なります。

stli を用いる全てのボードは、操作できる共有メモリ領域を必要とします。 ボードの種類によって、必要な領域の大きさは 4k バイトから 64k バイトま で変わります。ボードの領域の大きさは設定エントリの <size> フィールドで指定し、この領域のアドレスは <mem-addr> フィールドで指定します。

flags フィールドは、このエントリが適用される特定のボードを指定します。 ドライバは必ずしも全ての種類のボードを実行時に識別するわけではないので、 ドライバはこのフィールドを必要とします。 有効なボードの種類を以下に示します:

    ボード名			種類	I/O サイズ
    Brumby				  2	0x4000
    ONboard				  4	0x10000
    ONboard/E			  7	0x10000
    EasyConnection 8/64-AT		 23	0x1000
    EasyConnection 8/64-EISA	 24	0x10000

stli ドライバがサポートしているそれぞれのボードについて、設定例を以下にいく つか示します。それぞれの設定例では、各種類のボードに関する重要 な詳細情報もいくつか述べます。

EasyConnection 8/64-AT ボードは、4 バイトの I/O アドレス空間と 4k バイトのメモリ空間を必要とします。 設定エントリは以下のようになります:

stli0 at isa? port 0x2a0 tty iomem 0xcc000 iosiz 0x1000 flags 23

このエントリの flags フィールドでは、これが EasyConnection 8/64-AT ボード であることを指定しています。 I/O アドレスは 0x2a0 に設定され、メモリアドレスは 0xcc000 に設定されます。 iosiz パラメータは、メモリ領域のサイズとして 4k バイトを指定しています。

EasyConnection 8/64-EISA ボードは、メモリ空間に 64k バイトの領域を 必要とします。 この領域は 32 ビットメモリアドレス空間のどこに置いても構いません。 設定エントリは以下のようになります:

stli0 at eisa? port 0x2000 tty iomem 0x80000000 iosiz 0x10000 flags 24

flags フィールドは、これが EasyConnection 8/64-EISA ボードであることを 示すために用います。 I/O (ポート) アドレス資源は、ボードが挿さっている EISA スロットから得ま す。 各 EISA スロットには、システムのハードウェアから I/O アドレス空間の 一部が割り当てられます。 このアドレスは 0xX0000 となります(X はスロット番号)。 例で取り上げているボードはメモリアドレス 0x80000000 にあります。これは 2G バイトを表します。 iosiz パラメータはメモリ領域の大きさを指定します。この例では 64k バイトです。

それぞれの ONboard ISA ボードは 16 バイトの I/O 空間と、 メモリアドレス空間上の64k バイトの領域を必要とします。 ONboard の有効な I/O アドレスは 0x200 から 0x300 の範囲内です。 ONboard ISA の設定エントリは以下のようになります:

stli0 at isa? port 0x240 tty iomem 0xd0000 iosiz 0x10000 flags 4

このエントリでは、flags を 4 に設定することによって ONboard ISA を指定 しています。 このエントリでは I/O アドレス 0x240 と、メモリアドレス 0xd0000 の 64k バイトの領域を使っています。

各 ONboard/E ボードは 64k バイトのメモリ領域を必要とし、これは 32 ビットアドレス空間 (0 から 4G バイトまで) 上のどこでも構いません。 設定エントリは以下のようになります:

stli0 at eisa? port 0x3000 tty iomem 0xc0000000 iosiz 0x10000 flags 7

この例は、0xc0000000 (3G バイト) を共有メモリアドレスに使い、 スロット 3 にある ONboard/E を指定しています。

Brumby ボードは 1 枚につき 16 バイトの I/O アドレス空間と 共有メモリ空間の 4k バイトの領域を必要とします。 Brumby の有効な I/O アドレスの範囲は 0x300 から 0x400 までです。 Brumby の共有メモリ領域は、メモリアドレス空間の 0xc0000 から 0xdc000 の領域でなければなりません。 Brumby の設定エントリは以下のようになるでしょう:

stli0 at isa? port 0x360 tty iomem 0xc8000 iosiz 0x4000 flags 2

このエントリは、I/O アドレス 0x360 にあり、アドレス 0xc8000 にある 共有メモリ領域を使っている Brumby ボードを指定しています。

注
ポートに対するデバイスノードを作成する際には、正しいデバイス名である stl または stli を必ず使ってください。 それぞれのドライバには別のメジャー番号が割り当てられています。 したがって、たとえポートのデバイス名がそれぞれのドライバについて 同じであっても、デバイスノードのメジャー番号は異なります。 デバイスを作成するには MAKEDEV(8) スクリプトを使ってください。 stl ドライバに対しては ttyE と cue タグを使い、 stli ドライバに対しては ttyEi と cuei タグを使ってください。

インテリジェントなタイプのボード(ONboard, Brumby, EasyConnection 8/64) は、ファームウェアをダウンロードしなければポートが操作可能になりません。 これは stlload コマンドを使って行うことができます。 詳しい使い方についてはマニュアルページを参照してください。

関連ファイル
/dev/ttyE?
    標準の着呼デバイス
/dev/ttyiE?
    初期状態の着呼デバイス
/dev/ttylE?
    ロック状態の着呼デバイス
/dev/cue?
    標準の発呼デバイス
/dev/cuie?
    初期状態の発呼デバイス
/dev/cule?
    ロック状態の発呼デバイス
/dev/staliomem?
    ボード制御デバイス

ポート番号はボード 0 のポート 0 の 0 から始まる点に注意してください。 それぞれのボードには 64 個のポートスロットが割り当てられています。 したがって、2 番目のボードのポート番号は 64 から 127 までです。 デバイスを作成するには MAKEDEV(8) スクリプトを使ってください。 stl ドライバに対しては ttyE と cue タグを使い、 stli ドライバに対しては ttyEi と cuei タグを使ってください。

関連項目
stty(1), termios(4), tty(4), comcontrol(8), MAKEDEV(8), stlload(8), stlstats(8)

歴史
このドライバを最初に開発したのは Greg Ungerer <gerg@stallion.com> です。