为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Linux 嵌入式系统上使用高浪管理 I/O?

如何在 Linux 嵌入式系统上使用高浪管理 I/O?

Go
缥缈止盈 2022-10-04 14:13:17
我有一个嵌入式系统。我可以使用外壳命令管理 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)

...

根据您的平台和需求,您可能需要考虑一些预先存在的软件包(例如,树莓派或periphgo-rpio,它更通用,支持比GPIO更多)。

如果你想要比写入文件更有效/更快的解决方案,你也可以考虑内存映射GPIO访问,你基本上通过内核给出的内存范围直接访问GPIO外围。这需要对目标平台有更深入的了解(了解其GPIO寄存器及其映射)。您可以在这篇博客文章中详细阅读有关该方法的信息sysfs

编辑:正如@0andriy在他的评论中指出的那样,已被弃用。这适用于你上面的Bash示例和我的答案如何在Go中做同样的事情。取而代之的是引入了一个新的ABI,并与之交互。https://github.com/warthog618/gpiod,这里提供前往港口。gpiosyssfs


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信