Printk的级别:
在内核代码 include/linux/kernel.h 中有如下代码, 它们表示 0~7这 8 个记录级别的名称。
#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
#define KERN_INFO "<6>" /* informational */
内核会根据uboot里的tty=SACO来找到对应的硬件操作函数;console_setup
Register_console=
串口打印:
1、name=ttySAC0;
2、各种函数;
lcd打印:
1、name
2、各种函数;
Printk 的默认级别是4;
#define DBG_PRINTK printk
调试驱动程序时候就这样用:在驱动里觉得大概有问题的那行添加:
DBG_PRINTK("%s %s %d\n", __FILE__,__FUNCTION__,__LINE__) ,通过这个来判断到底是哪行出错
或 加上打印级别
直接:printk(KERN_DEBUG "%s %s %d\n", __FILE__,__FUNCTION__,__LINE__)
修改printk的级别:要小于第一个的级别才能打印,第二个是默认值
查看:cat /proc/sys/kernel/printk
7 4 1 7
修改:echo "8 4 1 7" > /proc/sys/kernel/printk 如果将console_loglevel被改为1,于是所有的printk信息都不会被打印
在uboot界面设置
Setenv bootargs loglevel=0,其他参数不变,这样所有的打印信息都没有了
但是启动后还可以dmesg命令将缓冲区里的内容打印出来。
Setenv bootargs debug 其他参数不变,这样所有的东西都会被打印出来。