Linux 内核解压缩 Linux 消息未在 UART 上打印

标签 linux linux-kernel x86 embedded-linux

我正在使用 Minnowboard Max 和带有 u-boot 的定制 Linux 内核开发一个嵌入式项目。

内核命令行参数:

initcall_debug=1 video=HDMI-A-1:1920x1200MR@60D console=ttyS0,115200 console=tty0

我发现 misc.c 文件中定义的 debug_pustr 消息都没有在串行端口中打印。

debug_putstr("\nDecompressing Linux... ");

我也启用了 CONFIG_X86_VERBOSE_BOOTUP =y 在内核菜单配置中。

有什么办法可以在串口看到这些信息吗?

最佳答案

Is there any way to see these messages in the serial port?

显着信息是处理器架构。
例如在 ARM 引导中,解压缩器代码使用其自己的串行端口配置,这与 earlyprintk 不同。一些 ARM 机器有配置对话框来指定这个早期的串口;有些可能会使用机器 ID(请参阅 How do I find ARM Linux entry point when it fails to uncompress?)。在 ARM 上,直到 (init/main.c) init_kernel() 例程启动后,earlyprintk 才会生效。

对于 x86,所有早期的串行端口配置和 I/O 都合并到 earlyprintk 功能中。使用内核命令行参数定义串口(默认设备为0x3F8)和波特率(默认为9600)。

1081         earlyprintk=    [X86,SH,BLACKFIN,ARM,M68k]
1082                         earlyprintk=vga
1083                         earlyprintk=efi
1084                         earlyprintk=xen
1085                         earlyprintk=serial[,ttySn[,baudrate]]
1086                         earlyprintk=serial[,0x...[,baudrate]]
1087                         earlyprintk=ttySn[,baudrate]
1088                         earlyprintk=dbgp[debugController#]
1089                         earlyprintk=pciserial,bus:device.function[,baudrate]
1090 
1091                         earlyprintk is useful when the kernel crashes before
1092                         the normal console is initialized. It is not enabled by
1093                         default because it has some cosmetic problems.
1094 
1095                         Append ",keep" to not disable it when the real console
1096                         takes over.
1097 
1098                         Only one of vga, efi, serial, or usb debug port can
1099                         be used at a time.
1100 
1101                         Currently only ttyS0 and ttyS1 may be specified by
1102                         name.  Other I/O ports may be explicitly specified
1103                         on some architectures (x86 and arm at least) by
1104                         replacing ttySn with an I/O port address, like this:
1105                                 earlyprintk=serial,0x1008,115200
1106                         You can find the port for a given device in
1107                         /proc/tty/driver/serial:
1108                                 2: uart:ST16650V2 port:00001008 irq:18 ...
1109 
1110                         Interaction with the standard serial driver is not
1111                         very good.
1112 
1113                         The VGA and EFI output is eventually overwritten by
1114                         the real console.
1115 
1116                         The xen output can only be used by Xen PV guests.

关于Linux 内核解压缩 Linux 消息未在 UART 上打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38069301/

相关文章:

php - 如何将 OCI8 安装到现有的 PHP?

带中断的 Linux 串行通信

汇编检查数字是否为偶数

assembly - 注册使用情况跟踪x86

x86 - 使用内在的未处理异常

c - 按 ENTER 继续(Linux 和 C)

linux - 添加路径和链接库

linux tcpdump ---如何查找命中数

linux - 改变Linux内核

linux - 如何使用 spi-loopback-test linux 内核模块?