问题标签 [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 投票
0 回答
707 浏览

linux - 有没有人在用户空间通过 GPIO 成功模拟 I2C,并使用 sysfs?

我想用两个 gpio 引脚来模拟 I2C 通信,两个 gpio 引脚已经在/sys/devices/virtual/misc/gpio目录中,它工作正常 --- 当我写入一个引脚时,我可以检测到它的电压变化。

而且我已经编写了实现 I2C 协议的代码,但是效果不佳。

我没有使用 i2c-gpio、i2c-algo-bit 或类似 i2c-dev 模块/驱动程序的东西,只是通过读/写/sys/devices/virtual/misc/gpio/mode/sys/devices/virtual/misc/gpio/pin目录,包括控制时间顺序,但似乎它不起作用。

由于 I2C 对时序有需求,而 Linux 不是实时系统 --- 尤其是来自用户空间。我想知道这种方法是否可行。

如果有人做到了?

0 投票
2 回答
1492 浏览

linux - 如何将设备链接到自定义 sysfs 类?

我正在为几个自定义硬件编写驱动程序。所有设备都通过 PCIe 连接到主机。为方便起见,我想将所有这些自定义设备组合到一个 sysfs 类中(我认为这是可以接受的事情吗?)。不幸的是,LDD3 中的信息已经过时了,我无法找到讨论我正在尝试做什么的当前文档。

创建我的自定义类很容易:

在我的探测调用中,我可以访问struct dev

我的问题是:现在我已经有了课程和开发人员,我如何在两者之间建立联系?

基本上可以满足我的device_create()要求,但是由于我已经struct dev了解我不应该device_create再次调用(即创建新设备)。

我做了更多的跟踪,发现device_add()device_create(), 调用device_add_class_symlinks()(不幸的是没有导出)调用的是这样的:

我直接在我的驱动程序中尝试了类似的方法来创建我想要的链接,但我无法编译它,因为struct subsys_private(类结构中的“p”成员)没有暴露在任何地方?

任何帮助是极大的赞赏!

0 投票
1 回答
365 浏览

linux - 通过 sysfs-pci 驱动映射 CompactPCI 设备

因此,问题可以描述如下:

  1. 我们有 11 个完全相等的 PCI 设备,通过两条 CompactPCI 总线连接,一个连接 6 个,另一个连接 5 个。
  2. 我们正在尝试通过 sysfs 文件系统访问设备的资源,例如: /sys/class/pci_bus/0000:04/device/0000:04:0d.0/resource1. 前 4 个设备允许对其资源进行读/写访问而不会出现问题,但是:
  3. 两条总线的第 5 和第 6 设备都不工作:所有文件都存在,但所有读取操作都返回一堆 FF,无论写入的值如何,所以我不能说写入是否成功。当前 4 个设备中的一个被物理移除时,第 5 个设备开始照常工作,总线上的 6 个设备与 6 个设备相同。看起来它每条总线只能与 4 个设备一起使用,而不是更多。应该注意的是,CompactPCI 允许在总线上一次使用 7 个 PCI 设备,根据规范。
  4. 这不可能真的是硬件问题,因为 Windows 驱动程序(很久以前由我们无权访问的人开发)就可以了。

lspci:

lspci -vv(除了所有 11 台设备的总线编号外,其余均相等):

不知道我是否真的需要向您展示代码,因为它尽可能简单 - 打开文件,然后映射,然后使用生成的指针写入和读取该文件。

所有路径都恢复正确,这是我首先检查的。

dmesg没有关于 PCI 的错误。

0 投票
1 回答
260 浏览

c - 带有 C 和 sysfs 库的串行通信 Arduino-Raspberry 中的错误数据

我正在尝试让 Arduino 和 Raspberry 进行交流。我在 Raspberry 上有一个使用 sysfs 库和一个 C-Arduino 程序的 C 程序。

我做什么: Arduino 已经有他自己编译的(在同一个 Raspberry 上)程序,而不是我在 raspberry 上编译程序并启动它。

问题:我在 Raspberry 上获取数据时延迟了一个 Raspberry 输入,正如您从下面的代码中看到的那样。

我第一次总是OFFXX

Arduino代码:

和覆盆子代码:

我的 USB 电缆和 GPIO 都有这个问题

编辑:另一个问题:为什么 OUTPUT 记得之前初始化的最后一个字符?

0 投票
1 回答
3161 浏览

sysfs - 在 dev/ 中创建一个 sysfs 属性组和对应的设备

我正在为 PCIe 卡创建 Linux 设备驱动程序。我在创建相应的 sysfs 条目时遇到了问题。起初,我创建了一个包含所需的属性组

等等,然后我添加了 store() 和 show() 函数。一切都运行良好,并创建了所请求的类

/sys/bus/pci/drivers//模块/驱动程序/pci:/0000:01:00.0

/ 问题是 /dev/ 中没有自动创建条目!

我花了几个小时在网上寻找,我发现的唯一解决方案是使用:

但这会在 /sysfs/devices/virtual/... 中创建另一个条目,恕我直言,这很丑陋且完全没有必要。

我想要的是拥有我的一组属性和 /dev/ 中的相应条目

我怎样才能做到这一点?即使是指向这样做的示例的指针也会非常有帮助(我已经找了几个小时,没有任何运气:()

非常感谢提前!!!

答:我在选择司机级别时犯了一个愚蠢的错误。正确设置 pci 驱动程序解决了这个问题。

0 投票
1 回答
534 浏览

linux - 从 gpio 输入读取的字节数为零

尝试读取 gpio 输出引脚时出现一些奇怪的行为。我知道第一次读取返回 1(读取 1 个字节),但从同一个 gpio 读取的所有下一次读取都返回 0。我认为它应该始终读取 1,因为总是有一些东西要从输入引脚读取。

从 gpio 输入读取一个字节是否总是返回 1 ?

0 投票
1 回答
2843 浏览

linux - 如何使用 linux 设备模型和 /sys 文件系统?

我是开发Linux驱动程序的新手。

传统上,如果我想创建 char 设备,我只需要实现read writeioctl功能,并通过register_chrdev_region相应的Major device ID. 然后mknod用来创建那个的设备文件Major device ID。然后read write open在用户空间调用就会被内核调用相应的函数。

但是现在我正在学习Linux device modeland sys filesystem,它是在内核 2.6 中添加的。如果可能的话,我被告知不要使用/dev filesystem,因为 linux 现在有一个很好的设备模型来处理设备和驱动程序。这让我很困惑,所以我将我的困惑总结为一些问题:

  1. 如何在 /sys 中创建字符设备?更具体地说,我如何创建一个空设备,就像/dev/null
  2. 如何从用户空间调用我的 char 设备驱动程序函数?
  3. 听说udev是基于sys filesystem/dev. 为什么?既然有人告诉我“如果可能,不要使用/dev filesystem”,为什么要udev使用/sys在中创建文件/dev
  4. 文件中是否sys有类似char device fileor的概念block device
  5. /devopen write从用户空间最终将映射到file operation structure我定义的函数,那么当我打开或写入文件时会调用哪些函数/ssy
0 投票
1 回答
569 浏览

linux - 如何在没有 sysfs 的 linux 中查看时钟源?

我知道对于一个常见的Linux操作系统,可以通过命令查看clocksource cat /sys/devices/system/clocksource/clocksource0/available_clocksource

但是我有一个内核版本为 2.6.27.7 的 Linux 系统,里面没有 /sys/ 文件夹。那么如何查看使用了哪个时钟源呢?

提前谢谢。

0 投票
0 回答
1008 浏览

macos - 在知道主要和次要编号时确定与设备关联的 Mac 驱动程序

当设备的主要和次要编号已知时,Mac OS X 中是否有一种方法可以确定 /dev 目录中的特定设备与哪个设备驱动程序相关联?

我有一个连接到我的计算机的 FTDI 设备,需要知道将使用哪个驱动程序。设备的主要和次要编号是已知的:

输出是:

18, 8 告诉我们主要数字是 18,次要数字是 8。是否有等价于

哪个可以显示与设备关联的驱动程序?

0 投票
2 回答
476 浏览

linux - 将 XInput2 设备映射到 sysfs 节点

如何将 XInput2 设备(例如由 报告的XIQueryDevice)转换为适当的sysfs节点?该设备是通用 HID 设备,由evdev输入驱动程序处理。

我知道我可以得到name设备的。我也许可以查看Xorg.0.log并尝试找到添加此设备时的适当日志消息,希望它提到与该/dev/input/event*设备关联的设备节点。或者我可以查看 中的所有输入事件sysfs,查找具有该名称的事件,并希望该名称是唯一的并且与通过 XInput 报告的名称相同。但我希望有比这两种方法更清洁的解决方案。