问题标签 [sysfs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
963 浏览

c - sysfs、ifreq、IOCTL 或 ??? 以编程方式监控网络状态

我们有一个运行 BusyBox Linux(内核 2.6.x)的嵌入式 SoC,当网络连接断开或出现时,我们需要监控或至少及时通知(捕捉其他事件会很好,但不是必需的) .

我花了很长时间在谷歌上搜索和阅读 SO 线程,根据特定操作系统上手头的确切任务和月相等,似乎有很多不同的答案。

我们的具体标准是:

  • 我们从 C 程序内部查看,因此 C 代码优于命令行调用。
  • 尽管接口始终存在,但我们不能保证它是否已经启动或曾经启动(我看过一些示例的评论,这些示例仅在界面处于up即使链接状态时也有效down
  • 最好不必轮询,而是在状态更改消息发生时发送/捕获它们。我相信内核可能已经从驱动程序中获得了这样的消息,但我不确定是否有什么可以挂钩的?

我已将可能的看似答案缩小到几个候选人,但无法确定哪个是最好的(开销最小,最可靠,在未来版本中最不可能中断):

  • cat sys/class/net/eth0/operstate
  • cat sys/class/net/eth0/carrier (我无法很好地解释这两者之间的区别)
  • 根据此处和此处的答案(看起来更整洁),使用 ifreq 或各种 ioctl 调用序列来读取套接字状态(对我来说看起来有点乱)。
  • 以某种方式捕获状态更改消息???
0 投票
1 回答
5080 浏览

embedded - 在什么情况下 /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

对于从 0 到 255 的 XX,我收到以下错误消息

echo: write error: No such device

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

 背景

  • 主板:Intel NM70芯片组
  • 处理器:C1037U处理器
  • 操作系统:薄荷 4 Linux
  • 内核版本:3.8.0
  • GPIO接口:sysfs

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

我已成功遵循https://help.ubuntu.com/community/Kernel/Compile的“Alternate Build Method: The Old-Fashioned Debian Way”部分重新编译内核,以便在用户空间中公开 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

对于从 0 到 255 的 XX,我收到以下错误消息

echo: write error: No such device

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

echo XX > /sys/class/gpio/export

我收到以下错误消息

echo: write error: Invalid argument

本教程建议这可能是因为 GPIO 端口是为另一个程序保留的,如果是这样,调试文件 (/sys/kernel/debug/gpio) 将能够显示它们的保留位置。

但是,/sys/kernel/debug/gpio 是空的。

我可以在 BIOS 中查看和控制 GPIO 引脚(将引脚更改为输入或输出 HIGH/LOW)。

相关问题

写入 /sys/class/gpio/export 失败

启用上拉 GPIO

0 投票
0 回答
3230 浏览

linux - 如何检查内核是否支持硬件上的 GPIO?

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

如何检查内核是否支持硬件上的 GPIO?

背景

  • 主板:Intel NM70芯片组
  • 处理器:C1037U处理器
  • 操作系统:薄荷 4 Linux
  • 内核版本:3.8.0
  • GPIO接口:sysfs

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

我已成功遵循https://help.ubuntu.com/community/Kernel/Compile的“Alternate Build Method: The Old-Fashioned Debian Way”部分重新编译内核,以便在用户空间中公开 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

对于从 0 到 255 的 XX,我收到以下错误消息

echo: write error: No such device

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

echo XX > /sys/class/gpio/export

我收到以下错误消息

echo: write error: Invalid argument

本教程建议这可能是因为 GPIO 端口是为另一个程序保留的,如果是这样,调试文件 (/sys/kernel/debug/gpio) 将能够显示它们的保留位置。

但是,/sys/kernel/debug/gpio 是空的。

我可以在 BIOS 中查看和控制 GPIO 引脚(将引脚更改为输入或输出 HIGH/LOW)。

相关问题

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

写入 /sys/class/gpio/export 失败

0 投票
0 回答
1586 浏览

linux-kernel - 轮询 sysfs 和内核模块

我已经阅读了很多关于同一主题的帖子,但我无法找出我的内核模块中的 sysfs 实现到底出了什么问题。我正在尝试在轮询中阻止用户空间程序,直到 sysfs 文件中的值发生变化。大多数人似乎没有被阻止,我似乎无法摆脱我的封锁。以下是相关代码:

内核模块:

}

相关用户空间代码:

我在后台运行我的用户空间代码 ( ./test &),然后在 sysfs 文件中回显一个新值以进行中断。我希望我的用户空间程序在值更改时解除阻塞并返回。我在这里做错了什么?

编辑:

0 投票
1 回答
2055 浏览

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

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

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

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

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

0 投票
0 回答
2036 浏览

android - Android sysfs 读取

我正在尝试从 /sys/bus/ 下已存在的 sysfs 文件中读取和显示数据,该文件是独立于我正在尝试开发的 android 应用程序创建的。

我无法找到有关如何读取尚未在 android 应用程序中本地创建的文件的文档。如何从已经存在的内核文件中读取?似乎 InputStream 和类似的对象和相关方法仅用于读取本地文件。

0 投票
1 回答
1242 浏览

linux-kernel - 虚拟文件系统和系统调用有什么区别?

据我了解,内核主要为用户空间提供两个接口来在内核中执行某些操作,它们是系统调用和虚拟文件系统(procfs、sysfs 等)。我在一本书中读到,内部 VFS 也使用系统调用。

所以我想知道,这两者究竟是如何联系起来的?在什么情况下我们应该使用 VFS 而不是系统调用,反之亦然。

0 投票
1 回答
252 浏览

embedded-linux - 在嵌入式设备上使用 sysfs 替代 /dev

到目前为止,专门针对嵌入式 Linux 的书籍描述了使用 /dev 节点从用户空间与设备进行通信。然而,我看到越来越多的设备通过 sysfs 与驱动程序通信。我找不到任何明确的解释如何做到这一点。这是否与通过读/写 fops 一样工作?

任何教程/解释?我拥有 Linux 设备驱动程序第 3 版,它仅描述了用于与驱动程序交互的 /dev 接口和 /sysfs 以显示暴露一些信息。

0 投票
1 回答
74 浏览

sysfs - 我们可以在没有 sysfs 的情况下使用文件系统吗?

我们正在尝试使用在文件系统和内核中禁用 sysfs 的自定义 linux。我想问一下如何使用驱动程序,或者在使用使用 sysfs 的驱动程序时需要进行哪些更改。

谢谢,冉

0 投票
0 回答
87 浏览

linux - 我应该将我的板电压监视器驱动程序放在 Linux 文件系统的哪个位置?

我的知识水平

嗨,我是 Linux 新手,一直在尽我所能阅读 Linux 设备模型和文件系统。对不起,如果我没有词汇来询问/谷歌我在寻找什么(我来自 PCB 设计师背景)。我在这里感觉有点过头了。

我读过的一些文档:

问题

我正在寻找为我的各种 PCB 轨电压监视器实现驱动程序。ADC 值将由 MCU 读取,该 MCU 将通过 SPI 与我的主处理器通信。这个 MCU 还进行 GPIO 控制,我已经为此编写了一个工作 /sys/class/GPIO 驱动程序,但老实说我并不完全理解。

所以我在考虑 ADC 方面,我也应该在 /sys 下的某个地方,但我不确定在哪里。/设备?/班级?

我的理解是我可以但不应该在 /dev 或 /proc 中构建,因为它们更多地用于驱动器和 CPU 之类的东西。

我正在考虑的一个选项是制作一个自定义类。也许 /sys/class/boardvoltage?但我认为这一定是开发人员制作的通用驱动板,并且已经有一个具有适当属性的类。

奖金问题

更广泛地说,驱动程序开发人员应该如何知道每个类的用途?一个人如何学习访问每种类型的课程的各种方式?例如,当 /dev 驱动程序读取和写入时,GPIO 会被“cat”或“echo”。我将如何学习如何运行 /sys/class/leds 之类的东西?