分段错误 sysfs gpio linux odroid
Segmentation Fault sysfs gpio linux odroid
我正在尝试编写一个脚本,输出到 GPIO 引脚 1 秒。
我发现最好的方法是通过 GPIO sysfs 命令,但我一直随机获得 "Segmentation Fault"。这主要发生在设置方向时。当 运行 在 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 处理器版本 3 (v7l)。我也是运行无密码sudo。
关于为什么会发生这种情况以及如何预防有什么建议吗?
编辑:我以为我最初是 运行 在 ODROID-XU3 上,但它实际上是 XU4。
段错误通常发生在用户space程序读取或写入非法内存地址时。对于简单且经过良好测试的程序(例如 echo),这种情况并不常见。
这可能是由 kernel/GPIO 驱动程序引起的,该驱动程序有问题甚至可能是硬件损坏。我会建议 运行 直接以 root 身份执行该命令,以确保它是导致分段错误的回声,然后使用 strace 确定分段错误是否总是发生在同一位置...
在测试了一些其他设置 GPIO 值的方法后,我发现其他框架似乎工作正常,没有分段错误。
总之,使用echo 写入GPIO 引脚是分段错误的根源。我不知道为什么。
我的解决方法是使用节点中的 gpio 模块或为 Odroid 使用 wiringPi,因为它们似乎工作得很好。
发布这个让人们知道。
我正在尝试编写一个脚本,输出到 GPIO 引脚 1 秒。 我发现最好的方法是通过 GPIO sysfs 命令,但我一直随机获得 "Segmentation Fault"。这主要发生在设置方向时。当 运行 在 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 处理器版本 3 (v7l)。我也是运行无密码sudo。
关于为什么会发生这种情况以及如何预防有什么建议吗?
编辑:我以为我最初是 运行 在 ODROID-XU3 上,但它实际上是 XU4。
段错误通常发生在用户space程序读取或写入非法内存地址时。对于简单且经过良好测试的程序(例如 echo),这种情况并不常见。
这可能是由 kernel/GPIO 驱动程序引起的,该驱动程序有问题甚至可能是硬件损坏。我会建议 运行 直接以 root 身份执行该命令,以确保它是导致分段错误的回声,然后使用 strace 确定分段错误是否总是发生在同一位置...
在测试了一些其他设置 GPIO 值的方法后,我发现其他框架似乎工作正常,没有分段错误。
总之,使用echo 写入GPIO 引脚是分段错误的根源。我不知道为什么。
我的解决方法是使用节点中的 gpio 模块或为 Odroid 使用 wiringPi,因为它们似乎工作得很好。
发布这个让人们知道。