我有一个嵌入式系统。我可以使用外壳命令管理 I/O。此命令更改 GPIO #48 的状态:/sys/class/gpio# echo 48 > /sys/class/gpio/export/sys/class/gpio# echo out > /sys/class/gpio/gpio48/direction/sys/class/gpio# echo high > /sys/class/gpio/gpio48/direction/sys/class/gpio# echo low > /sys/class/gpio/gpio48/direction如何有效地管理戈兰的 I/O?是否可以在不通过shell命令的情况下管理它们?
1 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
在Linux上,GPIO接口通过层次结构中的文件系统导出,因此在shell示例中,您只需要将数据写入这些文件,如下所示:sys/sys/class/gpio
// To export pin 48 (same as echo 48 > /sys/class/gpio/export)
ioutil.WriteFile("/sys/class/gpio/export", []byte("48"), 0666)
...
根据您的平台和需求,您可能需要考虑一些预先存在的软件包(例如,树莓派或periph
的go-rpio
,它更通用,支持比GPIO更多)。
如果你想要比写入文件更有效/更快的解决方案,你也可以考虑内存映射GPIO访问,你基本上通过内核给出的内存范围直接访问GPIO外围。这需要对目标平台有更深入的了解(了解其GPIO寄存器及其映射)。您可以在这篇博客文章中详细阅读有关该方法的信息。sysfs
编辑:正如@0andriy在他的评论中指出的那样,已被弃用。这适用于你上面的Bash示例和我的答案如何在Go中做同样的事情。取而代之的是引入了一个新的ABI,并与之交互。https://github.com/warthog618/gpiod,这里提供前往港口。gpio
syssfs
- 1 回答
- 0 关注
- 84 浏览
添加回答
举报
0/150
提交
取消