添加sysfs文件节点调试驱动
程序员文章站
2022-03-27 11:40:46
驱动调试过程中我们经常需要借助adb或者串口动态控制设备,在sysfs中添加一个文件节点用来调试是一个十分方便调试的方法。一下介绍下添加方法:1.定义kobject目录和device_attributestatic struct kobject *xxx_deg;static struct device_attribute xxx_deg_attrs =__ATTR(xxx_debug, 0200, NULL,xxx_store);//处于对权限的限制,注意这里需要把权限设置为不可写,否则内核在编...
驱动调试过程中我们经常需要借助adb或者串口动态控制设备,在sysfs中添加一个文件节点用来调试是一个十分方便调试的方法。
一下介绍下添加方法:
1.定义kobject目录和device_attribute
static struct kobject *xxx_deg;
static struct device_attribute xxx_deg_attrs =
__ATTR(xxx_debug, 0200, NULL,xxx_store);//出于对权限的限制,注意这里需要把权限设置为不可写,否则内核在编译过程中会强制报错,需要用户手动给予权限
2.在driver probe过程中创建文件目录以及文件节点
xxx_deg = kobject_create_and_add(“xxx_deg_dir”,NULL);
sysfs_create_file(xxx_deg,xxx_deg_attrs .attrs);
3.实现xxx_store函数
static ssize_t xxx_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
{
int ret;
char cmd;
u32 input[2];
ret = sscanf(buf, "%c ", &cmd);
switch (cmd) {
case 'w':
ret = sscanf(buf, "%c %x %x ", &cmd, &input[0], &input[1]);
if (ret != 3) {
pr_err("erro! cmd format: echo w [addr] [value]\n");
goto out;
}
pr_info("cmd : %c %x %x\n\n", cmd, input[0], input[1]);
break;
case 'r':
ret = sscanf(buf, "%c %x ", &cmd, &input[0]);
if (ret != 2) {
pr_err("erro! cmd format: echo r [addr]\n");
goto out;
}
pr_info("cmd : %c %x\n\n", cmd, input[0]);
break;
default:
pr_err("Unknown command\n");
break;
}
out:
return count;
}
本文地址:https://blog.csdn.net/yuzhenrong/article/details/108114892
推荐阅读
-
Android为Tiny4412设备驱动在proc目录下添加一个可读版本信息的文件
-
Android.mk文件添加调试打印信息
-
Winform中对自定义xml配置文件进行Xml节点的添加与删除
-
添加sysfs文件节点调试驱动
-
嵌入式(驱动-基础):25---调试技术之(/proc文件系统信息接口:read_proc、get_info、create_proc_read_entry、remove_proc_entry)
-
Winform中对自定义xml配置文件进行Xml节点的添加与删除
-
Android为Tiny4412设备驱动在proc目录下添加一个可读版本信息的文件
-
Android.mk文件添加调试打印信息
-
重写TreeView,多层级节点下批量显示图片,图片支持缩略图和文件名列表切换,支持调用者动态匹配选中,支持外界拖入图片并添加到对应节点下
-
添加sysfs文件节点调试驱动