MFen:
1.26 -> 1.27 hw/chapter.sgml Submitted by: Hiroki Sato <hrs@geocities.co.jp> References: [doc-jp 6824]
This commit is contained in:
parent
50ff384ea2
commit
bf2f7282fc
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=6027
1 changed files with 139 additions and 3 deletions
|
@ -2,8 +2,8 @@
|
|||
The FreeBSD Documentation Project
|
||||
The FreeBSD Japanese Documentation Project
|
||||
|
||||
Original revision: 1.26
|
||||
$FreeBSD: doc/ja_JP.eucJP/books/handbook/hw/chapter.sgml,v 1.5 1999/09/11 03:14:25 kuriyama Exp $
|
||||
Original revision: 1.27
|
||||
$FreeBSD: doc/ja_JP.eucJP/books/handbook/hw/chapter.sgml,v 1.6 1999/09/11 11:04:03 kuriyama Exp $
|
||||
-->
|
||||
|
||||
<chapter id="hw">
|
||||
|
@ -2889,7 +2889,7 @@ device sio4 at isa? port 0x100 tty flags 0xb05 device
|
|||
<sect4>
|
||||
<title>Boca 16</title>
|
||||
|
||||
<para><emphasis>´ó£ &a.whiteside;.<!-- <br> -->
|
||||
<para><emphasis>寄稿: &a.whiteside;.<!-- <br> -->
|
||||
1995年8月26日</emphasis></para>
|
||||
|
||||
<para>FreeBSD で Boca 16pord
|
||||
|
@ -3082,6 +3082,142 @@ sio16: type 16550A (multiport master)</screen>
|
|||
</step>
|
||||
</procedure>
|
||||
</sect4>
|
||||
|
||||
<sect4>
|
||||
<title>安価な Multi-UART カードのサポート</title>
|
||||
|
||||
<para><emphasis>寄稿: Helge Oldach
|
||||
<email>hmo@sep.hamburg.com</email>, September
|
||||
1999</emphasis></para>
|
||||
|
||||
<para>二つ(またはもっと多くの) COM ポートを備えた
|
||||
20$ のマルチ I/O カードでの IRQ 共有が,
|
||||
FreeBSD でサポートされているか心配ですって?
|
||||
次のようにすれば使うことができます.</para>
|
||||
|
||||
<para>通常, この種のボードをサポートする場合には,
|
||||
各ポートに対して個別に IRQ を割り当てて利用します.
|
||||
例えば, マザーボード上に <devicename>COM1</devicename> ポート
|
||||
(<devicename>sio0</devicename>–I/O アドレス 0x3F8, IRQ 4)
|
||||
があり, 二つの UART ポートがついている拡張カードがあるとしましょう.
|
||||
その場合, この二つのポートには, 二番目のポートを
|
||||
<devicename>COM2</devicename>(<devicename>sio1</devicename>–I/O
|
||||
アドレス 0x2F8, IRQ 3) に, 三番目のポート(<devicename>sio2</devicename>)を
|
||||
I/O アドレス 0x3E8, IRQ 5 に設定する必要があります.
|
||||
しかしすぐわかるとおり, この方法では IRQ 資源を無駄に浪費します.
|
||||
基本的に前セクションに記されている <literal>COM_MULTIPORT</literal>
|
||||
の設定に従えば, 拡張カード上の二つのポートで一つの IRQ を使用するように
|
||||
セットアップすることができます.</para>
|
||||
|
||||
<para>そのような安価な I/O ボードには大抵,
|
||||
次に示すような, COM ポートを選択する 4x3
|
||||
のジャンパマトリクスがついています.</para>
|
||||
|
||||
<programlisting> o o o *
|
||||
Port A |
|
||||
o * o *
|
||||
Port B |
|
||||
o * o o
|
||||
IRQ 2 3 4 5</programlisting>
|
||||
|
||||
<para>これは, Port A が IRQ 5 に, Port B が IRQ 3
|
||||
に結線されていることを示しています.
|
||||
IRQ の並びはボードにより異なるでしょう—例えば, 他のボードは
|
||||
IRQ として 3,4,5,7 が選択できるようになっているかも知れません.</para>
|
||||
|
||||
<para>「ああ, IRQ を共有するには IRQ 3 の列にある 3
|
||||
つの接続点をつなぐようなジャンパ線を手作りして,
|
||||
両方のポートが IRQ 3 になるように結線すれば良いのか」と
|
||||
考えるかも知れませんが, それは正しくありません.
|
||||
UART の出力段は “トーテムポール” 接続(*)されているので,
|
||||
IRQ 3 に複数接続することはできないのです.
|
||||
そのため, もし UART のどれか一つが IRQ 3 を発行したとしても,
|
||||
それが期待するような動作になりません.
|
||||
拡張ボードやマザーボードの実装に依存することですが,
|
||||
IRQ 3 信号線は常時 H レベルか, L レベルを保っています.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para><emphasis>訳注:</emphasis>
|
||||
“トーテムポール” とは, ディジタル論理回路を構成する
|
||||
TTL ロジック IC の内部構造の一種です. トーテムポール型出力の場合には
|
||||
出力同士を接続すると短絡電流が流れてしまうため,
|
||||
CPU やメモリで使われている, いわゆるバス接続が使えないという特徴を持っています.
|
||||
IRQ 信号線が常時 H か L レベルに保たれる, というのは,
|
||||
割り込み信号線が正論理/負論理のどちらになっているかが実装に依存することによります.
|
||||
以降の解説は, 正論理を仮定して書かれていますのご注意下さい.</para>
|
||||
</note>
|
||||
|
||||
<para>したがって, 二つの UART の IRQ 出力を分離する必要があります.
|
||||
そのためには, どちらかの UART が IRQ を発行した時にだけ,
|
||||
ボード上の IRQ 信号線が H レベルになり,
|
||||
そうでない時には L レベルになるようにします.
|
||||
以下の解決法は, Jrg Wunsch
|
||||
<email>j@ida.interface-business.de</email>
|
||||
から提案されたものです:
|
||||
二つのダイオード(ゲルマニウム, あるいはショットキー型を強く推奨)と
|
||||
1 キロオームの抵抗器一本で, ワイヤード OR を構成します.
|
||||
以下に示すのは, 上に示した 4x3 ジャンパの回路図です.</para>
|
||||
|
||||
<programlisting> Diode
|
||||
+---------->|-------+
|
||||
/ |
|
||||
o * o o | 1 kOhm
|
||||
Port A +----|######|-------+
|
||||
o * o o | |
|
||||
Port B `-------------------+ ==+==
|
||||
o * o o | Ground
|
||||
\ |
|
||||
+--------->|-------+
|
||||
IRQ 2 3 4 5 Diode</programlisting>
|
||||
|
||||
<para>各ダイオードのカソード側は接地点に,
|
||||
1 キロオームのプルダウン抵抗器と直列にして接続します.
|
||||
プルダウン抵抗を接続することはとても重要です.
|
||||
これはバス上の IRQ 信号線がフロート状態になるのを防ぎます.</para>
|
||||
|
||||
<para>さあ, これでカーネルの設定を変更する準備ができました.
|
||||
上に示すような例の場合, 次のような設定になります.</para>
|
||||
|
||||
<programlisting># standard on-board COM1 port
|
||||
device sio0 at isa? port "IO_COM1" tty flags 0x10
|
||||
# patched-up multi-I/O extension board
|
||||
options COM_MULTIPORT
|
||||
device sio1 at isa? port "IO_COM2" tty flags 0x205
|
||||
device sio2 at isa? port "IO_COM3" tty flags 0x205 irq 3</programlisting>
|
||||
|
||||
<para><devicename>sio1</devicename> と
|
||||
<devicename>sio2</devicename> の <literal>flags</literal>
|
||||
設定は非常に重要です. 詳細は &man.sio.4; をご覧ください.
|
||||
(一般的には, "flags" 属性の <literal>2</literal> は,
|
||||
<devicename>sio</devicename>2 の IRQ
|
||||
を使用するということを示します.
|
||||
下位ニブル(訳注: 16 進数一桁のこと) は間違いなく
|
||||
<literal>5</literal> とするでしょう.)
|
||||
カーネルの verbose モードが ON になっていると,
|
||||
こんな風な出力が得られます.</para>
|
||||
|
||||
<screen>sio0: irq maps: 0x1 0x11 0x1 0x1
|
||||
sio0 at 0x3f8-0x3ff irq 4 flags 0x10 on isa
|
||||
sio0: type 16550A
|
||||
sio1: irq maps: 0x1 0x9 0x1 0x1
|
||||
sio1 at 0x2f8-0x2ff flags 0x205 on isa
|
||||
sio1: type 16550A (multiport)
|
||||
sio2: irq maps: 0x1 0x9 0x1 0x1
|
||||
sio2 at 0x3e8-0x3ef irq 3 flags 0x205 on isa
|
||||
sio2: type 16550A (multiport master)</screen>
|
||||
|
||||
<para><filename>/sys/i386/isa/sio.c</filename> は
|
||||
“irq maps” 配列を使っているために
|
||||
表示が少々難解なのですが, 基本的なアイデアは
|
||||
1,3,4 番目の場所に <literal>0x1</literal>
|
||||
があるかどうか調べる, というものです.
|
||||
これはつまり, 対応する IRQ が出力された時にセットされ,
|
||||
その後クリアされるという, ちょうど期待する動作が
|
||||
行なわれることを意味します.
|
||||
もし, カーネルがこのような表示を出力しない場合,
|
||||
大部分は結線の誤りによるものでしょう.</para>
|
||||
</sect4>
|
||||
</sect3>
|
||||
|
||||
<sect3 id="cy">
|
||||
|
|
Loading…
Reference in a new issue