通过C控制GPIO引脚


10

大部分的库,在多国语言,与GPIO引脚通过互动/sys/class/gpio/export/sys/class/gpio/import/sys/class/gpio/gpio10/value,等。然而Linux内核文件明确规定这是做事的传统方式。

什么是非传统的做事方式?

如果我对内核空间的理解正确,则可以将这些功能标准内核驱动程序用于常见的GPIO任务。

我将如何使用用户空间?是否有用于非旧版的Sysfs接口?

PS:我知道内核文档指出,出于兼容性原因,尽管认为已弃用基于旧整数的接口仍然可用。但是,我对使用该旧代码不感兴趣。


1
/sys/class/gpio/export尽管大多数库可以使用内核服务,但它们并不通过直接访问硬件与GPIO引脚进行交互。当然,WiringPi和AFAIK Pigpiod可直接访问SoC寄存器。
Milliways

Answers:



0

到目前为止,我看到的最有用的指导是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()。这使我可以运行演讲中的示例。

如果这仍然是首选方法以及任何更新或改进,我将很感兴趣。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.