一文解析Linux驱动 | 在驱动中创建sysfs接口
前言
在一些linux开发板中,经常可以看到通过echo的方式来直接控制硬件或者修改驱动,例如:
这是怎么做到呢?
实际上,这是因为在驱动中提供了sysfs
接口给用户使用,使得用户可以通过cat
或者echo
命令来查看和修改驱动中某些变量的值。
下面介绍驱动中创建sysfs接口的方法。
sysfs接口创建
基本步骤:
1、使用DEVICE_ATTR
声明一个sys
节点
led_status
:在sys接口中显示的节点名字
0600
:表示操作这个led_status节点的权限
led_status_show
:使用cat
命令查看sys接口时调用的函数
led_status_store
:使用echo
命令往sys接口写入内容时调用的函数
2、完成sys节点的读写函数
示例中,led_status_show()
函数和led_status_store()
函数的作用分为打印led变量的值和修改led变量的值.
3、定义struct attribute
和struct attribute_group
数组
上述使用了DEVICE_ATTR
声明节点名字为led_status
, 则struct attribute
名字应为:dev_attr_ + (节点名) + .attr
。所以名字为dev_attr_led_status.attr
。
【文章福利】小编推荐自己的Linux内核技术交流群:【749907784】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!(含视频教程、电子书、实战项目及代码)


4、在probe函数中调用sysfs_create_group()
函数注册sysfs
接口
完整例子
设备树:
驱动:
驱动加载后,就可以在linux终端中,使用cat
和echo
命令来查看和修改驱动中led
变量的值。例如:
原文作者:嵌入式Linux充电站
