1 分钟阅读 次阅读

问题

Linux 8250 串口子系统,在编译时指定了串口数量的限制,一般是48个,导致K3服务器(48个K3串口+1个BMC串口)的串口无法全部探测出来。

排查

  • 使用这个命令可以查看8250的串口数量限制
    cat /boot/config-$(uname -r) | grep CONFIG_SERIAL_8250_NR_UARTS
    

    输出

CONFIG_SERIAL_8250_NR_UARTS=48

可以看到,限制为48个。

而厂家提供的串口驱动,也是调用了8250的函数了,所以也受此限制影响。

从dmesg也可以看到,串口在初始化的时候是使用8250初始化的

~$ sudo dmesg | grep ttyS
[sudo] password for ubuntu:
[    5.009857] dw-apb-uart.4: ttyS4 at MMIO 0x4017004000 (irq = 16, base_baud = 6250000) is a 16550A
[    5.050004] 0000:02:00.0: ttyS5 at MMIO 0x52500000 (irq = 180, base_baud = 230400) is a 16550A
[    5.096713] 0000:02:00.0: ttyS6 at MMIO 0x52500008 (irq = 181, base_baud = 230400) is a 16550A
[    5.158378] 0000:02:00.0: ttyS7 at MMIO 0x52500010 (irq = 182, base_baud = 230400) is a 16550A
[    5.195345] 0000:02:00.0: ttyS8 at MMIO 0x52500018 (irq = 183, base_baud = 230400) is a 16550A
[    5.220571] 0000:02:00.0: ttyS9 at MMIO 0x52500020 (irq = 184, base_baud = 230400) is a 16550A
[    5.246700] 0000:02:00.0: ttyS10 at MMIO 0x52500028 (irq = 185, base_baud = 230400) is a 16550A
[    5.272247] 0000:02:00.0: ttyS11 at MMIO 0x52500030 (irq = 186, base_baud = 230400) is a 16550A
[    5.296352] 0000:02:00.0: ttyS12 at MMIO 0x52500038 (irq = 179, base_baud = 230400) is a 16550A
[    5.321626] 0000:02:00.0: ttyS13 at MMIO 0x52500040 (irq = 180, base_baud = 230400) is a 16550A
[    5.345709] 0000:02:00.0: ttyS14 at MMIO 0x52500048 (irq = 181, base_baud = 230400) is a 16550A

  • is a 16550A 的内核打印: 这个字符串是 Linux 内核源码树中 drivers/tty/serial/8250/8250_port.c 这个文件专属的输出。
  • 而且ttyS是8250的命名方式

留下评论