ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

Linux ÔËÓÃdebugfsµ÷ÊÔ·½·¨(Ò»)
2014-11-24 07:34:55 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:3´Î
Tags£ºLinux ÔËÓà debugfs µ÷ÊÔ ·½·¨

ÔËÓÃdebugfsµ÷ÊÔ·½·¨


DebugFS£¬¹ËÃû˼Ò壬ÊÇÒ»ÖÖÓÃÓÚÄں˵÷ÊÔµÄÐéÄâÎļþϵͳ£¬Äں˿ª·¢Õßͨ¹ýdebugfsºÍÓû§¿Õ¼ä½»»»Êý¾Ý¡£ÀàËÆµÄÐéÄâÎļþϵͳ»¹ÓÐprocfsºÍsysfsµÈ£¬Õ⼸ÖÖÐéÄâÎļþϵͳ¶¼²¢²»Êµ¼Ê´æ´¢ÔÚÓ²ÅÌÉÏ£¬¶øÊÇLinuxÄÚºËÔËÐÐÆðÀ´ºó²Å½¨Á¢ÆðÀ´¡£


ͨ³£Çé¿öÏ£¬×î³£ÓõÄÄں˵÷ÊÔÊÖ¶ÎÊÇprintk¡£µ«printk²¢²»ÊÇËùÓÐÇé¿ö¶¼ºÃÓ㬱ÈÈç´òÓ¡µÄÊý¾Ý¿ÉÄܹý¶à£¬ÎÒÃÇÕæÕý¹ØÐĵÄÊý¾ÝÔÚ´óÁ¿µÄÊä³öÀï²»ÊÇÄÇôһĿÁËÈ»£»»òÕßÎÒÃÇÔÚµ÷ÊÔʱ¿ÉÄÜÐèÒªÐÞ¸ÄijЩÄں˱äÁ¿£¬ÕâÖÖÇé¿öÏÂprintk¾ÍÎÞÄÜΪÁ¦£¬¶øÈç¹ûΪÁËÐÞ¸Äij¸öÖµÖØÐ±àÒëÄں˻òÕßÇý¶¯ÓÖ¹ýÓÚµÍЧ£¬´Ëʱ¾ÍÐèÒªÒ»¸öÁÙʱµÄÎļþϵͳ¿ÉÒÔ°ÑÎÒÃÇÐèÒª¹ØÐĵÄÊý¾ÝÓ³Éäµ½Óû§¿Õ¼ä¡£ÔÚ¹ýÈ¥£¬procfs¿ÉÒÔʵÏÖÕâ¸öÄ¿µÄ£¬µ½ÁË2.6ʱ´ú£¬ÐÂÒýÈëµÄsysfsҲͬÑù¿ÉÒÔʵÏÖ£¬µ«²»ÂÛÊÇprocfs»òÊÇsysfs£¬ÓÃËüÃÇÀ´ÊµÏÖijЩdebugµÄÐèÇó£¬ËƺõÆ«ÀëÁËËüÃÇ´´½¨µÄ±¾Òâ¡£±ÈÈçprocfs£¬ÆäÄ¿µÄÊÇ·´Ó³½ø³ÌµÄ״̬ÐÅÏ¢£»¶øsysfsÖ÷ÒªÓÃÓÚLinuxÉ豸ģÐÍ¡£²»ÂÛÊÇprocfs»òÊÇsysfsµÄ½Ó¿ÚÓ¦¸Ã±£³ÖÏà¶ÔÎȶ¨£¬ÒòΪÓû§Ì¬³ÌÐòºÜ¿ÉÄÜ»áÒÀÀµËüÃÇ¡£µ±È»£¬Èç¹ûÎÒÃÇÖ»ÊÇÁÙʱ½èÓÃprocfs»òÕßsysfsÀ´×÷debugÖ®Óã¬ÔÚ´úÂë·¢²¼Ö®Ç°½«Ïà¹Øµ÷ÊÔ´úÂëɾ³ýÒ²ÎÞ²»¿É¡£µ«Èç¹ûÏà¹ØµÄµ÷ÊÔ½è¿ÚÒªÔÚÏ൱³¤µÄÒ»¶Îʱ¼äÄÚ´æÔÚÓÚÄÚºËÖ®ÖУ¬¾Í²»Ì«ÊʺϷÅÔÚprocfsºÍsysfsÀïÁË¡£¹Ê´Ë£¬debugfsÓ¦Ô˶øÉú¡£


ÒÔÉÏÕª×Ô»¥ÁªÍøÖУ¬Ïê½âÁËdebugfsµÄºÃ´¦¡£ÎÒô֪µÀÔÚkernelÀïÃæÐí¶à´óÐÍÄ£¿é¶¼Ê¹ÓÃÁËdebugfsµ÷ÊÔ£¬Ïñqualcomm displayÖоÍʹÓÃÁËÐí¶à£¬¿ÉÒÔ´òÓ¡mdpµÈÄÚ²¿¸÷¸ö²ÎÊýµÄÖµ£¬¶Ôµ÷ÊÔ´óÐÍÄ£¿éÆðµ½ÁËÖÁ¹ØÖØÒª×÷Óá£


¶ÔÓÚÄ£¿é³öÏÖÎÊÌâʹÓÃdebugfsÀ´µ÷ÊÔÊǷdz£ºÃµÄ£¬Ç°ÌáÊÇÄ£¿éÖÐÓÐdebugfsµÄ¼ÓÈë¡£ÎÒÃÇͨ³£¶¼ÊÇÔÚ³öÏÖÎÊÌâÖ®ºó²ÅÌí¼ÓlogÀ´¸ú×Ù¡£¼ÇµÃÓиöÀ¶ÆÁÎÊÌâÌácase¸ø¸ßͨ£¬¸ßͨ¾ÍÒªÇóÔÚdebugfsÖÐcat mdp statues,À´ÅжÏmdpÓÐûÓÐÕý³£¹¤×÷¡£


±¾ÎÄÖÐÒÔpm8921_chg.cÏêÐðʹÓÃdebugfsµ÷ÊԼĴæÆ÷ÒÔ¼°ÖжϷ½·¨¡£ÈÆdmesg,ÔÚdebugfsÖв鿴CHGµÄIRG»¹ÊǷdz£ÖØÒªµÄ£¬ÔÚÄ£¿éÖÐÌí¼ÓdebugfsÀ´ÊµÏÖ×Ô¼ºµÄ·ÖÎö·½·¨¡£µ±È»ÒªÏëÔÚÄ£¿é³öÏÖÎÊÌâʱ¾ÍÄÜʹÓÃ×Ô¼ºÌí¼ÓµÄdebugfs¾ÍokÁË¡£


/*catʱ±»µ÷Ó᪡ª¶Á

dataµÄֵΪ¼Ä´æÆ÷µØÖ·£¬ÔÚdebugfs_create_file£¨£©µÚËĸö²ÎÊýÖÐÌîÈ룻

*valΪcatµÄÖµ

*/


static int get_reg(void *data, u64 * val)

{

int addr = (int)data;

int ret;

u8 temp;


ret = pm8xxx_readb(the_chip->dev->parent, addr, &temp);

if (ret) {

pr_err("pm8xxx_readb to %x value =%d errored = %d\n",

addr, temp, ret);

return -EAGAIN;

}

printk("%s data = 0x%02x, val= x%02x\n",__func__,addr,temp);

*val = temp;

return 0;

}


/*echoʱ±»µ÷Ó᪡ªÐ´

dataֵͬÉÏ

valΪдÈëµÄÖµ

*/


static int set_reg(void *data, u64 val)

{

int addr = (int)data;

int ret;

u8 temp;


temp = (u8) val;


printk("%s data = 0x%02x, val= x%02x\n",__func__,addr,temp);


ret = pm8xxx_writeb(the_chip->dev->parent, addr, temp);

if (ret) {

pr_err("pm8xxx_writeb to %x value =%d errored = %d\n",

addr, temp, ret);

return -EAGAIN;

}

return 0;

}

DEFINE_SIMPLE_ATTRIBUTE(reg_fops, get_reg, set_reg, "0x%02llx\n");


/*»ñÈ¡ÖжÏ״̬Îļþ²Ù×÷Ö»ÓжÁ*/

static int get_rt_status(void *data, u64 * val)

{

int i = (int)data;

int ret;


/* global irq number is passed in via data */

ret = pm_chg_get_rt_status(the_chip, i);


printk("%s i=%d ret=%d \n",__func__,i,ret);

*val = ret;

return 0;

}

DEFINE_SIMPLE_ATTRIBUTE(rt_fops, get_rt_status, NULL, "%llu\n");



static void create_debugfs_entries(struct pm8921_chg_chip *chip)

{

int i;


chip->dent = debugfs_create_dir("pm8921_chg", NULL);


if (IS_ERR(chip->dent)) {

pr_err("pmic charger couldnt create debugfs dir\n");

return;

}


debugfs_create_file("CHG_CNTRL", 0644, chip->dent,

(void *)CHG_CNTRL, _fops);

debugfs_create_file("CHG_CNTRL_2", 0644, chip->dent,

(void *)CHG_CNTRL_2, _fops);

debugfs_create_file("CHG_CNTRL_3", 0644, chip->dent,

(void *)CHG_CNTRL_3, _fops);

debugfs_create_file("PBL_ACCESS1", 0644, chip->dent,

(void *)PBL_ACCESS1, _fops);

debugfs_create_file("PBL_ACCESS2", 0644, chip->dent,

(void *)PBL_ACCESS2, _fops);

debugfs_create_file("SYS_CONFIG_1", 0644, chip->dent,

(void *)SYS_CONFIG_1, _fops);

debugfs_create_file("SYS_CONFIG_2", 0644, chip->dent,

(void *)SYS_CONFIG_2, _fops);

debugfs_create_file("CHG_VDD_MAX", 0644, chip->dent,

(void *)CHG_VDD_MAX, _fops);

debugfs_create_file("CHG_VDD_SAFE", 0644, chip->dent,

(void *)CHG_VDD_SAFE, _fops);

debugfs_create_file("CHG_VBAT_DET", 0644, c

Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºAndroid Layout²¼¾Ö ÏÂһƪ£ºLinuxϵͳioctlʹÓÃʾÀý ioctlʵÑé

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)