
我正在運行 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
這些連接埠實際上存在於您的主機板上。它們只是沒有像(某些)桌面中那樣連接到外部連接埠。