<!-- $Id: sio.sgml,v 1.5 1997-02-25 04:58:28 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.5 -->

<!--
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [

<!ENTITY % authors SYSTEM "authors.sgml">
%authors;

]>
-->
<sect2><heading> <tt>sio</tt>ドライバの設定<label id="sio"></heading>

<p> <tt>sio</tt> ドライバは, NS8250-, NS16450-, NS16550とNS16550A
ベースの EIA RS-232C(CCITT V.24) 通信用インタフェースをサポートします.  ま
た, いくつかのマルチポートシリアルカードもサポートされています. 技術的
な詳細についてはマニュアル<tt>sio(4)</tt>を見てください.

<sect3><heading>Digi International (DigiBoard) PC/8</heading>

<p><em>原作: &a.awebster;.<newline> 1995年8月26日.</em>
<p><em>訳: &a.masaki;.<newline>6 September 1996.</em>

以下にDigi International PC/8Dと16550チップを動作させるための, カーネ
ルconfigの部分を示します. このボードは, 8本の回線にすべてモデムを接続
した場合でも良好に動作します.

<tt>options COM_MULTIPORT</tt> を加えるのを忘れないでください. 忘れる
とうまく動作しません!

<tscreen><verb>
device          sio4    at isa? port 0x100 tty flags 0xb05
device          sio5    at isa? port 0x108 tty flags 0xb05
device          sio6    at isa? port 0x110 tty flags 0xb05
device          sio7    at isa? port 0x118 tty flags 0xb05
device          sio8    at isa? port 0x120 tty flags 0xb05
device          sio9    at isa? port 0x128 tty flags 0xb05
device          sio10   at isa? port 0x130 tty flags 0xb05
device          sio11   at isa? port 0x138 tty flags 0xb05 irq 9 vector siointr
</verb></tscreen>

ここで各 SIO ポートが割り込みを共有する一つのグループであることを表現
するために, トリッキーな設定をしなければなりません. フラグ (flags の後
ろの 16 進数) の下から 2 バイト目にこのグループの最後の SIO ポートの番
号を設定します. この例では 11 (16進数では 0x0b) ですから, 各デバイスの
フラグは 0xb05 となります. 

<sect3><heading>Boca 16</heading>

<p><em>寄贈 &a.whiteside;.<newline> 1995年8月26日</em>

FreeBSD で Boca 16pord のボードを動かすことは簡単ですが, そのた
めにはいくつかの作業が必要です. :

<enum>

<item>2.0.5 のデフォルトのカーネルは, マルチポートのサポートを<bf>して
いない</bf> ので, あなたは各ポート毎にデバイスエントリを追加する必要が
あります. つまり必要なオプションを付けて, カーネルの再構築をしなければ
なりません. そのためには, あなたのマシンにカーネルのソースコードが既に
インストールされているか, あなたの替わりの誰かにカーネル再構築をやって
もらう必要があります. </item>

 <item>2番目に, あなたはカーネルオプションを正しく設定するために, あな
たのBoca BoardのIOと割り込みの値を知っている必要があります. </item>

</enum> 

ひとつ重要なことがあります.  Boca 16 に使われている実際の UART チップ
は, Boca 16 のボードではなく, 外付けのコネクタボックスの中に存在します. 
コネクタボックスを接続しないと, ポートの検出に失敗するでしょう. 私は, 
接続しないまま起動したり, 後から接続しなおしたりした時にどうなるかをテ
ストしていません. どちらも実行しないようお奨めします.

もしあなたがカスタマイズ済みのカーネルコンフィグレーションファイルを持っ
ていなければ, 一般的な事柄については, <ref id="kernelconfig" 
name="FreeBSDカーネルのコンフィグレーション"> 
を参考にしてください. 以下にBoca 16のボード
に関係する部分だけを記述します. この例では, あなたがMYKERNELという名前
のカーネルを使っていて, エディタには viを使っていることを仮定していま
す.

<enum>
<item>次の1行をconfigファイルに追加してください.
<tscreen><verb>
options COM_MULTIPORT
</verb></tscreen>
</item>

<item>この <tt>device sio<em>xxx</em></tt>という行を, 必要に応じて 16
個のデバイス分を追加してください. <em>最後のデバイスにだけ, このボード
の割り込みベクタを記述します</em>. (詳細は <tt>sio(4)</tt> のマニュア
ルページを参照してください.)

以下の例は, 割り込み 3, ベース IO アドレス 100h の値を持つ Boca Board 
の場合です. 各ポートのための IO アドレスは, 100h, 108h, 110h, ... のよ
うに 16 進法で 8 づつ加えていきます.

<tscreen><verb>
device sio1 at isa? port 0x100 tty flags 0x1005
device sio2 at isa? port 0x108 tty flags 0x1005
device sio3 at isa? port 0x110 tty flags 0x1005
device sio4 at isa? port 0x118 tty flags 0x1005
[...]
device sio15 at isa? port 0x170 tty flags 0x1005
device sio16 at isa? port 0x178 tty flags 0x1005 irq 3 vector siointr
</verb></tscreen>

フラグエントリは, あなたが全く同じsioの割り当てを使っていない限り <em>
必ず</em> 上記の例から変更してください. フラグは, 次のように設定します.
0x<em>MYY</em> の<em>M</em>は, マスタポート (Boca 16に搭載された最後
のポート)のマイナー番号を指定します. さらに <em>YY</em> の部分はFIFOが
有効または無効であること (この場合は有効), 割り込みを (ボード内で) 共
有しているか (この場合はYES), そして, AST/4 と互換性のある持つ割り込み
制御レジスタを持っているか (この場合はNO) を指定します.


この例では,
<tscreen><verb>
flags 0x1005
</verb></tscreen>

というフラグによって, マスタポートが sio16 であることを示します. も
し同じボードをもう一枚追加し, sio17 から sio28 を割り当てるなら, <em>
新しい方の</em> ボードに対応する 16 個のポートのフラグはすべて 0x1C05 に
なります. 28 (== 0x1C) は新しいボードのマスタポートのマイナー番号で
す. フラグの 05 の部分は変更しないでください. </item>

<item>カーネルコンフィグレーションファイルを保存してカーネルの設定を完了しま
す. カーネルをコンパイル後, インストールし, 新しいカーネルでリブートし
てください.

再コンパイルされたカーネルがうまくインストールされて, そのカーネルに正
しいアドレスと割り込みが設定されていたならば, ブートメッセージは次の
ように Boca ポートの検出に成功するはずです:
(sioの番号, IOとIRQの値は, この例とは異なっているでしょう)

<tscreen><verb>
sio1 at 0x100-0x107 flags 0x1005 on isa
sio1: type 16550A (multiport)
sio2 at 0x108-0x10f flags 0x1005 on isa
sio2: type 16550A (multiport)
sio3 at 0x110-0x117 flags 0x1005 on isa
sio3: type 16550A (multiport)
sio4 at 0x118-0x11f flags 0x1005 on isa
sio4: type 16550A (multiport)
sio5 at 0x120-0x127 flags 0x1005 on isa
sio5: type 16550A (multiport)
sio6 at 0x128-0x12f flags 0x1005 on isa
sio6: type 16550A (multiport)
sio7 at 0x130-0x137 flags 0x1005 on isa
sio7: type 16550A (multiport)
sio8 at 0x138-0x13f flags 0x1005 on isa
sio8: type 16550A (multiport)
sio9 at 0x140-0x147 flags 0x1005 on isa
sio9: type 16550A (multiport)
sio10 at 0x148-0x14f flags 0x1005 on isa
sio10: type 16550A (multiport)
sio11 at 0x150-0x157 flags 0x1005 on isa
sio11: type 16550A (multiport)
sio12 at 0x158-0x15f flags 0x1005 on isa
sio12: type 16550A (multiport)
sio13 at 0x160-0x167 flags 0x1005 on isa
sio13: type 16550A (multiport)
sio14 at 0x168-0x16f flags 0x1005 on isa
sio14: type 16550A (multiport)
sio15 at 0x170-0x177 flags 0x1005 on isa
sio15: type 16550A (multiport)
sio16 at 0x178-0x17f irq 3 flags 0x1005 on isa
sio16: type 16550A (multiport master)
</verb></tscreen>

もしメッセージの表示が速くて読み取れないときは, <tt>dmesg | more</tt>
とするとブート時のメッセージをゆっくり見ることができます. </item>

<item>次に, root になってから, デバイスにあわせたエントリを <tt>/dev/MAKEDEV</tt>スクリプトを使って<tt>/dev</tt> に追加します. 
		
<tscreen>
# cd /dev<newline>
# ./MAKEDEV tty1<newline>
# ./MAKEDEV cua1<newline>
<em> (中略) </em><newline>
# ./MAKEDEV ttyg<newline>
# ./MAKEDEV cuag
</tscreen>

もし, 何らかの理由で発信するデバイスが不要な場合,  <tt>cua*</tt> デバ
イスを作らないで済ますこともできます.</item>

<item>デバイスが確実に動作しているかどうか確認する手っ取り早い方法は, 
あなたが (rootになって) 各ポートにモデムを接続してみて, あなたが作成し
た各デバイス毎に<tt>echo at&gt; ttyd*</tt>とやってみてください. 各ポー
トが動作していればRXの表示が光るのが見える<em>はず</em> です. </item>

</enum>


