标签: sysfs

Linux驱动程序通过sysfs访问

我正在制作一个小内核模块,以提供用户空间访问ARMv7芯片的某些内核模式功能(特别是缓存控制).我正在阅读Corbet,Rubini和Hartman的Linux设备驱动程序.在其中,他们描述了如何制作完整的驱动程序+设备+总线.我根本不想创建一个总线驱动程序.事实上,我正在制作的"驱动程序"根本不需要与设备定义匹配 - 它与平台的CPU隐式匹配.任何人都可以向我解释:

  1. 在sysfs中我的属性应该去哪里?它应该在我的模块条目下/sysfs/modules/mymodule吗?/sys/devices/platform似乎也很有希望,也是如此/sys/devices/system/cpu.
  2. 如果存在我应该放置kobject/属性的现有位置,我该如何将其插入?我如何获得必要的kset?我见过的所有例子都创建了一个kset然后从它链接到kobject- 我还没有看到用于请求现有命名的API kset

很抱歉,如果这显然是不可能的,或者某些地方有一些非常直接且易于发现的例子,我还没有因某些原因而发现.任何人都可以对此有所了解吗?

linux kernel driver linux-device-driver sysfs

7
推荐指数
1
解决办法
8645
查看次数

DeviceTree中的命名GPIO

我正在尝试为嵌入式系统创建设备树,并希望向用户空间公开一些GPIO。这些不是,也不应该由内核驱动程序使用。例如,有一个USB设备焊接到板上,由用户空间驱动器控制。它具有GPIO重置线,用户空间库需要访问该重置线。

我希望这些文件在sysfs中通过名称公开,以便用户空间可以访问/sys/class/gpio/usbreset而不需要知道不可思议的gpio编号并需要专门“导出”它。我尝试将其设置为GPIO猪,该猪初始化GPIO,但其名称未出现在sysfs中,并且在将其拖入时无法导出gpio。我知道我可以选择其他内核驱动程序类型,例如LED,但它不是LED,对我来说,这似乎不是很干净。

在sysfs中导出命名的GPIO的正确方法是什么?

linux embedded sysfs gpio device-tree

7
推荐指数
1
解决办法
1834
查看次数

如何将文件操作附加到平台驱动程序中的sysfs属性?

我为我们开发的外围设备编写了一个平台驱动程序,并希望向sysfs公开一些配置选项.我已设法使用属性结构(见下文)和sysfs_create_file探测函数创建适当的文件,但我无法弄清楚如何将show/store函数附加到平台驱动程序中的结构.

我在网上找到的大多数资源使用了一个device_attribute结构或类似的东西来创建他们的文件,这也适合吗?还有另一种方法可以为平台驱动程序执行此操作吗?

我的属性struct看起来像这样:

struct attribute subkey_attr = {
    .name = "subkeys",
    .mode = S_IWUGO | S_IRUGO,
};
Run Code Online (Sandbox Code Playgroud)

我使用此调用注册该文件:

riddler_kobject = &pdev->dev.kobj;
ret_val = sysfs_create_file(riddler_kobject, &subkey_attr);
Run Code Online (Sandbox Code Playgroud)

linux-device-driver linux-kernel embedded-linux sysfs

7
推荐指数
2
解决办法
5806
查看次数

找不到用于sysfs_notify()的kobject

我正在开发一个创建sysfs属性文件的驱动程序.旨在通过使用该poll()方法通知应用程序对此属性的更改.我打算使用这个sysfs_notify()功能.只要您拥有kobject属性(sysfs_notify()要求作为第一个参数),这很容易做到.kobject如果使用sysfs_create_file()和相关功能,获得很容易.

我在正确创建一个sysfs文件时阅读了这篇文章,该文件解决了设备存在的用户空间通知和sysfs文件创建之间可能存在的竞争条件.这个解决方案也更清洁.

但是,我无法弄清楚如何获取kobject我可以使用的每个属性(或父级)sysfs_notify().在一点结构,如有struct device_driver一个成员struct kobject kobj;.这已被取代(10年前)struct driver_private *p;.此私有结构现在包含实际结构kobject,无法使用.

有没有sysfs_notify()我可以使用的新形式,还是有另一种方法来获得正确的kobject?我可能不得不回到"手动"创建sysfs属性.

linux-kernel sysfs

6
推荐指数
0
解决办法
183
查看次数

在 Linux 内核模块中获取屏幕亮度

我正在尝试获取 Linux 内核模块中的当前屏幕亮度。但是,我不知道如何访问亮度变量,尽管可以使用 sysfs 接口在用户空间应用程序中轻松获取它。

请让我知道有关此问题的线索。

谢谢。

linux kernel kernel-module sysfs

5
推荐指数
1
解决办法
1504
查看次数

统计Linux中正在运行的进程的抢占次数

有什么方法可以计算用户空间中特定PID的抢占吗?我有兴趣测量一个进程被抢占的次数。

interrupt scheduled-tasks linux-kernel preemption sysfs

5
推荐指数
0
解决办法
483
查看次数

在什么情况下/ sys / kernel / debug / gpio为空?

摘要

我的目标是控制Intel主板(带有C1037U处理器的NM70芯片组)上的Peppermint 4 Linux(内核版本3.8.0)中的GPIO引脚。

我正在调试使用sysfs接口的问题,并试图了解/ sys / kernel / debug / gpio为空的情况?

尝试通过以下方式导出针脚0到255时

echo XX > /sys/class/gpio/export

XX从0到255,我得到以下错误消息

echo: write error: No such device

在什么情况下/ sys / kernel / debug / gpio为空?

 背景

  • 主板:具有NM70芯片组的英特尔
  • 处理器:C1037U处理器
  • 操作系统:Peppermint 4 Linux
  • 内核版本:3.8.0
  • GPIO接口:sysfs

我正在尝试使用sysfs接口,该接口允许通过文件系统从用户空间访问GPIO引脚。

我已成功遵循https://help.ubuntu.com/community/Kernel/Compile的“替代构建方法:老式Debian方式”部分重新编译内核,以便在用户空间中公开GPIO访问,并打开GPIO的调试模式:

编译完新内核后,我可以首次在/ sys / class / gpio中看到GPIO文件夹。然后,从理论上讲,应该是能够通过写入文件系统来打开/关闭GPIO端口的情况。在http://falsinsoft.blogspot.co.uk/2012/11/access-gpio-from-linux-user-space.html中概述了这种方法。

尝试通过以下方式导出针脚0到255时

echo XX > /sys/class/gpio/export

XX从0到255,我得到以下错误消息

echo: write error: No such device

尝试通过以下方式导出0到255范围外的引脚时

echo XX > /sys/class/gpio/export

我收到以下错误消息

echo: write error: Invalid argument

本教程建议这可能是因为GPIO端口是为另一个程序保留的,并且如果是这样,调试文件(/ sys / kernel / …

embedded embedded-linux sysfs gpio

5
推荐指数
1
解决办法
3292
查看次数

使用 NodeJS 在 Linux 上捕获全局键盘事件

我有一台运行 Node 的无头 Debian ARM 机器。该设备具有硬按钮,这些按钮使用 映射到普通键盘事件gpio-keys

我的目标是从硬按钮以及 Node.js 中的任何附加键盘捕获全局事件。我需要一个解决方案,它可以独立于运行它的终端捕获 keydown/keyup 事件(它将通过 SSH 会话运行)。它不必是跨平台的,只要它适用于 ARM Debian,我就会接受它。

我正在想象直接从任何sysfs必要的属性中读取的东西,但这不是必需的。

谁可以帮我这个事?我被困了一段时间。

linux keyboard-events node.js sysfs

5
推荐指数
1
解决办法
1932
查看次数

如何计算电池充电结束前的剩余时间

我有以下输出:

$ cat /sys/class/power_supply/BAT0/uevent
POWER_SUPPLY_NAME=BAT0
POWER_SUPPLY_TYPE=Battery
POWER_SUPPLY_STATUS=Charging
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=10800000
POWER_SUPPLY_VOLTAGE_NOW=12178000
POWER_SUPPLY_CURRENT_NOW=904000
POWER_SUPPLY_CHARGE_FULL_DESIGN=4042000
POWER_SUPPLY_CHARGE_FULL=4042000
POWER_SUPPLY_CHARGE_NOW=3916000
POWER_SUPPLY_MODEL_NAME=
POWER_SUPPLY_MANUFACTURER=HP
POWER_SUPPLY_SERIAL_NUMBER=
Run Code Online (Sandbox Code Playgroud)

我想计算直到电池充电结束为止的剩余时间。我可以这样做:(POWER_SUPPLY_CHARGE_FULL - POWER_SUPPLY_CHARGE_NOW)/ POWER_SUPPLY_CURRENT_NOW 吗?对于此输出,剩余时间将为: (4042000-3916000) / 904000 = .13938053097345132743 一小时或 8 分钟。这是计算充电结束剩余时间的正确公式吗?

linux-kernel sysfs

5
推荐指数
1
解决办法
3749
查看次数

sysfs属性是否可以在Linux设备驱动程序中使用非数字值?

我正在开发一个Linux设备驱动程序,我必须使用sysfs接口将一串字符传递给它.sysfs属性是否可以接受字符串形式的数据(类似echo "somedata" > sysfs_interface)?

我已经实现了它,它似乎工作正常,但我想确定这是有效的(在内核社区可以接受).

device-driver linux-device-driver linux-kernel sysfs

5
推荐指数
1
解决办法
560
查看次数