如何在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/agetty
agetty打开一个tty端口,提示输入登录名并调用/bin/login命令。grub/lilo configuration
将串口配置为系统控制台