私のラップトップにはシリアル/RS232/COM1 ポートがないのに、Linux に /dev/ttyS* があるのはなぜですか?

私のラップトップにはシリアル/RS232/COM1 ポートがないのに、Linux に /dev/ttyS* があるのはなぜですか?

私は Debian Wheezy を実行していますが、私のラップトップにはシリアル ポートがありません。なぜ があり/dev/ttyS*、それらに読み取り/書き込みを行おうとすると何が起こるのでしょうか?

私の設定:

└──> ll /dev/ttyS*
crw-rw---T 1 root dialout 4, 64 Apr 30 09:21 /dev/ttyS0
crw-rw---T 1 root dialout 4, 65 Apr 30 09:21 /dev/ttyS1
crw-rw---T 1 root dialout 4, 66 Apr 30 09:21 /dev/ttyS2
crw-rw---T 1 root dialout 4, 67 Apr 30 09:21 /dev/ttyS3

└──> sudo cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:unknown port:000002F8 irq:3
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3

└──> stty -g
6d02:5:4bf:8a3b:3:1c:7f:15:4:0:1:ff:11:13:1a:ff:12:f:17:16:ff:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

└──> dmesg | grep tty
[    0.000000] console [tty0] enabled
[    0.653544] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    0.712718] 00:02: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

追伸:ここユーザーが 1 つのポートを持っていて、/dev の下に 4 つのポートがあるが、私にはポートがない場合について言及されています。

答え1

ttyS0 ポートが実際にマザーボード上に存在している可能性は非常に高いです。また、マザーボード上にそれを使用するためのコネクタもある可能性も非常に高いです。前回のボードを購入したとき、私も同じ結論に達しました (ポートのリストを見て)。その後、ボードのマニュアルですべてのコネクタを調べました。外部への直接コネクタはなく、小さな「ヘッダー」があるだけでした。そこで、ケーブルを db9 外部コネクタに接続したところ、すべて正常に動作しました。

次の 3 つ ( ttyS1-S3) はおそらく存在しませんが、シリアル ポート ドライバーがテストしたためリストされています。これは多くの Linux のデフォルトの動作です。Linux のsetserial起動時に呼び出される関数である のマニュアル ページを参照してください。そこには次のように書かれています。

通常の起動プロセスでは、以下に示すように、デフォルトのI/OポートとIRQ値を使用して、COMポート1〜4のみが初期化されます。

編集: ちなみに、ttyS*ファイルとして動作するかどうかは簡単に確認できます。コンソール コマンドで何かを送信してみてください。

cat <some_short_file> > /dev/ttyS1

I/O errorドライバが接続されていないため、おそらく が返されます。 も同様にttyS0正常に動作します。>コマンドの は、コマンドの出力をcatシリアル ポートにリダイレクトします。cp shortfile /dev/ttyS0も動作します。

編集: ttyS1-S3 は物理的に存在しないため、使用できません。疑似端末 (pty) やループデバイスなど、仮想ポートとして使用できるデバイスは他にもあります。確認してください。ウィキペディアそしてそのpty のマニュアルページpty がキャラクター デバイスである場合、ブロック転送にはループ デバイスを使用できます (例: 仮想ディスクの場合)。ウィキペディアそしてマニュアルページのドキュメント

答え2

これらのポートは実際にはマザーボード上に存在します。ただし、一部のデスクトップのように外部ポートには接続されていません。

関連情報