如何在Linux下检查和使用串行端口

时间:2020-01-09 10:38:23  来源:igfitidea点击:

如何在Linux下检查和配置用于各种目的的串行端口,例如调制解调器,连接空调制解调器或连接终端?

Linux提供了各种工具和命令来访问串行端口。

Linux使用ttySx作为串行端口设备名称。
例如,COM1(DOS/Windows名称)是ttyS0,COM2是ttyS1,依此类推。
基于USB的串行端口可能使用诸如ttySUSB0之类的名称。
所有这些设备都位于/dev /目录下。

在Linux下显示检测到的系统的串行支持

简单运行dmesg命令:

$ dmesg | grep tty
[   37.531286] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[   37.531841] 00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[   37.532138] 0000:04:00.3: ttyS1 at I/O 0x1020 (irq = 18) is a 16550A

关于基于USB的串行端口的说明

USB到RS232适配器电缆从计算机的USB端口连接到设备。
这种串行到USB适配器连接到设备,以便在Linux下进行配置或编程。
输入USB适配器时,dmesg命令将显示以下内容:

$ dmesg
## use grep command/egrep command to filter out USB devices ##
$ dmesg | grep -i serial
$ dmesg | grep -i FTDI

在Linux上列出和使用USB串行端口

这是连接USB设备时的外观:

$ sudo dmesg | more

使用setserial命令检查和使用串行端口

串行器是设计用来设置和/或报告与串行端口关联的配置信息的程序。
此信息包括特定串行端口使用的I/O端口和IRQ,以及是否应将中断密钥解释为安全注意密钥,等等。

使用apt-get命令/apt命令安装Debian/Ubuntu Linux安装程序

$ sudo apt install setserial
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  setserial
0 upgraded, 1 newly installed, 0 to remove and 14 not upgraded.
Need to get 35.9 kB of archives.
After this operation, 120 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu focal/main amd64 setserial amd64 2.17-52 [35.9 kB]
Fetched 35.9 kB in 1s (25.7 kB/s)                    
Preconfiguring packages ...
Selecting previously unselected package setserial.
(Reading database ... 292992 files and directories currently installed.)
Preparing to unpack .../setserial_2.17-52_amd64.deb ...
Unpacking setserial (2.17-52) ...
Setting up setserial (2.17-52) ...
removing the old setserial entry in the rcn.d directories
Update complete.
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
Stopping setserial (via systemctl): setserial.service.
Created symlink /etc/systemd/system/multi-user.target.wants/setserial.service → /lib/systemd/system/setserial.ser
vice.
Created symlink /etc/systemd/system/multi-user.target.wants/etc-setserial.service → /lib/systemd/system/etc-setse
rial.service.
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for systemd (245.4-4ubuntu3.2) ...

使用yum命令的CentOS/RHEL/Oracle Linux安装序列

$ sudo yum install setserial

Fedora Linux用户尝试使用dnf命令:

$ sudo dnf install setserial

使用setserial列出串行端口和设备

现在,我们安装了必需的软件包。
打开终端,然后执行以下setserial命令:

$ setserial -g /dev/ttyS[0123]

如果收到错误/警告,显示为"权限被拒绝",请尝试以root用户身份运行命令。
例如,我使用sudo命令/su命令运行它:

$ sudo setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x1020, IRQ: 18
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3

带有-g选项的setserial帮助查找Linux盒具有哪些物理串行端口。

在Linux上列出或显示USB串行端口

尝试:

$ sudo setserial -g /dev/ttyUSB[01]
/dev/ttyUSB0, UART: unknown, Port: 0x0000, IRQ: 0

Linux串行控制台程序

一旦确定了串行端口,就可以配置Linux box并使用各种实用程序使用串行端口:

  • minicom是用于控制调制解调器和连接到转储设备的最佳友好串行通信程序
  • wvidial或其他GUI拨号网络程序"具有内置智能功能的PPP拨号器。
  • Screen命令:设置波特率[终端通讯]
  • getty/agettyagetty打开一个tty端口,提示输入登录名并调用/bin/login命令。
  • grub/lilo configuration将串口配置为系统控制台