关于GPIO导出

Regarding GPIO export

我有一些关于导出 GPIO 的基本问题。

  1. 关于gpio-hog机制: gpio-hog 机制将帮助我们将 GPIO 初始化为 high/low & in/out 在启动期间。 这很好。

所以我的问题是,如果我们占用一个 GPIO,它是否也被导出到 默认用户空间?

  1. 使用较旧的 sysfs 接口,我们将使用“echo x > /sys/class/gpio/export" 将 gpiox 导出到用户空间。

我想知道用较新的版本执行此操作的正确方法是什么 接口?

  1. 要检查是否正在导出 GPIO,我们会看到 /sys/class/gpio 使用 sysfs 接口。

有了更新的字符设备接口,正确的方法是什么 检查哪些 GPIO 导出到用户空间?

根据 0andriy 的评论:

  1. GPIO hog 不适用于此。您所描述的是使用它的(预期的)副作用。 GPIO hog 需要在某些状态下保持孤立的 GPIO 线(OS 没有驱动程序的东西)。它们的生产者和消费者是GPIO控制器本身,不能导出已经有消费者的线。
  2. 使用新的字符设备接口,您不应该导出任何内容,您的程序中需要 GPIO 行的上下文。因此,“导出”将在进程内部完成,当进程完成时,它会自动“取消导出”所有消耗的 GPIO 线。
  3. 使用新接口,您的进程将 IOCTL 获取线路句柄,如果它已被占用,它将失败并出现错误。

稍微扩展一下上面的...

关于检查当前正在使用的线路,lsgpiothe kernel source tree reports that, as does the gpioinfo tool provided by libgpiod中提供。

在这两种情况下,信息都是为​​用户准备的。应用程序只是简单地尝试请求一条线路,如果该线路已在使用中,则会失败并显示 EBUSY