1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535
|
.\" Copyright 1992, 1993 Rickard E. Faith (faith@cs.unc.edu)
.\" May be distributed under the GNU General Public License
.\" Portions of this text are from the README in setserial-2.01.tar.z,
.\" but I can't figure out who wrote that document. If anyone knows,
.\" please tell me
.\"
.\" [tytso:19940519.2239EDT] I did... - Ted Ts'o (tytso@mit.edu)
.\" Sat Aug 27 17:08:38 1994 Changes from Kai Petzke
.\" (wpp@marie.physik.tu-berlin.de) were applied by Rik Faith
.\" (faith@cs.unc.edu)
.\" "
.\" Translated Feb 14 1997 by FUKUBA Koso <koso@ga2.so-net.or.jp>
.\" Modified 8 Aug 1998 by Fujiwara Teruyoshi <fujiwara@linux.or.jp>
.\" Modified Sat 14 Apr 2001 by Kentaro Shirakata <argrath@ub32.org>
.\"
.\" WORD: callout 発信
.\" WORD: dialin 着信
.TH SETSERIAL 8 "January 2000" "Setserial 2.17
.SH 名前
setserial \- Linux シリアルポート情報の設定と取得
.SH 書式
.B setserial
.B "[ \-abqvVWz ]"
device
.BR "[ " parameter1 " [ " arg " ] ] ..."
.B "setserial -g"
.B "[ \-abGv ]"
device1 ...
.SH 説明
.B setserial
は、シリアルポートに関する設定情報を設定または
表示するプログラムです。この情報には、指定されたシリアルポートが
使用している I/O ポートアドレス や IRQ の情報、およびブレークキーを
受信接続通知キー(Secure Attention Key)として使用するかどうかなどの情報
が含まれます。
通常のブート処理中には、COM ポートの 1 〜 4 だけが、以下に示す
デフォルトの I/O ポートアドレスと IRQ の値を使って初期化されます。
.B setserial
は、追加されたシリアルポートを初期化したり、1 〜 4 の COM ポートを
標準でない設定にするために使用されます。
.B setserial
は通常、
.I /etc/rc.local
から起動される
.I rc.serial
スクリプトに登録しておきます。
引数
.I device
には、設定したり表示したいシリアルポートのデバイスファイルを
指定します。通常、以下のような形式で指定します:
.BR /dev/cua[0-3]
パラメータが全く指定されなかった場合、
.B setserial
は、ポートの種類 (例えば、8250, 16450, 16550, 16550A など)、
ハードウェアの I/O ポートアドレス、IRQ 番号、ボーレート、
操作可能なフラグのいくつかの内容を表示します。
.B \-g
オプションが指定されると、setserial への引数は全て、表示対象となるデバイス
として解釈され、複数のデバイスの設定内容を表示させることができます。
.B \-g
オプションを指定しないと、setserial への最初の引数が、設定したり表示
したりするデバイスとして解釈されます。また、その他の引数は、
シリアルデバイスに与えるパラメータとして解釈されます。
ほとんどの場合、シリアルポートのパラメータの設定にはスーパーユーザーの
特権が必要です。しかし、少しだけ一般ユーザが設定できるパラメータがあります。
それらはこの man ページ中で説明します。
.SH オプション
.B setserial
には、以下のオプションを指定することができます:
.TP
.B \-a
シリアルデバイスの設定内容を表示するとき、すべての情報を表示します。
.TP
.B \-b
シリアルデバイスの設定内容を表示するとき、
ブート時に /etc/rc スクリプトで使用する時に適した形で
デバイス情報のサマリを表示します。
.TP
.B \-G
シリアルポートの設定情報を、setserial のコマンドラインオプションの形で
表示します。
.TP
.B \-q
.B setserial
の出力を抑制します。
.TP
.B \-v
詳細モード。
いくつかのステータスが追加出力されます。
.TP
.B \-V
.B setserial
のバージョンを出力して終了します。
.TP
.B \-W
割り込みの初期化を荒っぽく行い、終了します。
このオプションはバージョン 2.1 以降の Linux カーネルに対しては無効です。
.TP
.B \-z
シリアルフラグをセットする前に全てのフラグをゼロクリアします。
これは \-G オプションを使ったシリアルフラグの自動保存と関係があります。
.SH パラメータ
シリアルポートに対して、以下のパラメータを設定することができます。
すべての値は、先頭に "0x" があれば 16 進数とみなされます。
.TP
.BR port " port_number"
.B port
パラメータは、先に述べたように I/O ポート番号の設定を行ないます。
.TP
.BR irq " irq_number"
.B irq
パラメータは、先に述べたようにハードウェアの IRQ の設定を行ないます。
.TP
.BR uart " uart_type"
このオプションは、シリアルポートの UART の種類を設定するために使用されます。
指定できるタイプは、
.BR none ,
8250, 16450, 16550, 16550A, 16650, 16650V2,
16654, 16750, 16850, 16950, 16954 です。
UART タイプ
.B none
は、ポートを使用できないようにします。
内蔵モデムの中には、「1k のバッファを持った 16550A」を備えていると
書かれたものがあります。これは嘘です。実際には 16550A 互換の
UART ではなく、(受信時のオーバーランを防ぐために)
1k の受信バッファのついた 16450 互換 UART が付いているのです。
これらには 送信 FIFO がないので、この違いは重要です。
そういう訳で、これらは 16550A UART と互換性がなく、
自動設定処理では 16450 として認識します。もし
.B uart
オプションを使ってこれを変更してしまうと、ファイル送信中にデータを
取りこぼすことになるでしょう。
これらの UART は普通他の問題も抱えています。
大抵の場合
.B skip_test
オプションも指定しなくてはいけません。
.TP
.B autoconfig
このパラメータが設定されると、
.B setserial
はカーネルにシリアルポートを自動的に設定するよう要求します。
I/O ポートは、正しく設定しなければいけません。
その後カーネルは UART の種類を決定し、
.B auto_irq
オプションが設定されていれば、IRQ を自動的に設定しようとします。
.B autoconfig
オプションは、
.BR port 、
.BR auto_irq 、
.B skip_test
オプションの後に指定すべきです。
.TP
.B auto_irq
自動設定を行なう際、IRQ を自動決定しようとします。
この機能は、いつも正しい結果をもたらすとは限りません。
ハードウェアの設定によっては、Linux のカーネルはだまされてしまいます。
一般に
.B auto_irq
の機能を使うよりも、
.B irq
パラメータを使って、使用される IRQ を明示的に指定した方が信頼性があります。
.TP
.B ^auto_irq
自動設定の際、IRQ の自動決定を行ないません。
.TP
.B skip_test
自動設定の際、UART のテストをスキップします。
内蔵モデムの中には、National Semiconductor 互換の UART を持っておらず、
代わりに安い偽物を持っているものがあります。これらの偽物 UART では、
カーネルが設定する前に指定されたアドレスに本当に
UART があることを確認するために使用する、ループバック検出モードを
完全にはサポートしていません。
このような内蔵モデムでは、
このオプションを指定して
Linux が正しく UART を初期化できるようにしなければなりません。
.TP
.B ^skip_test
自動設定の際、UART のテストをスキップしません。
.TP
.BR baud_base " baud_base"
基本となるボーレートを設定します。
ボーレートは、クロック周波数を 16 で割った値です。
通常この値は 115,200 に設定されています。これは
UART がサポートできる最も速いボーレートです。
.TP
.B
spd_hi
アプリケーションが 38.4 Kbps を要求した場合に、57.6 Kbps を使用します。
このオプションは一般ユーザーでも指定できます。
.TP
.B spd_vhi
アプリケーションが 38.4 Kbps を要求した場合に、115 Kbps を使用します。
このオプションは一般ユーザーでも指定できます。
.TP
.B spd_shi
アプリケーションが 38.4 Kbps を要求した場合に、230 Kbps を使用します。
このオプションは一般ユーザーでも指定できます。
.TP
.B spd_warp
アプリケーションが 38.4 Kbps を要求した場合に、460 Kbps を使用します。
このオプションは一般ユーザーでも指定できます。
.TP
.B spd_cust
アプリケーションが 38.4 Kbps を要求した場合に、スピードを設定するため
に特別な除数を使用します。この場合のボーレートは、
.B baud_base
を
.B 除数
で割った値になります。
このオプションは一般ユーザーでも指定できます。
.TP
.B spd_normal
アプリケーションが 38.4 Kbps を要求した場合に、38.4 Kbps を使用します。
このオプションは一般ユーザーでも指定できます。
.TP
.BR divisor " divisor"
除数を設定します。この除数は、
.B spd_cust
オプションが指定されていて、アプリケーションがシリアルポートに 38.4 Kbps を
設定した場合に使用されます。
このオプションは一般ユーザーでも指定できます。
.TP
.B sak
ブレークキーを受信接続通知キー(Secure Attention Key)に指定します。
.TP
.B ^sak
受信接続通知キー(Secure Attention Key)を無効にします。
.TP
.B fourport
ポートを AST Fourport カードとして設定します。
.TP
.B ^fourport
AST Forport の設定を行ないません。
.TP
.BR close_delay " delay"
発信デバイスがクローズされたあと、ブロックされた着信デバイスの DTR が
再び立ち上がるまでの間、シリアルライン上の DTR を LOW に維持しておく
時間を指定します。この値の単位は、10ms です。
デフォルトでは、この値は 50、 すなわち 500 ms (0.5 秒)です。
.TP
.BR closing_wait " delay"
シリアルポートを閉じようとするとき、
ポートへデータを送信するためにカーネルが待つ時間を指定します。
この値の単位は 10ms です。
"none" が指定されると、待ち時間は発生しません。
"infinite" が指定されると、バッファリングされたデータが送信し終わるまで
無限に待ち続けます。
デフォルト設定は 3000 (30 秒待つ) です。
通常これは、ほとんどのデバイスに対して適切な値です。
もし長過ぎる待ち時間を設定すると、
未接続のシリアルポートに送信待ちのデータがある状態でクローズされた場合に
シリアルポートが長い間ハングアップしてしまうかもしれません。
もし短すぎる待ち時間を設定すると、
送信するべきデータを送信しきれない可能性があります。
もしデバイスがプロッタプリンタのように極めて低速な場合は、
closing_wait の値を大きくする必要があるかもしれません。
.TP
.B session_lockout
複数のセッションで同一の発信ポート(/dev/cuaXX)を使用できないようにします。
つまり、あるプロセスが一旦ポートをオープンすると、そのプロセスが
ポートをクローズするまで、別のセッション ID を持つプロセスは、
そのポートをオープンできなくなります。
.TP
.B ^session_lockout
複数のセッションで同一の発信ポート(/dev/cuaXX)を使用できるようにします。
.TP
.B pgrp_lockout
複数のプロセスグループで同一の発信ポート(/dev/cuaXX)を使用できないようにします。
つまり、あるプロセスが一旦ポートをオープンすると、
そのプロセスがポートをクローズするまで、
別のプロセスグループのプロセスはそのポートをオープンできなくなります。
.TP
.B ^pgrp_lockout
複数のプロセスグループで同一の発信ポート(/dev/cuaXX)を使用できるようにします。
.TP
.B hup_notify
別のプロセスによる発信ラインの使用が終了した(ポートをクローズしたか、
シリアルラインがハングアップした)ことを、着信ラインをオープンしようと
しているプロセスに EAGAIN を返すことで通知します。
このパラメータは、例えばシリアルポートの
着信ラインをブロックされている getty 向けに用います。
用いると、getty は再びそのポートをオープンしてブロックする前に、
モデムをリセットできるようになります
(そのモデムを発信デバイスとして使用したアプリケーションによって、
ポートの設定が変更されたかもしれませんから)。
.\"nakano 直してはみたものの、いまいちよくわからない...
.TP
.B ^hup_notify
発信デバイスがハングアップしたことを、着信回線をオープンしようと
しているプロセスに通知しません。
.TP
.B split_termios
発信デバイスによって使用される termios の設定と、
着信デバイスによって使用される termios の設定とを別々に扱います。
.TP
.B ^split_termios
発信ポートと着信ポートの両方で同じ termios 構造体を使用します。
これはデフォルトの設定です。
.TP
.B callout_nohup
指定されたシリアルポートが発信デバイスとしてオープンされた場合、
キャリア検出(CD)信号が落ちても tty をハングアップしません。
.TP
.B ^callout_nohup
シリアルポートが発信デバイスとしてオープンされているとき、
tty をハングアップする処理をスキップしません。
もちろん、ハングアップをさせるには
termios の HUPCL フラグが有効になっていなければなりません。
.TP
.B low_latency
シリアルデバイスの受信遅延を最小にします。ただし CPU の利用度は増加します
(通常はオーバーヘッドを最小限にするために、
受信キャラクタを扱う前に 5-10ms の遅延があります)。
これはデフォルトではオフですが、リアルタイム処理をするアプリケーションの中には
このオプションが有効なものがあるかもしれません。
.TP
.B ^low_latency
CPU がシリアルキャラクタを処理する効率を最適化します。
ただしキャラクタを処理する前に 5-10ms の遅延が発生します。
これがデフォルトです。
.SH シリアルポートの設定上の注意事項
注意して欲しいのですが、
setserial が行うのは、
指定されたシリアルポートの I/O ポートと IRQ とがどこそこで見つかるはずだ、
という情報を Linux カーネルに教えることだけなのです。
setserial は、実際のシリアルボードが指定された I/O ポートを使用するように、
ハードウェアを設定するわけではありません。
これを行なうには、ジャンパーの設定や、DIP スイッチの切替えによって
シリアルボードを物理的に設定する必要があります。
本章では、自分のシリアルポートをどのように設定したいかを決定する
手助けになるポインターを提供します。
標準的な "MS-DOS" のポート割り付けは、次のようになっています:
.nf
.RS
/dev/ttyS0 (COM1), port 0x3f8, irq 4
/dev/ttyS1 (COM2), port 0x2f8, irq 3
/dev/ttyS2 (COM3), port 0x3e8, irq 4
/dev/ttyS3 (COM4), port 0x2e8, irq 3
.RE
.fi
AT/ISA バスアーキテクチャーの設計上の制限のため、通常 IRQ は 2 つあるいは
それ以上のシリアルポートで共有することはできません。これを行なうと、
両方を同時に使おうとした時に一方あるいは両方のシリアルポートが不安定に
なるでしょう。この制約は単一の IRQ を複数のシリアルポートで共有できる
ように設計された特殊なマルチポートシリアルカードを使うことで克服する
ことができます。Linux でサポートされているマルチポートシリアルカードには、
AST Fourport, Accent Async board, Usenet Serial II board, Bocaboard
BB-1004, BB-1008, BB-2016 boards, HUB-6 serial board があります。
別の IRQ を用いるのも困難です (それらは大抵使用されていますから)。
以下の表は、標準的な "MS-DOS" で割り付けられている
使用可能な IRQ の一覧です:
.nf
.RS
IRQ 3: COM2
IRQ 4: COM1
IRQ 5: LPT2
IRQ 7: LPT1
.RE
.fi
コンピュータにパラレルポートが一つしかなければ、
IRQ 5 が良い選択であることにほとんどの人が気づくと思います。
その他の選択としては IRQ 2
(別名: IRQ 9) があります。ただしこの IRQ はネットワークカードで使われる
ことがあります。また非常に稀ですが、VGA カードが垂直同期信号割り込みのために
IRQ 2 を使うように設定されていることがあります。
自分の VGA カードがこのように設定されている場合は、
それを使用しないようにして見てください。
そうすれば、その IRQ を他のカードが使えるようになります。
Linux やその他のほとんどの OS では、
IRQ 2 を垂直同期信号割り込みのために使用する必要はありません。
他に使用できる IRQ が、3, 4, 7 だけですが、これらもおそらく
他のシリアルポートやパラレルポートで使用されているでしょう。
(もしお使いのシリアルカードに 16 bit カードエッジコネクタが付いていて、
より上位の割り込み番号をサポートしているなら、
IRQ 10, 11, 12, 15 も使用できるでしょう。)
AT 互換機では、IRQ 2 は IRQ 9 のように見えます。Linux でも、この流儀に
したがって解釈します。
2 (9), 3, 4, 5, 7, 10, 11, 12, 15 以外の IRQ は
他のハードウェアに割り付けられており、普通変更できないので、
使うべきではありません。
「標準的な」割り付けは、次のようになっています。
.nf
.RS
IRQ 0 Timer channel 0
IRQ 1 Keyboard
IRQ 2 Cascade for controller 2
IRQ 3 Serial port 2
IRQ 4 Serial port 1
IRQ 5 Parallel port 2 (Reserved in PS/2)
IRQ 6 Floppy diskette
IRQ 7 Parallel port 1
IRQ 8 Real-time clock
IRQ 9 Redirected to IRQ2
IRQ 10 Reserved
IRQ 11 Reserved
IRQ 12 Reserved (Auxillary device in PS/2)
IRQ 13 Math coprocessor
IRQ 14 Hard disk controller
IRQ 15 Reserved
.RE
.fi
.SH マルチポート設定
複数のポートで一つの IRQ を共有するようなタイプの
マルチポートシリアルボードには、
作業が必要な待ち状態のポートがあるかどうかを示すために、
ひとつまたは複数のポートを使うものがあります。
使っているマルチポートボードがこのようなポートをサポートしているなら、
これらのポートを使えば、
割り込みがロスト時でもシステムが固まらないようにできます。
これらのポートを設定するためには、
.B set_multiport
パラメータを指定し、その後ろにマルチポートパラメータを指定します。
マルチポートパラメータは、チェックするべき
.IR port 、
レジスタのどのビットが有効かを指定する
.IR mask 、
するべき作業がなくなった時にレジスタの有効ビットが
一致しなければならない値を指定する
.I match
からなります。
このような port/mask/match の組は 4 つまで指定できます。
一つ目の組は
.BR port1 ,
.BR mask1 ,
.B match1
で指定し、二つ目は
.BR port2 ,
.BR mask2 ,
.B match2
で指定します。以下同様です。
マルチポートのチェックを無効にするためには、
.B port1
に 0 を指定してください。
現在のマルチポート設定を見るためには、コマンドラインから
.B get_multiport
パラメータを指定してください。
以下にいくつかの一般的なシリアルボードのためのマルチポート設定を示します。
.nf
.RS
AST FourPort port1 0x1BF mask1 0xf match1 0xf
Boca BB-1004/8 port1 0x107 mask1 0xff match1 0
Boca BB-2016 port1 0x107 mask1 0xff match1 0
port2 0x147 mask2 0xff match2 0
.RE
.fi
.SH Hayes ESP 設定
.B setserial
は Hayes ESP シリアルボードのポートを設定することもできます。
.PP
ESP ポートを設定するには以下のパラメータを使います。
.TP
.B rx_trigger
受信 FIFO のトリガレベル (バイト単位) です。
大きい値を設定すると割り込み回数が減り、性能が向上します。
しかし、値を大きくしすぎるとデータを失うことになるかもしれません。
有効な値は 1 から 1023 です。
.TP
.B tx_trigger
送信 FIFO のトリガレベル (バイト単位) です。
大きい値を設定すると割り込み回数が減り、性能が向上します。
しかし、値を大きくしすぎると送信効率を落とすことになるかもしれません。
有効な値は 1 から 1023 です。
.TP
.B flow_off
ESP ポートが相手の送信側に対して「フローオフ」を伝える
(これ以上データを送信しないように伝える)レベル(バイト単位)です。
有効な値は 1 から 1023 です。
この値は受信トリガレベルとフローオンレベルより大きい値にするべきです。
.TP
.B flow_on
ESP ポートが相手の送信側に対してフローオフを伝えた後に、
「フローオン」を伝える
(これ以上データ送信を再開するように伝える)レベル(バイト単位)です。
有効な値は 1 から 1023 です。
この値はフローオフレベルより小さく、受信トリガレベルより大きい値にするべきです。
.TP
.B rx_timeout
最後のキャラクタを受信してから、割り込みを発生させるまでに
ESP ポートが待つ時間です。
有効な値は 0 から 255 です。
値が大きすぎると遅延が大きくなり、
値が小さすぎると不必要な割り込みが発生することになります。
.SH 警告
警告: シリアルポートが使用する I/O ポートの設定を間違えると、
マシンがハングアップしてしまうかもしれません。
.SH ファイル
.BR /etc/rc.local
.BR /etc/rc.serial
.SH "SEE ALSO"
.BR tty (4),
.BR ttys (4),
kernel/chr_drv/serial.c
.SH 著者
setserial のオリジナルバージョンは Rick Sladkey (jrs@world.std.com)
によって書かれ、 Michael K. Johnson (johnsonm@stolaf.edu) によって
変更されました。
このバージョンは、1993 年 1 月 1 日 に Theodore Ts'o (tytso@mit.edu)
によって最初から書き直されたものです。
バグおよび問題点は、彼のみの責任です。
|