当前位置: 移动技术网 > 移动技术>移动开发>IOS > 添加sysfs文件节点调试驱动

添加sysfs文件节点调试驱动

2020年08月01日  | 移动技术网移动技术  | 我要评论
驱动调试过程中我们经常需要借助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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网