处理嵌入式 Linux 项目时必不可少的元素之一是通过串行控制台接口访问您的设备。 为此,您正在开发嵌入式系统的计算机必须具有串行端口。 然而,今天很少有电脑有串口,这就是我们使用 USB 转串口转换器的原因。
最后,您将详细了解什么是串行控制台以及它们如何在 Linux 上工作。
设置 USB 到串行转换器
几乎所有你能在市场上找到的 USB 串行转换器都能被 Linux 自动识别。 将任何 USB 转换器插入您的计算机并使用 dmesg 命令来找出设备的文件名。
dmesg
在上面的例子中,你看到 VirtualBox 在制造商部分,因为主机是运行在 VirtualBox. 在这里,制造商名称将根据您使用的转换器而变化。 您还可以看到您正在使用的串口转换器以名称附加到系统,例如 ttyUSB0.
您可以通过设备文件使用系统识别的串口转换器 /dev/ttyUSB0. 根据您使用的发行版,设备文件会自动创建在 /dev 目录,显示主要、次要和设备类型。 对于 USB 串口转换器,命名方案通常是 ttyUSB0, ttyUSB1, 和 ttyUSBX 每个同声传译。
如果您在应用程序正在使用 USB 串行转换器时移除并重新插入它,系统会向设备发出一个新编号。
串行设备的访问授权
挂载的USB转换器设备文件的默认访问权限通常如下:
ls -l /dev/ttyUSB0
# Output
crw-rw---- 1 root dialout 188, 46 Jul 17 15:34 /dev/ttyUSB0
在检查上述输出时,您可以知道:
- 信 C 行首表示这是一个基于字符的设备
- 文件所有者是root用户,该用户有读写权限
- 该文件的组所有者是 拨出 组和该组中包含的用户也具有读写权限
- 其余用户对该文件没有任何读写权限
如果您当前以非拨出组成员的普通用户身份登录,则无法读取和写入 USB 串行转换器。 要解决此问题,您必须使当前用户成为拨出组的成员或编辑 udev 系统上的规则文件。
为方便起见,您可以使用第一种技术。 首先,使用 ID 命令来确定您的用户属于哪些组:
id
使用 添加用户 或者 用户模式 命令:
# For Fedora
sudo usermod -aG dialout USERNAME
# For Debian
sudo adduser USERNAME dialout
# For Arch
sudo usermod -a -G uucp USERNAME
组成员身份程序现已完成。 但是,系统会在图形会话的第一个登录步骤中检查组成员信息,然后将其提供给所有正在运行的进程。
因此,您必须退出当前图形会话,然后重新登录或重新启动计算机以使修改生效。 完成此操作后,您将拥有对串行转换器设备的读/写访问权限。
如何在 Linux 上连接到串行控制台
当您需要访问计算机或网络控制台时,可以参考串行控制台应用程序。 通常,您需要通过 SSH 访问才能这样做。 但是,从软件和硬件的角度来看,在某些情况下,也可以仅使用串行端口访问控制台。
您会在较旧的计算机上最常找到这些类型的示例。 以下是一些最适合您的串行控制台应用程序。
使用 Minicom
您可以在您的系统上安装 Minicom,这是一个旧的但仍在工作的应用程序,如下所示:
# On Fedora, CentOS, and RHEL
sudo yum install minicom
# On Debian and Ubuntu
sudo apt-get install minicom
# On Arch Linux
sudo snap install minicom
当您第一次启动应用程序时,它会尝试打开一个设备文件,例如 /dev/调制解调器 默认。 它在找不到文件时终止。 要克服这个问题,您可以直接启动应用程序的设置屏幕 -s 范围:
minicom -s
您可以通过按 一个 键,并通过按串行端口速度 乙 钥匙。 然后当你退出时 Exit,就可以使用对应的串口了。
在应用程序主屏幕上,您可以返回配置屏幕 Ctrl + A + O退出应用程序 Ctrl + A + X,激活换行模式 Ctrl + A + W,并获得其他快捷方式的帮助 Ctrl + A + Z.
使用 GTKTerm
Minicom 通常由高级 Linux 用户使用,因此不建议初学者使用。 Linux 新手可以安装 GTKTerm,一个用于 Linux 的图形串行终端仿真器。 您可以使用以下命令在系统上安装应用程序:
# On Fedora, CentOS, and RHEL
sudo dnf -y install gtkterm
# On Debian and Ubuntu
sudo apt-get install gtkterm
# On Arch Linux
yay -S gtkterm
启动应用程序时,您必须通过设置设备名称和速度参数 配置 > 端口 菜单如下:
Save 默认设置,方便以后使用。
使用屏幕
如果你熟悉多终端管理的screen,你就会知道你也可以用它来做串口访问。 以下是安装它的命令:
# On Fedora, CentOS, and RHEL
sudo dnf -y install screen
# On Debian, Ubuntu, and Linux Mint
sudo apt-get -y install screen
# Use Snap for other distributions
sudo snap install screen --classic
安装后,您可以运行如下命令连接到串行控制台:
screen /dev/ttyUSB0 115500
现在您可以在 Linux 上建立串行端口连接
能够使用串行端口访问您的 Linux 系统是一个非常有用的功能,尤其是当您不想将监视器连接到 SBC(会话边界控制器)时。
由于串行控制台授权在编译时已内置在 Linux 内核中,因此您至少应该对 Linux 内核及其工作有基本的了解。