當我的筆記型電腦沒有串列/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

附:這裡提到了當用戶有一個端口並且在 /dev 下他有 4 個端口但我沒有的情況。

答案1

您的主機板上很可能確實存在 ttyS0 連接埠。主機板上很可能也有一個連接器可以使用它!當我購買最後一塊板時,我也得出了這個結論(透過查看列出的連接埠),然後我在板的手冊中查找了所有連接器。沒有直接連接到外部,只有一個小「接頭」。所以我用一條電纜連接到 db9 外部連接器,一切正常!

以下三個 ( ttyS1-S3) 很可能不存在,但之所以列出是因為序列埠驅動程式測試了它們,這是許多 Linux 中的預設操作。請參閱 的手冊頁setserial,這是 Linux 啟動時呼叫的函數。它說:

在正常啟動過程中,僅使用預設 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) 和循環設備。查看維基百科ptys 的手冊頁。如果 pty 是字元設備,則可以使用循環設備進行區塊傳輸(例如,對於虛擬磁碟)。維基百科手冊頁文檔

答案2

這些連接埠實際上存在於您的主機板上。它們只是沒有像(某些)桌面中那樣連接到外部連接埠。

相關內容