zoukankan      html  css  js  c++  java
  • printk 的简要分析

    Printk的级别:

    在内核代码 include/linux/kernel.h 中有如下代码, 它们表示 07这 个记录级别的名称。  

    #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  其他参数不变,这样所有的东西都会被打印出来。

  • 相关阅读:
    201-STM32+Air724UG基本控制篇(阿里云物联网平台)-设备使用物模型Topic上报温湿度数据
    Sentinel Go 核心统计结构滑动窗口的深度解析
    golang sync.Mutex互斥锁的实现原理
    Golang-Scheduler原理解析
    Golang-Channel原理解析
    golang里channel的实现原理
    最长回文子序列
    GO语言的goroutine并发原理和调度机制
    golang 常见问题
    通过js给网页加上水印背景
  • 原文地址:https://www.cnblogs.com/start530/p/3834400.html
Copyright © 2011-2022 走看看