在嵌入式调试过程中查看各种log是十分重要的,而串口控制终端能够显示内核log,但是通过网络或adb shell连接的控制台只能显示用户空间的log,这两种控制台有什么区别呢?今天来区分一下kernel层log与应用层log,及打印级别。
linux控制台分为两种:
一种是kernel级别的控制台,一般为uboot启动时通过cmdline传递给kernel的,这个kernel级别控制台能够打印启动log,在运行过程中显示printk的打印信息。
另一种为user级别的控制台,就是我们使用的各种shell,在运行过程中显示printf的打印信息。
这两种控制台实现原理上是不同的,kernel层的控制台是直接对driver设备的输出和简单处理;而user层的控制台都是tty的实例,最终通过bash等shell与用户交互。
如果希望在用户级别的控制台上看到实时的kernel层log可以使用cat /dev/kmsg。这是kernel log的实时信息流文件。
打印级别控制:
在使用printk时可以指定其打印级别,如
printk(KERN_EMERG "hello key probe\n");
这样可以通过更改控制台允许的最低打