问题标签 [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.
c - sysfs、ifreq、IOCTL 或 ??? 以编程方式监控网络状态
我们有一个运行 BusyBox Linux(内核 2.6.x)的嵌入式 SoC,当网络连接断开或出现时,我们需要监控或至少及时通知(捕捉其他事件会很好,但不是必需的) .
我花了很长时间在谷歌上搜索和阅读 SO 线程,根据特定操作系统上手头的确切任务和月相等,似乎有很多不同的答案。
我们的具体标准是:
- 我们从 C 程序内部查看,因此 C 代码优于命令行调用。
- 尽管接口始终存在,但我们不能保证它是否已经启动或曾经启动(我看过一些示例的评论,这些示例仅在界面处于
up
即使链接状态时也有效down
) - 最好不必轮询,而是在状态更改消息发生时发送/捕获它们。我相信内核可能已经从驱动程序中获得了这样的消息,但我不确定是否有什么可以挂钩的?
我已将可能的看似答案缩小到几个候选人,但无法确定哪个是最好的(开销最小,最可靠,在未来版本中最不可能中断):
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)。
相关问题
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)。
相关问题
linux-kernel - 轮询 sysfs 和内核模块
我已经阅读了很多关于同一主题的帖子,但我无法找出我的内核模块中的 sysfs 实现到底出了什么问题。我正在尝试在轮询中阻止用户空间程序,直到 sysfs 文件中的值发生变化。大多数人似乎没有被阻止,我似乎无法摆脱我的封锁。以下是相关代码:
内核模块:
}
相关用户空间代码:
我在后台运行我的用户空间代码 ( ./test &
),然后在 sysfs 文件中回显一个新值以进行中断。我希望我的用户空间程序在值更改时解除阻塞并返回。我在这里做错了什么?
编辑:
linux - 使用 NodeJS 在 Linux 上捕获全局键盘事件
我有一台运行 Node 的无头 Debian ARM 机器。该设备有硬按钮,使用 . 映射到普通键盘事件gpio-keys
。
我的目标是从 Node.js 中的硬按钮和任何附加键盘捕获全局事件。我需要一个可以独立于运行它的终端捕获 keydown/keyup 事件的解决方案(它将通过 SSH 会话运行)。它不必是跨平台的,只要它可以在 ARM Debian 上运行,我就会接受它。
我正在想象直接从任何sysfs
必要的属性中读取的东西,但这不是必需的。
谁可以帮我这个事?我被困了一段时间。
android - Android sysfs 读取
我正在尝试从 /sys/bus/ 下已存在的 sysfs 文件中读取和显示数据,该文件是独立于我正在尝试开发的 android 应用程序创建的。
我无法找到有关如何读取尚未在 android 应用程序中本地创建的文件的文档。如何从已经存在的内核文件中读取?似乎 InputStream 和类似的对象和相关方法仅用于读取本地文件。
linux-kernel - 虚拟文件系统和系统调用有什么区别?
据我了解,内核主要为用户空间提供两个接口来在内核中执行某些操作,它们是系统调用和虚拟文件系统(procfs、sysfs 等)。我在一本书中读到,内部 VFS 也使用系统调用。
所以我想知道,这两者究竟是如何联系起来的?在什么情况下我们应该使用 VFS 而不是系统调用,反之亦然。
embedded-linux - 在嵌入式设备上使用 sysfs 替代 /dev
到目前为止,专门针对嵌入式 Linux 的书籍描述了使用 /dev 节点从用户空间与设备进行通信。然而,我看到越来越多的设备通过 sysfs 与驱动程序通信。我找不到任何明确的解释如何做到这一点。这是否与通过读/写 fops 一样工作?
任何教程/解释?我拥有 Linux 设备驱动程序第 3 版,它仅描述了用于与驱动程序交互的 /dev 接口和 /sysfs 以显示暴露一些信息。
sysfs - 我们可以在没有 sysfs 的情况下使用文件系统吗?
我们正在尝试使用在文件系统和内核中禁用 sysfs 的自定义 linux。我想问一下如何使用驱动程序,或者在使用使用 sysfs 的驱动程序时需要进行哪些更改。
谢谢,冉
linux - 我应该将我的板电压监视器驱动程序放在 Linux 文件系统的哪个位置?
我的知识水平
嗨,我是 Linux 新手,一直在尽我所能阅读 Linux 设备模型和文件系统。对不起,如果我没有词汇来询问/谷歌我在寻找什么(我来自 PCB 设计师背景)。我在这里感觉有点过头了。
我读过的一些文档:
- http://www.tldp.org/LDP/lkmpg/2.6/html/lkmpg.html(这里只讲/dev)
- https://www.kernel.org/doc/Documentation/sysfs-rules.txt(这种无政府状态让我很难过)
问题
我正在寻找为我的各种 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 之类的东西?