分段故障sysfs gpio linux odroid

分段故障sysfs gpio linux odroid,linux,bash,linux-device-driver,gpio,sysfs,Linux,Bash,Linux Device Driver,Gpio,Sysfs,我正在尝试编写一个脚本,输出到GPIO引脚1秒。 我发现最好的方法是通过gpiosysfs命令来实现这一点,但我总是随机地得到“分段错误”。这主要发生在设置方向时。在bash脚本和终端中运行时也会发生这种情况 sudo echo 227 > /sys/class/gpio/export sudo chmod 777 /sys/class/gpio/gpio227/* sudo echo "out" > /sys/class/gpio/gpio227/direction # somet

我正在尝试编写一个脚本,输出到GPIO引脚1秒。 我发现最好的方法是通过gpiosysfs命令来实现这一点,但我总是随机地得到“分段错误”。这主要发生在设置方向时。在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 
我正在一个ODROID-XU4上运行这个程序,它有Ubuntu MATE 1.12.1和ARMv7处理器rev 3(v7l)。我也在运行无密码sudo

有没有关于为什么会发生这种情况以及如何预防的建议


编辑:我原以为我是在ODROID-XU3上运行的,但实际上它是一个XU4。

分段错误通常发生在用户空间程序读取或写入非法内存地址时。对于简单且经过良好测试的程序(如echo),这种情况并不常见


这可能是由于内核/GPIO驱动程序有缺陷,甚至可能是硬件损坏造成的。我建议直接以root用户身份运行该命令,以确保是echo导致了分段错误,然后使用strace确定分段错误是否总是发生在同一位置…

在测试了设置GPIO值的其他方法后,我发现其他框架似乎工作得很好,没有分段错误

总之,使用echo写入GPIO引脚是分段错误的根源。我不知道为什么

我的解决方法是使用node的gpio模块,或者对Odroid使用wiringPi,因为它们似乎工作得很好


发布这篇文章让人们知道。

这到底是什么
sudo chmod 777/sys/class/gpio/gpio227/*
?!除此之外,请阅读如何在用户空间中与GPIO子系统通信的文档,特别是使用low和high命令,而不是单独的命令。除此之外,您是否确切地知道在切换此GPIO时正在执行的操作?
chmod 777
用于启用gpio227文件的写访问,因为它们不是从它开始的。如果没有它,我在运行指向方向或值的任何回显时会出现权限错误。我不必使用
777
,但它只是更快而已。我将尝试运行低和高,看看是否有效。似乎您的gpio 227没有导出以将其配置为GPO,这就是您没有写入权限的原因。在尝试覆盖硬件引脚的属性之前,请检查其重要性