问题标签 [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.
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 不是实时系统 --- 尤其是来自用户空间。我想知道这种方法是否可行。
如果有人做到了?
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”成员)没有暴露在任何地方?
任何帮助是极大的赞赏!
linux - 通过 sysfs-pci 驱动映射 CompactPCI 设备
因此,问题可以描述如下:
- 我们有 11 个完全相等的 PCI 设备,通过两条 CompactPCI 总线连接,一个连接 6 个,另一个连接 5 个。
- 我们正在尝试通过 sysfs 文件系统访问设备的资源,例如:
/sys/class/pci_bus/0000:04/device/0000:04:0d.0/resource1
. 前 4 个设备允许对其资源进行读/写访问而不会出现问题,但是: - 两条总线的第 5 和第 6 设备都不工作:所有文件都存在,但所有读取操作都返回一堆 FF,无论写入的值如何,所以我不能说写入是否成功。当前 4 个设备中的一个被物理移除时,第 5 个设备开始照常工作,总线上的 6 个设备与 6 个设备相同。看起来它每条总线只能与 4 个设备一起使用,而不是更多。应该注意的是,CompactPCI 允许在总线上一次使用 7 个 PCI 设备,根据规范。
- 这不可能真的是硬件问题,因为 Windows 驱动程序(很久以前由我们无权访问的人开发)就可以了。
lspci:
lspci -vv(除了所有 11 台设备的总线编号外,其余均相等):
不知道我是否真的需要向您展示代码,因为它尽可能简单 - 打开文件,然后映射,然后使用生成的指针写入和读取该文件。
所有路径都恢复正确,这是我首先检查的。
dmesg没有关于 PCI 的错误。
c - 带有 C 和 sysfs 库的串行通信 Arduino-Raspberry 中的错误数据
我正在尝试让 Arduino 和 Raspberry 进行交流。我在 Raspberry 上有一个使用 sysfs 库和一个 C-Arduino 程序的 C 程序。
我做什么: Arduino 已经有他自己编译的(在同一个 Raspberry 上)程序,而不是我在 raspberry 上编译程序并启动它。
问题:我在 Raspberry 上获取数据时延迟了一个 Raspberry 输入,正如您从下面的代码中看到的那样。
我第一次总是OFFXX
Arduino代码:
和覆盆子代码:
我的 USB 电缆和 GPIO 都有这个问题
编辑:另一个问题:为什么 OUTPUT 记得之前初始化的最后一个字符?
sysfs - 在 dev/ 中创建一个 sysfs 属性组和对应的设备
我正在为 PCIe 卡创建 Linux 设备驱动程序。我在创建相应的 sysfs 条目时遇到了问题。起初,我创建了一个包含所需的属性组
等等,然后我添加了 store() 和 show() 函数。一切都运行良好,并创建了所请求的类
/sys/bus/pci/drivers//模块/驱动程序/pci:/0000:01:00.0
/ 问题是 /dev/ 中没有自动创建条目!
我花了几个小时在网上寻找,我发现的唯一解决方案是使用:
但这会在 /sysfs/devices/virtual/... 中创建另一个条目,恕我直言,这很丑陋且完全没有必要。
我想要的是拥有我的一组属性和 /dev/ 中的相应条目
我怎样才能做到这一点?即使是指向这样做的示例的指针也会非常有帮助(我已经找了几个小时,没有任何运气:()
非常感谢提前!!!
抢
答:我在选择司机级别时犯了一个愚蠢的错误。正确设置 pci 驱动程序解决了这个问题。
linux - 从 gpio 输入读取的字节数为零
尝试读取 gpio 输出引脚时出现一些奇怪的行为。我知道第一次读取返回 1(读取 1 个字节),但从同一个 gpio 读取的所有下一次读取都返回 0。我认为它应该始终读取 1,因为总是有一些东西要从输入引脚读取。
从 gpio 输入读取一个字节是否总是返回 1 ?
linux - 如何使用 linux 设备模型和 /sys 文件系统?
我是开发Linux驱动程序的新手。
传统上,如果我想创建 char 设备,我只需要实现read
write
和ioctl
功能,并通过register_chrdev_region
相应的Major device ID
. 然后mknod
用来创建那个的设备文件Major device ID
。然后read
write
open
在用户空间调用就会被内核调用相应的函数。
但是现在我正在学习Linux device model
and sys filesystem
,它是在内核 2.6 中添加的。如果可能的话,我被告知不要使用/dev filesystem
,因为 linux 现在有一个很好的设备模型来处理设备和驱动程序。这让我很困惑,所以我将我的困惑总结为一些问题:
- 如何在 /sys 中创建字符设备?更具体地说,我如何创建一个空设备,就像
/dev/null
? - 如何从用户空间调用我的 char 设备驱动程序函数?
- 听说
udev
是基于sys filesystem
在/dev
. 为什么?既然有人告诉我“如果可能,不要使用/dev filesystem
”,为什么要udev
使用/sys
在中创建文件/dev
? - 文件中是否
sys
有类似char device file
or的概念block device
? - 在
/dev
,open
write
从用户空间最终将映射到file operation structure
我定义的函数,那么当我打开或写入文件时会调用哪些函数/ssy
?
linux - 如何在没有 sysfs 的 linux 中查看时钟源?
我知道对于一个常见的Linux操作系统,可以通过命令查看clocksource
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
但是我有一个内核版本为 2.6.27.7 的 Linux 系统,里面没有 /sys/ 文件夹。那么如何查看使用了哪个时钟源呢?
提前谢谢。
macos - 在知道主要和次要编号时确定与设备关联的 Mac 驱动程序
当设备的主要和次要编号已知时,Mac OS X 中是否有一种方法可以确定 /dev 目录中的特定设备与哪个设备驱动程序相关联?
我有一个连接到我的计算机的 FTDI 设备,需要知道将使用哪个驱动程序。设备的主要和次要编号是已知的:
输出是:
18, 8 告诉我们主要数字是 18,次要数字是 8。是否有等价于
哪个可以显示与设备关联的驱动程序?
linux - 将 XInput2 设备映射到 sysfs 节点
如何将 XInput2 设备(例如由 报告的XIQueryDevice
)转换为适当的sysfs
节点?该设备是通用 HID 设备,由evdev
输入驱动程序处理。
我知道我可以得到name
设备的。我也许可以查看Xorg.0.log
并尝试找到添加此设备时的适当日志消息,希望它提到与该/dev/input/event*
设备关联的设备节点。或者我可以查看 中的所有输入事件sysfs
,查找具有该名称的事件,并希望该名称是唯一的并且与通过 XInput 报告的名称相同。但我希望有比这两种方法更清洁的解决方案。