GPIO-Hog声明的用途和用法

Lia*_*lly 7 linux linux-device-driver gpio device-tree

问题

  1. gpio-hog声明的目的和用例是什么?
  2. 可以从Userspace与“钩住的” gpio引脚进行接口吗?
  3. 如果无法通过Userspace与“钩住的” gpio引脚进行接口连接,那么是否有任何机制可以在dts文件中配置GPIO引脚以进行Userspace交互?

背景

我正在尝试配置许多(10+)GPIO,以便与Userspace中的低级芯片通信。我已经很容易使用sysfs导出对芯片进行了交谈,但是内核和编程论坛中的文档都让我担心在生产系统中使用这种机制。

阅读更多的内核文档,我阅读了有关gpio-hog声明的信息,这似乎是至少初始配置GPIO的理想机制。从文档中:

GPIO触发是一种机制,提供自动GPIO请求和配置,作为gpio控制器的驱动程序探测功能的一部分。

除了设置正确的低位供应商设置外,我还启用了所需gpio引脚的暂存功能,他们提出了正确的设置。问题在于,gpio似乎是内核拥有的,不能通过任何Userspace工具(例如sysfs或)进行接口libgpiod。这对我来说使猪圈基本上毫无用处,也使我怀疑它的真正目的是什么。我正在libgpiod最后一种探索方式,但是文档表明,这hogging应该是我使用的机制。

Pra*_*Lad 7

猪的意思 - 以防止其他人拥有它的方式获取或使用很多东西

所以基本上 gpio-hog 属性告诉控制器在启动期间将引脚设置为高/低,并且没有其他驱动程序/用户空间会请求它。

如果您打算在用户空间中使用 gpio,则不应使用 gpio-hog

  • 在设备树中有一种方法来设置和锁定引脚的方向似乎是明智的,但随后允许它由用户空间控制(输出)或读取(输入)。对于输出,能够设置初始值,然后让它稍后在用户空间中更改会很有用。例如,在启动时打开电源控制引脚。 (4认同)
  • 例如,假设您希望引脚在启动时始终处于高/低状态。但在很多情况下,只要拿起一个你手边的 Linux 板,看看它的设备树文件,然后看看板的原理图,就会给你更多的例子。 (2认同)