带有 Debian Wheezy 的英特尔 NUC 上的串行端口 I/O 错误

带有 Debian Wheezy 的英特尔 NUC 上的串行端口 I/O 错误

我在 INTEL NUC DE3815TYBE 上使用串行端口时遇到问题。我安装了 Debian Wheezy,内核版本为 3.16.0-0.bpo.4-amd64。

当我做:

setserial -g /dev/ttyS*

我得到:

/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x0000, IRQ: 19
/dev/ttyS2, UART: 16550A, Port: 0x0000, IRQ: 19
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3

我可以毫无问题地连接到 ttyS0 - ttyS2,但 ttyS3 无法正常工作,并且收到此错误:

我调用命令:

stty -F /dev/ttyS3 9600 cs8 cread clocal

我得到:

stty: /dev/ttyS3: Input/output error

知道如何解决这个问题吗?我以 ROOT 身​​份运行命令。我也尝试过:setserial /dev/ttyS3 irq 3 uart 16550Askip_test但我得到相同的stty:/dev/ttyS3:输入/输出错误

输出:

dmesg | grep tty



[    0.000000] console [tty0] enabled
[    0.952559] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.953593] 0000:00:1e.3: ttyS1 at MMIO 0xd0810000 (irq = 19, base_baud = 2764800) is a 16550A
[    0.954072] 0000:00:1e.4: ttyS2 at MMIO 0xd080e000 (irq = 19, base_baud = 2764800) is a 16550A
[  27.740208] ttyS2 - failed to request DMA
[  27.746627] ttyS1 - failed to request DMA
[  440.532070] ttyS3: LSR safety check engaged!
[  443.700047] ttyS3: LSR safety check engaged!
[  445.288960] ttyS3: LSR safety check engaged!
[  452.796029] ttyS3: LSR safety check engaged!
[  453.716441] ttyS3: LSR safety check engaged!
[  463.732506] ttyS3: LSR safety check engaged!
[  470.222491] ttyS3: LSR safety check engaged!
[  470.222774] ttyS3: LSR safety check engaged!
[  473.748363] ttyS3: LSR safety check engaged!
[  474.359756] ttyS3: LSR safety check engaged!
[  482.783201] ttyS3: LSR safety check engaged!
[  483.763953] ttyS3: LSR safety check engaged!
[  493.931641] ttyS3: LSR safety check engaged!
[  503.982224] ttyS3: LSR safety check engaged!
[  514.020686] ttyS3: LSR safety check engaged!
[  524.074170] ttyS3: LSR safety check engaged!
[  534.090644] ttyS3: LSR safety check engaged!
[  544.110381] ttyS3: LSR safety check engaged!

lsof /dev/ttyS3 不返回任何内容,所以这意味着没有任何东西连接到 ttyS3 我猜,但我对 Linux 不太熟练,所以我可能会错

为什么我在 Linux 中可以看到 4 个 ttyS*,但实际上我的主板上只有 2 个物理串行端口?

答案1

您声明您只有 2 个物理串行端口,您检测到 ttyS1 和 ttyS2。 ttyS3 和 ttyS4 不存在;它们是暴露的,但你必须忽略它们。这就是驱动程序的工作方式;它会探测什么可能是串行端口并将其暴露给您,但您必须验证它是否是真正的串行端口,因为驱动程序无法 100% 确定。这行:

ttyS3:LSR 安全检查已启动!

告诉您串行端口ttyS3尚未准备好,在您的情况下它永远不会准备好,因为它不存在。驱动程序尽力正确检测串行端口,但有时会失败。在这种情况下,您必须找到哪些公开的接口真正手动连接到硬件,而您已经这样做了。

相关内容