linux内核打印数据到串口控制台问题
原文来源:http://i.cnblogs.com/EditPosts.aspx?opt=1
1、查看当前控制台的打印级别
cat /proc/sys/kernel/printk
4 4 1 7
其中第一个“4”表示内核打印函数printk的打印级别,只有级别比他高的信息才能在控制台上打印出来,既 0-3级别的信息
2、修改打印
echo "新的打印级别 4 1 7" >/proc/sys/kernel/printk
3、不够打印级别的信息会被写到日志中可通过dmesg 命令来查看
4、printk的打印级别
#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 */
#define KERN_DEBUG "<7>" /* debug-level messages */
5、printk函数的使用
printk(打印级别"要打印的信息")这里需要注意打印级别和需要打印的数据中中间没有逗号
打印级别 既上面定义的几个宏
KERN_EMERG
用于突发性事件的消息,通常在系统崩溃之前报告此类消息。
KERN_ALERT
在需要立即操作的情况下使用此消息。
KERN_CRIT
用于临界条件下,通常遇到严重的硬软件错误时使用此消息。
KERN_ERR
用于报告错误条件;设备驱动经常使用KERN_ERR报告硬件难题。
KERN_WARNING
是关于问题状况的警告,一般这些状况不会引起系统的严重问题。
KERN_NOTICE
该级别较为普通,但仍然值得注意。许多与安全性相关的情况会在这个级别被报告。
KERN_INFO
信息消息。许多驱动程序在启动时刻用它来输出获得的硬件信息。
KERN_DEBUG