新浦京81707con > 软件下载 > 新萄京赌场手机版:Linux驱动开发,Linux驱动开发

原标题:新萄京赌场手机版:Linux驱动开发,Linux驱动开发

浏览次数:129 时间:2019-11-14

、方今在写I2C下EEPROM的驱动程序,但意识采用i2c_new_probed_device函数不能够枚举到器材,于是想调节和测试该函数(位于driver/i2c/i2c-core.c内卡塔尔,见到里边有些调节和测验音信如下:

转自:

Linux内核日志开关

[cpp]
i2c_new_probed_device(...) 

    ... 
    if (addr_list[i] == I2C_CLIENT_END) { 
        dev_dbg(&adap->dev, "Probing failed, no device foundn"); 
        return NULL; 
    } 
    ... 

linux设备驱动调节和测试,大家在基本功中来看内核使用dev_dbg来决定输出音讯,那么些函数的精气神儿是调用printk(KELacrosseN_DEBUG )来输出打字与印刷新闻。要开发这一个按钮需求上面两步。

1、让pr_debug能输出

i2c_new_probed_device(...)
{
    ...
 if (addr_list[i] == I2C_CLIENT_END) {
  dev_dbg(&adap->dev, "Probing failed, no device foundn");
  return NULL;
 }
 ...
}但加载驱动模块,该类调节和测验音讯并未有打字与印刷出来(试行dmesg命令后同样未找到调节和测量检验音信卡塔 尔(阿拉伯语:قطر‎。

     1、张开调节和测验开关:你调节和测验的文件中必然饱含了,或许,前者富含了前面二个,在含蓄此头文件从前,使用#define DEBUG 1 来开发调节和测量检验开关:比方
#include 
#include 
#include 
#include 
#define DEBUG    1
#include 

--- a/kernel/printk/printk.c

2、列出dev_dbg源码完成:(include/linux/device.h中)

     在linux/device.h文件中:
#define dev_printk(level, dev, format, arg...)    
    printk(level "%s %s: " format , dev_driver_string(dev) , (dev)->bus_id , ## arg)

b/kernel/printk/printk.c

[cpp]
#if defined(DEBUG)  
#define dev_dbg(dev, format, arg...)          
    dev_printk(KERN_DEBUG , dev , format , ## arg) 

#ifdef DEBUG
#define dev_dbg(dev, format, arg...)        
    dev_printk(KERN_DEBUG , dev , format , ## arg)
#else
static inline int __attribute__ ((format (printf, 2, 3)))
dev_dbg(struct device * dev, const char * fmt, ...)
{
    return 0;
}
#endif
    不过这几个张开了后头,也不能够面面俱圆的出口音信,原因是printk有暗许的音讯品级。
    linux/kernel文件中
#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>"    
能够看看KE奇骏N_DEBUG是等第最低的。

@@ -59,7 59,7 @@

#if defined(DEBUG)
#define dev_dbg(dev, format, arg...)  
 dev_printk(KERN_DEBUG , dev , format , ## arg)问题寻找,只需在援引头文件#include/linux/device.h前定义DEBUG宏即可。

2、更正文件kernel/printk文件

 

在include/linux/i2c.h中期维修正代码如下:

#define DEFAULT_MESSAGE_LOGLEVEL 4

/* We show everything that is MOREimportant than this.. */

 

#define MINIMUM_CONSOLE_LOGLEVEL 1
#define DEFAULT_CONSOLE_LOGLEVEL 8
      其中DEFAULT_CONSOLE_LOGLEVEL 为终极console输出的最低等别,比那严重的都将出口。原本该值为7,则调节和测量检验消息不能够输出,改过为8则整个有出口

#define MINIMUM_CONSOLE_LOGLEVEL 1 /*Minimum loglevel we let people use */

[cpp]
#define DEBUG                  /* add for debug eeprom */  
#include <linux/device.h> /* for struct device */  
#undef DEBUG                   /* add for debug eeprom */ 

-#define DEFAULT_CONSOLE_LOGLEVEL 7 /*anything MORE serious than KERN_DEBUG */

#define DEBUG                  /* add for debug eeprom */
#include <linux/device.h> /* for struct device */
#undef DEBUG                   /* add for debug eeprom */
加载驱动驱动模块后,并未调节和测量检验新闻打字与印刷出。如下图:

#define DEFAULT_CONSOLE_LOGLEVEL 8 /*anything MORE serious than KERN_DEBUG */

 

 

本文由新浦京81707con发布于软件下载,转载请注明出处:新萄京赌场手机版:Linux驱动开发,Linux驱动开发

关键词: 新浦京81707con 【linux内核】 08.

上一篇:语法直角三角形,一元二次方程的实数根

下一篇:没有了