Debian 无法识别我的 ttyS0 / 控制台重定向不起作用

Debian 无法识别我的 ttyS0 / 控制台重定向不起作用

我有一个 fitlet2 (https://fit-iot.com/web/products/fitlet2/)有一个串行端口。在 BIOS 中启用“串行端口控制台重定向”后,我可以从计算机(屏幕 /dev/ttyUSB0 115200)连接到带有屏幕的 fitlet2 的串行端口并访问 BIOS。

我还可以通过串行访问 GRUB 引导加载程序。通过串行方式访问各种 GRUB 引导加载程序(debian/ubuntu 安装程序、已安装的 debian)。但是每当系统加载时,我就无法再访问我正在使用的串行端口。

我尝试根据这篇文章编辑引导参数来激活系统 GRUB 中的控制台重定向https://www.cyberciti.biz/faq/howto-setup-serial-console-on-debian-linux/。很快我意识到我的 ttyS0 无法正常工作。开始调试我的物理串行接口时,我只是找不到让它工作的方法。

Setserial 告诉我以下内容:

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

dmesg | grep tty 这个:

[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-4.9.0-8-amd64 root=/dev/mapper/pen--01--vg-root ro console=ttyS0,115200n8 console=tty0,115200n8
[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-4.9.0-8-amd64 root=/dev/mapper/pen--01--vg-root ro console=ttyS0,115200n8 console=tty0,115200n8
[    0.000000] console [tty0] enabled
[    0.000000] console [ttyS0] enabled
[   49.308213] console [ttyS0] disabled
[   49.312635] dw-apb-uart.0: ttyS0 at MMIO 0x81424000 (irq = 4, base_baud = 115200) is a 16550A
[   49.407713] usb 1-8.2: Qualcomm USB modem converter now attached to ttyUSB0
[   49.410489] usb 1-8.2: Qualcomm USB modem converter now attached to ttyUSB1
[   49.411349] usb 1-8.2: Qualcomm USB modem converter now attached to ttyUSB2
[   53.577143] console [ttyS0] enabled
[   54.744793] dw-apb-uart.1: ttyS1 at MMIO 0x81422000 (irq = 5, base_baud = 115200) is a 16550A
[   54.755771] dw-apb-uart.2: ttyS2 at MMIO 0x81420000 (irq = 7, base_baud = 115200) is a 16550A
[  115.902885] ttyS2 - failed to request DMA

为什么 ttyS0 被禁用并再次重新启用?我怎样才能启用它/正确使用它?

如何在串口上获取登录 shell?我缺少什么?

答案1

很快我意识到我的 ttyS0 无法正常工作。开始调试我的物理串行接口时,我只是找不到让它工作的方法。

就我而言,在配备 Atom E3950 cpu 的 fitlet2 上,终端S2是机器背面串口对应的设备节点。我已经能够将它用作具有常用console=ttyS2,115200内核命令行选项的控制台。我已经使用当前的 Debian 稳定内核 (4.19.152-1) 和不稳定内核 (5.9.11-1) 进行了测试。

使用稳定版时,我也会看到该ttyS2 - failed to request DMA消息,但它仍然有效。

在我的机器上我有:

# cat /proc/tty/driver/serial                                         
serinfo:1.0 driver revision:                                                    
0: uart:16550A mmio:0x7FFFF0E000 irq:4 tx:0 rx:0                                
1: uart:16550A mmio:0x7FFFF0C000 irq:5 tx:0 rx:0 CTS                            
2: uart:16550A mmio:0x480000000 irq:6 tx:1067 rx:38 RTS|CTS|DTR                 
3: uart:16550A mmio:0x7FFFF0A000 irq:7 tx:0 rx:0 CTS

尽我所能,我无法让 grub 本机使用串行端口。正如您所说,当您在固件中启用串行控制台重定向时,可以通过串行端口访问 grub 接口,但我相信这是通过驱动串行端口的固件代理实现的。在该模式下,配置 grubterminal console足以在串行端口上输出。无论如何,它运作良好。

相关内容