【发布时间】:2017-10-05 01:45:15
【问题描述】:
我正在尝试编写一个输出到 GPIO 引脚 1 秒的脚本。 我发现最好的方法是通过 GPIO sysfs 命令,但我一直随机收到“分段错误”。这主要发生在设置方向时。在 bash 脚本中和通过终端运行时也会发生这种情况。
sudo echo 227 > /sys/class/gpio/export
sudo chmod 777 /sys/class/gpio/gpio227/*
sudo echo "out" > /sys/class/gpio/gpio227/direction # sometimes segmentation fault
sudo echo "1" > /sys/class/gpio/gpio227/value
# wait a bit
sudo echo "out" > /sys/class/gpio/gpio227/direction # almost always segmentation fault
sudo echo "0" > /sys/class/gpio/gpio227/value
我在带有 Ubuntu MATE 1.12.1 和 ARMv7 Processor rev 3 (v7l) 的 ODROID-XU4 上运行它。我也在运行无密码 sudo。
关于为什么会发生这种情况以及如何防止它的任何建议?
编辑:我以为我最初是在 ODROID-XU3 上运行的,但它实际上是 XU4。
【问题讨论】:
-
这个
sudo chmod 777 /sys/class/gpio/gpio227/*到底是为了什么?!除了阅读文档如何与用户空间中的 GPIO 子系统进行通信,特别是使用 low 和 high 而不是单独的命令。最重要的是,您知道按原样切换此 GPIO 时您在做什么吗? -
chmod 777用于启用对 gpio227 文件的写访问,因为它们一开始就不是从它开始的。没有它,在将任何回声运行到方向或值时,我会收到权限错误。我不必使用777,但它更快。我会尝试只运行 low 和 high 看看是否可行。 -
您的 gpio 227 似乎未导出以将其配置为 GPO,这就是您没有写入权限的原因。在尝试覆盖它的属性之前检查硬件引脚的重要性
标签: linux bash linux-device-driver gpio sysfs