本文主要是介绍内核调试之early printk,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
early printk 解决什么问题那?本质也是打印调试信息,但是不同于printk,printk属于打印的一个框架,既然是框架必然需要一些必备条件,框架的初始化等,在内核启动初期这些框架都没来得及初始化,所以这些函数肯定不能用,eary pritnk实现就比较直接简单,就是直接调用对应芯片的串口寄存器,把数据写到串口控制器寄存器里面,只要你芯片启动了就能输出。各个架构下都实现了earlyprintk
Kernel hacking ---> arm Debugging ---> Kernel low-level debugging functionsEarly printk
Character devices ---> Serial drivers ---> static struct uart_driver amba_reg;
static struct console amba_console = {.name = "ttyAMA",.write = pl011_console_write,.device = uart_console_device,.setup = pl011_console_setup,.match = pl011_console_match,.flags = CON_PRINTBUFFER | CON_ANYTIME,.index = -1,.data = &amba_reg,
};
驱动代码
amba-pl011.c - drivers/tty/serial/amba-pl011.c - Linux source code (v5.12.12) - Bootlin
这篇关于内核调试之early printk的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!