Answers:
sysfs
已弃用,并已替换为libgpiod
。
https://www.beyondlogic.org/an-introduction-to-chardev-gpio-and-libgpiod-on-the-raspberry-pi/
互动是与/dev/gpiochipx
而不是/sys/class/gpio
。
(对我而言)唯一明显的改进是,GPIO事件现在具有时间戳。
到目前为止,我看到的最有用的指导是Linus Walleij在2016年的YouTube演讲视频。他当时是Linux内核中GPIO子系统的维护者。
https://www.youtube.com/watch?v=lQRCDl0tFiQ
讨论从内核空间开始,然后通过libgpiod库移至用户空间。
在我Pi3B运行巴斯特,很容易的apt-get安装GPIOD,然后#include <linux/gpio.h>
在标题中,与开放式()和ioctl内核库()命令一起:<sys/stat.h>
,<sys/types.h>
,<fcntl.h>
,<sys/ioctl.h>
和<string.h>
使的strcpy()。这使我可以运行演讲中的示例。
如果这仍然是首选方法以及任何更新或改进,我将很感兴趣。
/sys/class/gpio/export
尽管大多数库可以使用内核服务,但它们并不通过直接访问硬件与GPIO引脚进行交互。当然,WiringPi和AFAIK Pigpiod可直接访问SoC寄存器。