分析Linux内核启动流程时可以知道,在调用setup_arch函数之前就已经调用过printk函数了,但是这个时候的printk函数只是将打印信息放在缓存区中,并没有打印到控制台上,因为这个时候控制台还没有被初始化。
只有在start_kernel函数中的console_init函数被调用后,控制台才会被注册、初始化,printk函数打印的内容才会被真正地输出到屏幕上。如果想在console_init函数之前打印信息,需要调用early_printk函数。
下面是此函数的用法:
1. 配置内核
(1)Kernel hacking ---> Kernel low-level debugging functions --> Early printk
(2)在boot option中添加 earlyprintk项。类似于:Linux-CommandLine = root=/dev/mmcblk0p1 rootfstype=ext4 console=ttySAC0,115200 init=/linuxrc ctp=2 skipcali=y ethmac=1C:6F:65:34:51:7E earlyprintk
(不传参数也能打印?)
2. 在需要打印调试信息的地方调用此函数
early_printk("------------xxx------------\n");
early_printk("------------xxx = %d------------\n", xxx);