如何在 Linux 中連接到串行控制臺(tái)
串行端口連接允許用戶在沒(méi)有顯示器的情況下控制系統(tǒng)。下面介紹如何在 Linux 中訪問(wèn)和使用串行控制臺(tái)。
處理嵌入式 Linux 項(xiàng)目時(shí)必不可少的元素之一是通過(guò)串行控制臺(tái)接口訪問(wèn)您的設(shè)備。為此,您正在開(kāi)發(fā)嵌入式系統(tǒng)的計(jì)算機(jī)必須具有串行端口。然而,今天很少有電腦有串口,這就是我們使用 USB 轉(zhuǎn)串口轉(zhuǎn)換器的原因。
最后,您將詳細(xì)了解什么是串行控制臺(tái)以及它們?nèi)绾卧?Linux 上工作。
設(shè)置 USB 到串行轉(zhuǎn)換器
幾乎所有你能在市場(chǎng)上找到的 USB 串行轉(zhuǎn)換器都能被 Linux 自動(dòng)識(shí)別。將任何 USB 轉(zhuǎn)換器插入您的計(jì)算機(jī)并使用 dmesg 命令找出設(shè)備的文件名。
dmesg
在上面的示例中,您可以在制造商(manufacturer)部分看到 VirtualBox,因?yàn)橹鳈C(jī)是在 VirtualBox 上運(yùn)行的 Linux 發(fā)行版。在這里,制造商名稱將根據(jù)您使用的轉(zhuǎn)換器而改變。您還可以看到您正在使用的串行轉(zhuǎn)換器以名稱連接到系統(tǒng),例如ttyUSB0。
您可以通過(guò)設(shè)備文件/dev/ttyUSB0使用系統(tǒng)識(shí)別的串行轉(zhuǎn)換器。根據(jù)您使用的發(fā)行版,設(shè)備文件會(huì)自動(dòng)在/dev目錄下創(chuàng)建,顯示主要、次要和設(shè)備類型。對(duì)于 USB 串行轉(zhuǎn)換器,每個(gè)同聲傳譯的命名方案通常是ttyUSB0、ttyUSB1和ttyUSBX 。
如果您在應(yīng)用程序正在使用 USB 串行轉(zhuǎn)換器時(shí)移除并重新插入它,系統(tǒng)會(huì)向設(shè)備發(fā)出一個(gè)新編號(hào)。
串行設(shè)備的訪問(wèn)授權(quán)
掛載的USB轉(zhuǎn)換器設(shè)備文件的默認(rèn)訪問(wèn)權(quán)限通常如下:
ls -l /dev/ttyUSB0
# 輸出crw-rw---- 1 root dialout 188, 46 Jul 17 15:34 /dev/ttyUSB0
在檢查上述輸出時(shí),您可以知道:
- 行首的字母c表示這是一個(gè)基于字符的設(shè)備
- 文件所有者是root用戶,該用戶有讀寫權(quán)限
- 文件的組所有者是dialout組,該組中的用戶也有讀寫權(quán)限
- 其余用戶對(duì)該文件沒(méi)有任何讀寫權(quán)限
如果您當(dāng)前以非dialout組成員的普通用戶身份登錄,則無(wú)法讀取和寫入 USB 串行轉(zhuǎn)換器。要解決此問(wèn)題,您必須使當(dāng)前用戶成為dialout組的成員或編輯系統(tǒng)上的udev規(guī)則文件。
為方便起見(jiàn),您可以使用第一種技術(shù)。首先,使用id命令確定您的用戶屬于哪些組:
id
使用adduser或usermod命令將您的用戶添加到組中:
# 針對(duì) Fedora
sudo usermod -aG dialout USERNAME
# 針對(duì) Debian
sudo adduser USERNAME dialout
# 針對(duì) Arch
sudo usermod -a -G uucp USERNAME
組成員身份程序現(xiàn)已完成。但是,系統(tǒng)會(huì)在圖形會(huì)話的第一個(gè)登錄步驟中檢查組成員信息,然后將其提供給所有正在運(yùn)行的進(jìn)程。
因此,您必須退出當(dāng)前圖形會(huì)話,然后重新登錄或重新啟動(dòng)計(jì)算機(jī)使修改生效。完成此操作后,您將擁有對(duì)串行轉(zhuǎn)換器設(shè)備的讀/寫訪問(wèn)權(quán)限。
如何在 Linux 上連接到串行控制臺(tái)
當(dāng)您需要訪問(wèn)計(jì)算機(jī)或網(wǎng)絡(luò)控制臺(tái)時(shí),您可以參考串行控制臺(tái)應(yīng)用程序。通常,您需要通過(guò) SSH 訪問(wèn)才能這樣做。但是,從軟件和硬件的角度來(lái)看,在某些情況下,也可以僅使用串行端口訪問(wèn)控制臺(tái)。
您會(huì)在較舊的計(jì)算機(jī)上最常找到這些類型的示例。以下是一些最適合您的串行控制臺(tái)應(yīng)用程序。
使用 Minicom
您可以在您的系統(tǒng)上安裝 Minicom,這是一個(gè)舊的但仍在工作的應(yīng)用程序,如下所示:
# 在 Fedora, CentOS 和 RHEL 上
sudo yum install minicom
# 在 Debian 和 Ubuntu
sudo apt-get install minicom
# 在 Arch Linux 上
sudo snap install minicom
當(dāng)您第一次啟動(dòng)應(yīng)用程序時(shí),它會(huì)默認(rèn)嘗試打開(kāi)一個(gè)設(shè)備文件,例如/dev/modem。它在找不到文件時(shí)終止。要克服這個(gè)問(wèn)題,您可以使用-s參數(shù)直接啟動(dòng)應(yīng)用程序的設(shè)置屏幕:
minicom -s
A鍵設(shè)置設(shè)備名稱,E鍵設(shè)置串口速度。然后當(dāng)你用Exit 退出時(shí),就可以使用對(duì)應(yīng)的串口了。
在應(yīng)用程序主屏幕上,您可以使用Ctrl + A + O 返回配置屏幕,使用Ctrl + A + X退出應(yīng)用程序,使用Ctrl + A + W激活換行模式,并使用其他快捷鍵獲取幫助Ctrl + A + Z。
使用 GTKTerm
Minicom 通常由高級(jí) Linux 用戶使用,因此不建議初學(xué)者使用。Linux 新手可以安裝 GTKTerm,一個(gè)用于 Linux 的圖形串行終端仿真器。您可以使用以下命令在系統(tǒng)上安裝應(yīng)用程序:
# 在 Fedora, CentOS 和 RHEL 上
sudo dnf -y install gtkterm
# 在 Debian 和 Ubuntu 上
sudo apt-get install gtkterm
# 在 Arch Linux 上
yay -S gtkterm
啟動(dòng)應(yīng)用程序時(shí),您必須通過(guò)配置 > 端口菜單設(shè)置設(shè)備名稱和速度參數(shù),如下所示:
將設(shè)置保存為默認(rèn)值,方便以后使用。
使用 screen
如果你熟悉多終端管理的 screen,你就會(huì)知道你也可以用它來(lái)做串口訪問(wèn)。以下是安裝它的命令:
# 在 Fedora, CentOS 和 RHEL 上
sudo dnf -y install screen
# 在 Debian, Ubuntu 和 Linux Mint 上
sudo apt-get -y install screen
# 其他發(fā)行版使用 Snap 安裝
sudo snap install screen --classic
安裝后,您可以運(yùn)行如下命令連接到串行控制臺(tái):
screen /dev/ttyUSB0 115500
現(xiàn)在您可以在 Linux 上建立串行端口連接
能夠使用串行端口訪問(wèn)您的 Linux 系統(tǒng)是一個(gè)非常有用的功能,尤其是當(dāng)您不想將監(jiān)視器連接到 SBC(會(huì)話邊界控制器)時(shí)。
由于串行控制臺(tái)授權(quán)在編譯時(shí)已內(nèi)置在 Linux 內(nèi)核中,因此您至少應(yīng)該對(duì) Linux 內(nèi)核及其工作有基本的了解。