jpman project specific RCS keyword (jpman %Id) is obsolete, after manual entries are stored in freefall CVS repository. This old Id is useless and more worse it confuses users and bug reporters. So, this old Id is removed. Submitted by:jpman project <man-jp@jp.FreeBSD.org>
258 lines
8.5 KiB
Groff
258 lines
8.5 KiB
Groff
.\" -*- nroff -*-
|
|
.\"
|
|
.\" Copyright (c) 1996 A.R.Gordon, andrew.gordon@net-tel.co.uk
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" %Id: lp.4,v 1.7 1998/10/22 14:12:55 bde Exp %
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.\" WORD: nibble ニブル
|
|
.\"
|
|
.Dd March 4, 1996
|
|
.Os
|
|
.Dt LP 4 i386
|
|
.Sh 名称
|
|
.Nm lp
|
|
.Nd プリンタポートインターネットプロトコルドライバ
|
|
.Sh 書式
|
|
.Nm ifconfig lp0
|
|
.Ar 自アドレス 相手アドレス
|
|
.Op Fl link0
|
|
.Cd "device lpt0 at isa? port? tty irq 7"
|
|
.Sh 解説
|
|
.Nm
|
|
ドライバによって、PC パラレルプリンタポートを、
|
|
同様に設定された 2 つのシステム間で、
|
|
point-to-point ネットワークインタフェースとして使うことができます。
|
|
データは一度に 4 ビットずつ転送し、
|
|
入力にはプリンタ状態信号を使用します。
|
|
よって、特別な双方向ハードウェアは必要とせず、
|
|
割り込みで動作する標準の AT 互換のプリンタポートを使うことができます。
|
|
.Pp
|
|
.Nm
|
|
ドライバは
|
|
.Nm lpt
|
|
ドライバを統合したものとして実装されており、
|
|
インターネットのサポートと少なくとも 1 つの
|
|
.Nm lpt
|
|
デバイスを設定したカーネルに自動的に組み込まれます。
|
|
ブートプロセス中に検出され割り込みが割り当てられた各
|
|
.Nm lpt
|
|
プリンタデバイスについて、
|
|
対応する
|
|
.Nm
|
|
ネットワークデバイスが生成されます。
|
|
使用可能なデバイスは
|
|
.Dl lp0: TCP/IP capable interface
|
|
のようなメッセージによってアナウンスされます。
|
|
.Pp
|
|
初期状態では
|
|
.Nm lpt
|
|
デバイスは印刷用にアクティブとなっており、
|
|
ネットワークインタフェースは非アクティブです。
|
|
しかし、一旦対応する
|
|
.Nm
|
|
デバイスが
|
|
.Xr ifconfig 8
|
|
によって 'up' に設定されると、
|
|
ネットワークインタフェースが 'down' に設定されるまで印刷は行えません。
|
|
.Pp
|
|
通信プロトコルは
|
|
.Cm link0
|
|
フラグによって選択されます。
|
|
.Bl -tag -width Fl
|
|
.It Fl link0
|
|
(デフォルト) FreeBSD モード (LPIP) を使用します。
|
|
もう一つのモードに比べシンプルなもので、やや効率が良いものです。
|
|
.It Cm link0
|
|
Cyrnwr/Linux 互換のモード (CLPIP) を使用します。
|
|
このモードはイーサネットパケットヘッダをシミュレートしており、
|
|
他のタイプの機器とのインタフェースが容易です。
|
|
.El
|
|
.Pp
|
|
インタフェース MTU のデフォルト値は 1500 となっていますが、
|
|
ほかの値に設定することが可能です。
|
|
リンクの両端では同じ値の MTU に設定されることが必要です。
|
|
.Ss ケーブルの接続
|
|
2 つのパラレルポートを接続するケーブルは、
|
|
次のように結線されていることが必要です。
|
|
.Bd -literal
|
|
ピン ピン 説明
|
|
2 15 Data0 -> ERROR*
|
|
3 13 Data1 -> SLCT
|
|
4 12 Data2 -> PE
|
|
5 10 Data3 -> ACK*
|
|
6 11 Data4 -> BUSY
|
|
15 2 ERROR* -> Data0
|
|
13 3 SLCT -> Data1
|
|
12 4 PE -> Data2
|
|
10 5 ACK* -> Data3
|
|
11 6 BUSY -> Data4
|
|
18-25 18-25 グランド
|
|
.Ed
|
|
.Pp
|
|
この結線のケーブルは 'Laplink' ケーブルとして広く入手可能であり、
|
|
よく黄色にカラーリングされています。
|
|
.Pp
|
|
接続は対称的であり、各方向で 5 本を使用します
|
|
(データに 4 本とハンドシェイク用に 1 本)。
|
|
2 つのモードは同じ結線のものを使いますが、
|
|
どの線をハンドシェイクに使用するかが異なっています。
|
|
.Ss FreeBSD LPIP モード
|
|
信号線は次のように使われます。
|
|
.Bl -tag -width dataxxxx(xxピン)
|
|
.It Em Data0 (ピン 2)
|
|
出力データのビット 0。
|
|
.It Em Data1 (ピン 3)
|
|
出力データのビット 1。
|
|
.It Em Data2 (ピン 4)
|
|
出力データのビット 2。
|
|
.It Em Data3 (ピン 5)
|
|
ハンドシェイク出力。
|
|
.It Em Data4 (ピン 6)
|
|
出力データのビット 3。
|
|
.It Em ERROR* (ピン 15)
|
|
入力データのビット 0。
|
|
.It Em SLCT (ピン 13)
|
|
入力データのビット 1。
|
|
.It Em PE (ピン 12)
|
|
入力データのビット 2。
|
|
.It Em BUSY (ピン 11)
|
|
入力データのビット 3。
|
|
.It Em ACK* (ピン 10)
|
|
ハンドシェイク入力。
|
|
.El
|
|
.Pp
|
|
アイドル時、すべてのデータ線は 0 になっています。
|
|
各バイトは次のように 4 段階で送信されます。
|
|
送信側が上位 4 ビットを書き込み、ハンドシェイクラインを上げます。
|
|
受信側はその 4 ビットを読み、
|
|
読み込んだことを知らせるためにハンドシェイクラインを上げます。
|
|
送信側は下位 4 ビットをデータ線にセットし、ハンドシェイクラインを下げます。
|
|
受信側はデータを読み、ハンドシェイクラインを下げます。
|
|
.Pp
|
|
パケットは固定値 0x08, 0x00 からなる 2 バイトのヘッダに
|
|
IP ヘッダとデータが続く形式となっています。
|
|
.Pp
|
|
パケットの開始は単にヘッダの最初のバイトを送信することで示されます。
|
|
パケットの終了はハンドシェイクラインの状態を変えずに、
|
|
データ線を反転する (すなわち直前に送信したニブルの 1 の補数を書く)
|
|
ことによって示されます。
|
|
.Pp
|
|
パケット終了のマークはハンドシェイク信号と出力データビットが
|
|
1 つの命令で書き込めることを前提にしていることに注意してください。
|
|
さもなければ、パケットデータ中のあるバイト値が
|
|
パケット終了として誤って解釈されることが起こりえます。
|
|
これは PC のプリンタポートでは問題とはなりませんが、
|
|
このプロトコルを他の機器に実装する場合に注意が必要となります。
|
|
|
|
.Ss Crynwr/Linux CLPIP モード
|
|
信号線は次のように使われます。
|
|
.Bl -tag -width dataxxxx(xxピン)
|
|
.It Em Data0 (ピン 2)
|
|
出力データのビット 0。
|
|
.It Em Data1 (ピン 3)
|
|
出力データのビット 1。
|
|
.It Em Data2 (ピン 4)
|
|
出力データのビット 2。
|
|
.It Em Data3 (ピン 5)
|
|
出力データのビット 3。
|
|
.It Em Data4 (ピン 6)
|
|
ハンドシェイク出力。
|
|
.It Em ERROR* (ピン 15)
|
|
入力データのビット 0。
|
|
.It Em SLCT (ピン 13)
|
|
入力データのビット 1。
|
|
.It Em PE (ピン 12)
|
|
入力データのビット 2。
|
|
.It Em ACK* (ピン 10)
|
|
入力データのビット 3。
|
|
.It Em BUSY (ピン 11)
|
|
ハンドシェイク入力。
|
|
.El
|
|
.Pp
|
|
アイドル時にはすべてのデータ線は 0 になっています。
|
|
各バイトは次のように 4 段階で送信されます。
|
|
送信側が下位 4 ビットを書き込み、ハンドシェイクラインを上げます。
|
|
受信側はその 4 ビットを読み、
|
|
読み込んだことを知らせるためにハンドシェイクラインを上げます。
|
|
送信側は上位 4 ビットをデータ線にセットし、ハンドシェイクラインを下げます。
|
|
受信側はデータを読み、ハンドシェイクラインを下げます。
|
|
[LPIP モードとはニブルの順番が逆になっていることに注意してください。]
|
|
.Pp
|
|
パケットの形式は次のようになります。
|
|
.Bd -literal
|
|
長さ (下位バイト)
|
|
長さ (上位バイト)
|
|
12 バイトの想定 MAC アドレス (FreeBSD では無視)
|
|
固定バイト 0x08
|
|
固定バイト 0x00
|
|
<IP データグラム>
|
|
チェックサムバイト
|
|
.Ed
|
|
.Pp
|
|
長さには、ヘッダの 14 バイトが含まれますが、
|
|
長さを示すバイト自身とチェックサムバイトは含まれません。
|
|
.Pp
|
|
チェックサムはすべてのバイト
|
|
(繰り返しますが、ヘッダ部分は含みますが、チェックサムと長さのバイトは除きます)
|
|
の単純な算術和です。
|
|
FreeBSD では送信時にはチェックサムを計算していますが、
|
|
受信したものについての確認は行っていません。
|
|
.Pp
|
|
ハンドシェイク入力に選択されている信号線は
|
|
割り込みを生成するためには使われていないので、
|
|
パケットの開始は特別な方法で信号化することが必要です。
|
|
送信側は、データ線に値 0x08 を書き、
|
|
受信側がデータ線に 0x01 を書くことにより応答するのを待ちます。
|
|
その後、送信側はパケットの最初のバイト (長さバイト) の送信を開始します。
|
|
.Pp
|
|
パケットの終了はパケット長から分かるため、
|
|
特別な方法での信号化はされません。
|
|
(データ線はアイドル状態である 0 に戻され、
|
|
次のパケットの開始とならないようにはされますが。)
|
|
.Sh 関連項目
|
|
.Xr lpt 4 ,
|
|
.Xr ifconfig 8
|
|
.Sh バグ
|
|
データの転送中のハンドシェイクにはビジーウェイトループが使われています。
|
|
(さらに、受信側システムでのパケット開始の割り込みに応答するための待ちに
|
|
おいても同様です。)
|
|
そのため、低速なシステムと通信を行っている高速なシステムでは
|
|
かなりの CPU 時間を消費してしまいます。
|
|
これは ハンドシェイクの信号の選択により CLPIP モードでは避けられないものです。
|
|
理論的には LPIP モードの場合では改善することができます。
|
|
.Pp
|
|
ポーリングのタイムアウトはタイマではなく
|
|
ループの回数によって制御されており、CPU の速度に依存しています。
|
|
これは実際にポートを読むために
|
|
(低速な) ISA のバスサイクルを実行する必要があるため、
|
|
いくぶん安定化されています。
|