android底层驱动学习之如何通过debugfs创建文件的方式来调试内核信息

    xiaoxiao2021-12-15  40

    对于驱动的调试,有时我们得通过调试某些IO口,或者一些I2C总线,那我们是不是要通过一些API来操作,但是在用户空间(shell)又不能直接调用该接口,那我们其实也可以通过建立一个debugfs文件结点方式来做。具体如下:

    1.举个例子来说明,在调试GPIO驱动的时候,我们可以通过debugfs来调试:

    首先定义一个file_operations

    staticconst struct file_operations gpiolib_operations = {

    .open = gpiolib_open,

    .read = gpiolib_read,

    .write = gpiolib_write,

    .llseek = seq_lseek,

    .release = single_release,

    };

    2.然后,建立一个debugfs文件结点:

    (void)debugfs_create_file("gpio", S_IFREG | S_IRUGO,

    NULL, NULL, &gpiolib_operations);

    在实际的驱动中,建立debugfs文件结点一般在驱动初始化的时候。

    3.根据我们的调试需要,实现读写操作,一般用得比较多的是readwrite操作,所以在gpiolib_readgpiolib_write里加入我们的调试代码。调用GPIO驱动的时候,我的想法是,给GPIO结点发一个读指令,那么就得传入的gpio号的状态,给GPIO结点发一个写指令,那么就根据传入的参数设置gpio的状态。于是,我只需要实现write函数:

    staticssize_t gpiolib_write(struct file *file, const char __user *buf,size_t size, loff_t *ppos)

    {

    .............

    }

    转载请注明原文地址: https://ju.6miu.com/read-999991.html

    最新回复(0)