【发布时间】:2021-08-28 15:48:32
【问题描述】:
我尝试在 QEMU 自建机中启动预编译内核。
串行外设已配置,我可以成功启动本机预编译的 U-boot 映像。
在 U-Boot 中,所有串行 IO 都运行良好(内存寻址和 UART 地址也在机器设置中准备好)。使用选项 -nographic 我可以在 UBoot 命令提示符下读写。
我可以在 Uboot 中发出 bootm 命令将内核加载到 RAM 并启动它。我看到的最后一个字符串是“Uncompressing Linux...done.Booting kernel...”。
我有一个黑屏。
主要区别在于内核工作,因为使用远程 GDB 会话我看到它打印输出,如横幅和使用 printk 函数的更多信息。但是在 QEMU 屏幕上我没有。
问题:在内核的早期阶段,console=ttyS0,115200 的设置是在哪里进行的?我试图在内核源代码中搜索,但找不到调试问题的地方。
内核在设置之前如何知道将什么传递给串行?是否有 RAM 环形缓冲区?
有什么线索吗?
【问题讨论】:
-
一条评论 - bootargs 的初始设置与 Uboot 相同 - console=ttyS0,115200。