欢迎光临散文网 会员登陆 & 注册

一文解析Linux驱动 | 在驱动中创建sysfs接口

2023-04-07 17:36 作者:补给站Linux内核  | 我要投稿

前言

在一些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 attributestruct 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终端中,使用catecho命令来查看和修改驱动中led变量的值。例如:


原文作者:嵌入式Linux充电站


一文解析Linux驱动 | 在驱动中创建sysfs接口的评论 (共 条)

分享到微博请遵守国家法律