![setserial /dev/ttyS* UART 未定义](https://linux22.com/image/69438/setserial%20%2Fdev%2FttyS*%20UART%20%E6%9C%AA%E5%AE%9A%E4%B9%89.png)
我正在使用 nvidia jetson tk1 板,它有一个 rs232 串口,我试图通过短接引脚 2 和引脚 3 来进行环回测试。我正在使用串口通信器终端 gtkterm,但是当我尝试在终端中写入我无法让字符回显,也不会在屏幕上显示字符。我用的是ubuntu。我使用命令setserial -g /dev/ttyS*
并setserial -g /dev/ttyTHS*
查看有关端口的信息,但我得到的输出是
/dev/ttyS0, UART: undefined, Port: 0x0000, IRQ: 122
/dev/ttyS1, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS2, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS3, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyTHS0, UART: undefined, Port: 0x0000, IRQ: 68
/dev/ttyTHS1, UART: undefined, Port: 0x0000, IRQ: 69
/dev/ttyTHS2, UART: undefined, Port: 0x0000, IRQ: 78
所以我在这里有几个问题:
- 哪些是真实端口,
- 为什么它说 UART 未定义,以及
- 为什么看起来它们根本没有物理映射。
我也做了一些研究,你可以用这个命令改变UART sudo setserial /dev/ttyS1 uart 16550A
,但我不知道UART型号类型,我检查了文档和电路板的部件,我只能告诉你UART类型是DB-9 UART 串行控制台。
答案1
IIRC Jetson TK1 的 DB9 连接到/dev/ttyS0
Linux 内核。默认的 Ubuntu 发行版将其设置为内核的控制台设备(请参阅 参考资料cat /proc/consoles
)并在其上运行getty
。您需要停止它们以供您的应用程序/dev/ttyS0
专门使用。
要停下来getty
你可以跑stop ttyS0
。我不知道如何/dev/ttyS0
从内核控制台设备分离,你必须console=ttyS0,...
从启动参数中删除。无论如何,对于第一次测试,强烈建议使用交叉电缆连接其他 PC 上的 DB9。
我担心setserial
TK1 上的输出毫无意义且无用。 /dev/ttyS0
启动时已准备就绪,您可以使用 Linux termios API 对其进行配置,因此只需使用stty
或其他复杂的终端软件,例如kermit
.我从来没有用过,gtkterm
但它也可以。不过,除非从端口中删除 getty 或 shell 进程,否则您将一事无成。
要使用kermit
,请执行apt-get install ckermit
并创建~/.kermrc
包含以下内容的文件:
set modem type none
set line /dev/ttyS0
set speed 115200
set carrier-watch off
set flow none
然后kermit
在终端中启动。根据提示输入connect
连接串口。在会话中键入Ctrl+ \,然后c键入返回到提示符,q退出 kermit。
$ kermit
C-Kermit 9.0.302 OPEN SOURCE:, 20 Aug 2011, for Linux+SSL+KRB5 (64-bit)
Copyright (C) 1985, 2011,
Trustees of Columbia University in the City of New York.
Type ? or HELP for help.
(/home/yaegashi/) C-Kermit>connect
Connecting to /dev/ttyS0, speed 115200
Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------
Closing /dev/ttyS0...OK
答案2
我刚刚在 ARCHMI PC 上遇到了未定义的 UART 串行端口和 Linux 的类似问题。 dmesg | grep 序列号没有显示任何结果。经过多次尝试,我发现这是BIOS的问题。禁用“快速启动”选项后,一切运行顺利,串行端口已正确加载 UART,dmesg 显示结果。以防万一它偶然有帮助。