setserial /dev/ttyS* UART 未定义

setserial /dev/ttyS* UART 未定义

我正在使用 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/ttyS0Linux 内核。默认的 Ubuntu 发行版将其设置为内核的控制台设备(请参阅 参考资料cat /proc/consoles)并在其上运行getty。您需要停止它们以供您的应用程序/dev/ttyS0专门使用。

要停下来getty你可以跑stop ttyS0。我不知道如何/dev/ttyS0从内核控制台设备分离,你必须console=ttyS0,...从启动参数中删除。无论如何,对于第一次测试,强烈建议使用交叉电缆连接其他 PC 上的 DB9。

我担心setserialTK1 上的输出毫无意义且无用。 /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 显示结果。以防万一它偶然有帮助。

相关内容