关于GPIO导出
Regarding GPIO export
我有一些关于导出 GPIO 的基本问题。
- 关于gpio-hog机制:
gpio-hog 机制将帮助我们将 GPIO 初始化为
high/low & in/out 在启动期间。
这很好。
所以我的问题是,如果我们占用一个 GPIO,它是否也被导出到
默认用户空间?
- 使用较旧的 sysfs 接口,我们将使用“echo x >
/sys/class/gpio/export" 将 gpiox 导出到用户空间。
我想知道用较新的版本执行此操作的正确方法是什么
接口?
- 要检查是否正在导出 GPIO,我们会看到
/sys/class/gpio 使用 sysfs 接口。
有了更新的字符设备接口,正确的方法是什么
检查哪些 GPIO 导出到用户空间?
根据 0andriy 的评论:
- GPIO hog 不适用于此。您所描述的是使用它的(预期的)副作用。 GPIO hog 需要在某些状态下保持孤立的 GPIO 线(OS 没有驱动程序的东西)。它们的生产者和消费者是GPIO控制器本身,不能导出已经有消费者的线。
- 使用新的字符设备接口,您不应该导出任何内容,您的程序中需要 GPIO 行的上下文。因此,“导出”将在进程内部完成,当进程完成时,它会自动“取消导出”所有消耗的 GPIO 线。
- 使用新接口,您的进程将 IOCTL 获取线路句柄,如果它已被占用,它将失败并出现错误。
稍微扩展一下上面的...
关于检查当前正在使用的线路,lsgpio
在the kernel source tree reports that, as does the gpioinfo
tool provided by libgpiod中提供。
在这两种情况下,信息都是为用户准备的。应用程序只是简单地尝试请求一条线路,如果该线路已在使用中,则会失败并显示 EBUSY
。
我有一些关于导出 GPIO 的基本问题。
- 关于gpio-hog机制: gpio-hog 机制将帮助我们将 GPIO 初始化为 high/low & in/out 在启动期间。 这很好。
所以我的问题是,如果我们占用一个 GPIO,它是否也被导出到 默认用户空间?
- 使用较旧的 sysfs 接口,我们将使用“echo x > /sys/class/gpio/export" 将 gpiox 导出到用户空间。
我想知道用较新的版本执行此操作的正确方法是什么 接口?
- 要检查是否正在导出 GPIO,我们会看到 /sys/class/gpio 使用 sysfs 接口。
有了更新的字符设备接口,正确的方法是什么 检查哪些 GPIO 导出到用户空间?
根据 0andriy 的评论:
- GPIO hog 不适用于此。您所描述的是使用它的(预期的)副作用。 GPIO hog 需要在某些状态下保持孤立的 GPIO 线(OS 没有驱动程序的东西)。它们的生产者和消费者是GPIO控制器本身,不能导出已经有消费者的线。
- 使用新的字符设备接口,您不应该导出任何内容,您的程序中需要 GPIO 行的上下文。因此,“导出”将在进程内部完成,当进程完成时,它会自动“取消导出”所有消耗的 GPIO 线。
- 使用新接口,您的进程将 IOCTL 获取线路句柄,如果它已被占用,它将失败并出现错误。
稍微扩展一下上面的...
关于检查当前正在使用的线路,lsgpio
在the kernel source tree reports that, as does the gpioinfo
tool provided by libgpiod中提供。
在这两种情况下,信息都是为用户准备的。应用程序只是简单地尝试请求一条线路,如果该线路已在使用中,则会失败并显示 EBUSY
。