我正在将最新版本的 Linux(linux-stable)移植到定制的 ARM926TEJ-S 板上,并且我想在初始化阶段打印消息。所以我对如何让 uart 在内核初始化阶段工作的问题感到困扰。
在 init/main.c:start_kernel() 中打印 linux 横幅
最终调用printk()
以打印消息。我的问题是如何printk()
实现以及如何让printk()
输出到我的 uart。
因为我知道 uart 的驱动程序没有在那里初始化,所以它们是通过rest_init()
在 start_kernel() 的末尾调用来初始化的。rest_init()
因此将调用do_initcalls()
并最终调用module_init()
驱动程序。
而且我知道putstr("Uncompressing Linux..."); 在解压缩阶段通过arch/arm/boot/compressed/debug.S
使用waituart/senduart...
文件设置实现的实现CONFIG_DEBUG_LL_INCLUDE