次のページ 前のページ 目次へ

5. マルチポートシリアルボード/カード/アダプタ

5.1 マルチポートシリアル入門

マルチポートシリアルカードは PC の ISA バスまたは PCI バスのスロッ トに設置します。「…カード」と呼ぶ代わりに、「…アダプタ」や「…ボード」 と呼ばれることもあります。このようなカードを使うと、シリアルポートをた くさん使うことができます。今日では、マルチポートシリアルカードは(企業 や家庭における自動化を含めて)外部デバイスの制御に一般的に使われていま す。マルチポートシリアルカードは、遠隔地からコンピュータサーバを監視/ 制御するためにコンピュータサーバに接続できます。 これはかつては主としてたくさんの端末やモデムを シリアルポートに接続するために使われていました。 こういった使い方もまだされていますが、マルチポートシリアルカードを モデムと組み合わせて使うと、普通のモデムの場合と同じ制限を受けます。 つまり、モデムが 56K モデムであっても、接続速度は 33.6K を超えることが できません。

したがって、誰かがあなたに電話をかけ(そして、カードに挿さったモデムか らあなたのマルチポートシリアルカードに接続し)た場合、たとえ 56K モデム を使っていたとしても、どちらの向きの通信速度も 33.6K を超えることはで きません。ダイアルイン接続で 33.6K を超えるためには、電話線がデジタル 接続になっている必要があります。この場合、シリアルポートはもう関係なく なります。したがって、マルチポートシリアルカードは今では ISP や 外部から 56K(33.6K 以上で)ダイアルイン接続をさせる必要がある人が使うに は時代遅れのものになりました。詳しくは Modem-HOWTO の「Modem Pools」と 「Digital Modem」の節を見てください。

各種マルチポートカードにはたくさんの外部コネクタ(DB-25 または (電話線のような)RJ-45)がついており、たくさんのデバイス(モデム、端末 など)を接続できます。それから、こういった物理デバイスはそれぞれ 各自のシリアルポートに接続されます。カードの外に面している部分の面積は 限られているため、全てのシリアルポートコネクタに対して十分な空間が取れ ないこともよくあります。この問題を解決するために、コネクタはカードから (外部に)延びているケーブル(タコ足ケーブル)の端に繋がれることがあります。 こういったコネクタはマルチポートカードとケーブルで繋がっている小さな箱 に接続されることもあります。

ダムシリアルポートも通常のシリアルポートとあまり変わりません。ダムシリ アルポートも割り込み駆動であり、このポートにサービスする動作のほとんど 全てはコンピュータの CPU が行います。これには普通、1 つの割り込みを全 てのポートで共有するためのシステムが付いています。だからといって CPU に かかる負荷が減るわけではありません。なぜなら、いずれかのポートがサービスを 必要とするたびに CPU に割り込みがひとつ送られるからです。こういった デバイスは通常は特殊なドライバを必要とします。ドライバはカーネルに組 み込むか、ソースコードの修正によって有効にしなければなりません。

賢いボードは通常の UART を使えますが、UART からの割り込みのほとん どをボード内で内部的に処理します。これにより、CPU はこういった割り込み の全てを扱うという負荷を逃れることができます。このボードはバイトデータ を大きな内部 FIFO に蓄え、一度に 1K バイトくらいのデータをメインメモリ 上のシリアルバッファに転送します。メインメモリへのデータ転送を行う際に は、(ダムシリアルカードのように 8 ビットのバイトだけを転送するのではな く)32 ビットのバス幅を全て使うことができます。必ずしも全ての「賢い」 ボードが同じように効率的なわけではありません。現在の多くのボードはプラ グ&プレイ対応です。

賢いボードを動かすためには、専用のドライバを使わなければなりません。 このドライバはカーネルのソースコードに組み込まれていたり、モジュールと して提供されることもあります。こういった場合でも、ドライバを有効にする には何かしなければなりません。その作業には、カーネルのコンパイル時に 選ぶこと(または、予めコンパイルされているカーネルがそうなっているかど うかを確かめること)が含まれます。"make config" コマンドか "make menuconfig" コマンドを使うと、このオプションがどのように設定され ているかを確かめることができます。場合によっては、特殊なドライバを ロードしたり、特定のパラメータを(LILO の append コマンドを使って) カーネルに渡すこともあります。ボードのメーカーは、このような情報を自社 のウェブサイトに載せているはずです。残念ながら、古いボードの情報がない ことも時々ありますが、その情報はインターネット上の他の場所で見つけられ るかもしれません(議論用のニュースグループを含みます)。

5.2 /dev ディレクトリでの「デバイス」の作成

マルチポートボードが使うシリアルポートは、お使いのボードの種類によって 異なります。一部のポートは rc.serial0setserial に詳しく列挙されているかもしれません。これらのファイルは setserial パッケージまたは serial パッケージに入っているかもしれません。 筆者としては、読者の皆さ んがマルチポートボードを使おうとしているのなら、最新バージョンの setserial を入手することを強くお勧めします。また多分、これらのデ バイスを作成する必要があるでしょう。作成には mknod コマンドか MAKEDEV スクリプトを入手してください。シリアルポート用のデバイス (/dev ディレクトリにある)は、「64 + ポート番号」の足し算で作れます。 したがって、ttyS17 用のデバイスを作成したければ、以下のコマン ドを実行します:

linux# mknod -m 666 /dev/ttyS17 c 4 81
ttyS デバイスの「メジャー」番号は必ず 4 である点(そして、5 は時代遅れ の cua デバイスの番号である点)に注意してください。 また「64 + 17 = 81」にも注意してください。 MAKEDEV スクリプトを使う場合には以下のコマンドを実行します:
linux# cd /dev
linux# ./MAKEDEV ttyS17

本 HOWTO に書かれているマルチポート製品の一覧以外にも、 Gary's Encyclopedia - Serial Cards という WWW ページがあります。これは完全 ではありませんが、他へのリンクもいくつかあります。

5.3 PC 標準のシリアルカード

昔は PC にはシリアルカードが独立して挿さっていました。少し前は シリアル機能はハードディスクのインタフェースカードに組み込まれていまし た。現在は、普通は一つまたは二つのシリアルポートがマザーボードに組み込 まれています。しかし、追加のシリアルポートが 1 つから 4 つ必要な場合は 今でも PC 用の旧式のシリアルカードを買えるでしょう。これらは ttyS0-ttyS3 (COM1 - COM4)として使います。これらを使って外付けシリアル デバイス(モデム、シリアルマウス等)を接続できます。 小売のコンピュータショップでこういったカードを扱っているのはごく一部だ けです。しかし、インターネットを通じて購入することもできます。PCI の シリアルカードを買う前には、Linux が対応していることを確かめましょう。

有名なブランドをいくつか紹介します:

注意: アドレスが衝突するため、COM4 と IBM8514 ビデオカード(など)は同時 に使えないかもしれません。 特定のビデオボードでの I/O アドレスの衝突を避ける方法 をご覧ください。

5.4 ダムマルチポートシリアルボード (標準の UART チップが載っているもの)

以下のボードは「シリアルアダプタ」とも呼ばれます。これらのカードは、 対応機能をカーネルにコンパイルして組み込む必要がある特殊な方法を使って 割り込みを共有していることがよくあります。

* => Debian では setserial を実行するファイルが、詳細な設定を表示します。 # => このボードについては後述の注を見ること

一般的には、Linux は 8250, 16450, 16550, 16550A, 16650 などの UART を 使っている全てのボードに対応しています。もっと詳しいリストについては、 "setserial" の最新のマニュアルページを参照してください。

注:

AST Fourport: rc.serialskip_test を指定する必要があるか もしれません。

BB-1004 と BB-1008 は DCD, RI ラインをサポートしておらず、そのためダイ アルイン用のモデムには使えません。他の目的では問題なく動作します。

Digi PC/8 の割り込み状態レジスタの位置は 0x140 です。

SIIG IO1812 のマニュアルに書かれている COM5 から COM8 のリストは誤って います。正しくは COM5=0x250, COM6=0x258, COM7=0x260, COM8=0x268 のはず です。

5.5 インテリジェントマルチポートシリアルボード

Linux 互換のドライバが使えることを確かめ、ドライバ付属の情報を読んで ください。これらのカードは、標準のデバイスでなく特殊なデバイス(/dev ディ レクトリにある)を使います。この情報はハードウェアごとに異なります。こ の文書に載せるべき新しい情報があれば、ぜひ筆者にメールを送ってください。

Linux のドライバモジュールの名前は *.o ですが、これらは全てのモデルで 正しく動作するとは限りません。また、(I/O アドレスや IRQ 等の)パラメータ をモジュールに与える必要があることも多いので、それに関する説明を見つけ る必要もあります(ソースコードツリーの中にあるかもしれません)。

マルチポートカードのブランドはたくさんあり、それぞれから色々な種類のカー ドがよく出されます。 今のところ、これらのカードをここで網羅しようとはしていません(また挙げ ているものの多くは時代遅れになっているかもしれません)。 したがって、このリストはマルチポートカードやそ のブランドについて古いものと新しいものがごっちゃになっています。 ウェブページから分かる場合には連絡先は削除しました。 ドライバに関する情報も同じウェブページで見つかるはずです。 ウェブページを紹介していない場合、そのカードはたぶん古いと思います。 リストをよりよくするために情報を追加したいと思う方は、筆者にお知らせく ださい。

Comtrol 社, Cyclades 社, Digi 社, Stallion 社の製品のレビューが Linux Journal 誌の 1995 年 6 月号に掲載されています。この記事は http://www.ssc.com/lj/issue14 で読むことができます。

5.6 未対応のマルチポートボード

2000 年 1 月 1 日現在、以下のボードは Linux でのサポートが 全く謳われていません。状況が変化していたらお知らせください。


次のページ 前のページ 目次へ