分割错误sysfs gpio linux odroid

问题描述:

我想写一个输出到GPIO引脚1秒的脚本。 我发现最好的方法是通过GPIO sysfs命令,但我一直随机地收到“Segmentation Fault”。这主要发生在设定方向时。在bash脚本和终端中运行时也会发生这种情况。分割错误sysfs gpio linux odroid

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。通常当用户空间程序读取或写入一个非法存储器地址发生

+0

这是什么'sudo chmod 777/sys/class/gpio/gpio227/*'for ?!除此之外,请阅读文档如何与用户空间中的GPIO子系统进行通信,特别是使用**低**和**高**代替单独的命令。最重要的是,您是否确切地知道您在切换GPIO时所做的工作? – 0andriy

+0

'chmod 777'用于为gpio227文件启用写入权限,因为它们不以它开始。没有它,当运行任何回声方向或价值时,我会收到权限错误。我不必使用'777',但它更快。我会尝试运行**低**和**高**,看看是否有效。 – user2449725

+0

看起来您的gpio 227未导出为将其配置为GPO,这就是您没有写入权限的原因。在尝试覆盖它的属性之前,检查硬件引脚的重要性 –

测试一些其他的方法后设置GPIO值,我发现其他框架似乎工作正常,没有分段错误。

总之,使用回波写入到GPIO引脚是分割故障源。我不知道为什么。

我的工作是围绕要么使用GPIO模块从节点或使用wiringPi为Odroid因为这些似乎都工作得很好。

发布这个让人们知道。

分段故障。这种情况发生在一个简单且经过良好测试的程序(如回声)上并不常见。

它可以由内核/ GPIO驱动是越野车,或者甚至硬件损坏造成的。我会建议直接运行命令为根,以确保它是回声,这是造成分段错误,然后使用strace的弄清楚,如果分割故障在同一地点总是发生......