驱动调试过程中我们经常需要借助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 ou