lm75 内核模块在用户空间可用

lm75 kernel module available in userspace

我正在使用 lm75 内核模块与自定义板上的传感器交互。一切正常,我的设备安装在 /sys/bus/i2c/devices/5-0048。但我想让用户设置最大温度滞后,换句话说让用户写入 temp_max_hyst 文件。此文件的权限是只读的,除了 root

我的问题是,有什么方法可以将我的设备挂载到 /dev 中吗?

安装 在这里不是正确的术语,因此您不会找到任何搜索内容。具有文件系统的块设备在目录上挂载,然后成为挂载点

此处设备 5-0048 绑定 到驱动程序 lm75。你会发现设备在那里,假设它出现在设备树或板信息中,无论 lm75 驱动程序是否存在。如果 lm75 驱动程序绑定到设备,它会创建一个 class hwmon 的新设备。您感兴趣的是具有 属性 ,例如 temp_max_hyst 的设备。

您在 /dev 中看到的被称为 设备节点。虽然许多设备一旦绑定到驱动程序,就会创建一个设备节点来与设备交互,但这并不是必须发生的。 /sys/class/regulator/sys/class/net 中可能有一堆设备在 /dev 中没有与其关联的节点。

hwmon 类型的驱动程序,如 lm75,通常不会创建任何设备节点来为硬件提供字符设备或块设备用户空间接口。因此,此设备的开发中不会出现任何内容。 hwmon设备的属性就是你得到的。

但是您的问题有一个简单的解决方案。作为 root,只需 chmod a+w temp_max_hystchown user_account temp_max_hyst 或(这可能是最好的)chmod g+w temp_max_hyst ; chgrp hw_access_group temp_max_hyst 并将用户添加到组 hw_access_group。您可以使用现有的组,可能有一个名为 wheeladm 的组将用于类似的事情,或者创建一个新的组仅用于 hwmon 访问。

当然这不会在重启后持续存在,因为 sysfs 不是磁盘上的真实文件系统。要使更改持久化,最好的方法是创建一个 udev 规则,该规则在检测到 hwmon 设备时自动影响 chmod/chown。这是您在这里关心的 hwmon 设备,而不是 i2c 设备。尝试 运行 udevadm info -a /sys/class/hwmon/hwmon0.