【发布时间】:2019-01-27 01:44:15
【问题描述】:
我正在使用 SAMA5D27 SoM1 Ek 板(Microchip)并且正在使用Yocto。
我的 linux-at91 是 4.14 版本。
在这个 linux-at91 内核中默认sysfs gpio export 和用户空间控制支持被删除。
如何在 sysfs 中启用导出 gpio?
【问题讨论】:
标签: linux-kernel linux-device-driver embedded-linux bsp
我正在使用 SAMA5D27 SoM1 Ek 板(Microchip)并且正在使用Yocto。
我的 linux-at91 是 4.14 版本。
在这个 linux-at91 内核中默认sysfs gpio export 和用户空间控制支持被删除。
如何在 sysfs 中启用导出 gpio?
【问题讨论】:
标签: linux-kernel linux-device-driver embedded-linux bsp
直截了当(但不好)的答案:您需要在启用 CONFIG_GPIO_SYSFS 选项 (=y) 的情况下重建内核。
好答案:通过 sysfs 使用 GPIO 现在被认为已过时(从 2008 年 7 月开始),不鼓励使用它。这就是默认情况下它在内核中被禁用的原因(在 v4.10 中)。请参阅 Linus Walleij(Linux 内核中的 GPIO 维护者)的this commit message:
ARM: defconfig: drop GPIO_SYSFS on multiplatforms
The sysfs ABI to GPIO is marked obsolete and should not be
encouraged. Users should be encouraged to switch to using the
character device.
Let's begin by removing it from the multi defconfigs. Then
as time goes by I can aggressively remove it from other
defconfigs.
所以基本上现在建议使用/dev/gpiochip* 字符设备文件进行GPIO 操作(而不是sysfs 方式)。例如,您可以从 tools/gpio/ 构建用户空间实用程序,并使用它们通过该字符设备测试 GPIO。您可能想要编写一些自定义用户空间应用程序以通过字符设备使用 GPIO,以完成您的特定任务。阅读Documentation/ABI/testing/gpio-cdev 文件了解详情。这样你就不需要重建内核了。此外,旧的 sysfs ABI 将在 2020 年被删除,如 here 所述。
【讨论】:
libgpiod,以帮助编写用户空间应用程序。