1.在驱动调试中,使用printk(),是最简单,最方便的办法
当uboot的命令行里的“console=tty1”时,表示printk()输出在开发板的LCD屏上
当uboot的命令行里的“console=ttySA0,115200”时,表示printk()输出在串口UART0上,波特率=115200
当uboot的命令行里的“console=tty1 console=ttySA0,115200”时,表示printk()同时输出在串口上,以及开发板的LCD屏上
2、打印级别"<0>"至 "<7>"
发现printk的打印级别 在include/linux/kernel.h中找到:
#define KERN_EMERG "<0>" // 系统崩溃
#define KERN_ALERT "<1>" //必须紧急处理
#define KERN_CRIT "<2>" // 临界条件,严重的硬软件错误
#define KERN_ERR "<3>" // 报告错误
#define KERN_WARNING "<4>" //警告
#define KERN_NOTICE "<5>" //普通但还是须注意
#define KERN_INFO "<6>" // 信息
#define KERN_DEBUG "<7>" // 调试信息
默认值default_message_loglevel为打印级别"<4>"
实例:
//静态注册设备号
ret = register_chrdev_region(devnr, count, chrdev_name);
if(ret != 0) {
printk(KERN_EMERG"register_chrdev_region error\n");
goto devnr_requst_err;
}
}
3、常用调试语句__FILE__, __FUNCTION__, __LINE__
printk(KERN_DEBUG"%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);
//__FILE__: 表示文件路径
//__FUNCTION__: 表示函数名
//__LINE__: 表示代码位于第几行
//KERN_DEBUG: 等于7,表示打印级别为7