2013-03-26 98 views
1

我正在移植开源项目OpenROV for Raspberry Pi。 (该项目是为BeagleBone开发的。)端口唯一的重大挑战是将软件对GPIO1_0(aka GPIO32)的引用更改为在Raspberry Pi的头文件中打开的引脚(我在考虑GPIO18)。原代码如下:重新路由树莓派GPIO - 虚拟引脚?

#!/bin/sh 
# GPIO1_0 equals equals /sys/class/gpio32 (32 + 0) 

#see http://ninjablocks.com/blog/2012/1/20/setting-up-gpio-on-the-beaglebone.htm l 


back_to_normal() { 
    sleep 1 
    #set GPIO1_0 to HIGH 
    echo "high" > /sys/class/gpio/gpio32/direction 
} 

reset() { 
    sleep 1 
    #prepare gpio 
    echo "32" > /sys/class/gpio/export 
    echo "out" >/sys/class/gpio/gpio32/direction 
    echo 7 > /sys/kernel/debug/omap_mux/gpmc_ad0 
    #set GPIO1_0 to low 
    echo "low" > /sys/class/gpio/gpio32/direction 
    back_to_normal 
} 
echo Initiating arduino reset 1>&2 
reset & 

当然,我可能只是经过,非常参照32改为18,但这需要每次更新额外的工作。相反,是否有某种方法可以创建一个虚拟GPIO32,以自动将命令重定向到GPIO18?

+0

好吧,我对树莓派一无所知,但是一些一般的Unix提示可能会帮助你:a)使用符号链接代替实际的设备; b)在用于设置端口的shell脚本中使用一个参数(即给它18个,并且它将在脚本c中的每个地方使用18个参数)如果可用,使用'socat'。 – 2013-03-26 22:07:43

+0

感谢您的建议 - 我只用了几个月的linux,并不知道适当的术语。 a)这是我无法解决的主要问题 b)有意义,特别是因为这是我将使用该设备的唯一方法。 c)这可能会诀窍。我会尝试一下并回复你。 – user2213454 2013-03-27 01:41:38

回答

0

我刚刚开始使用Python和RPi.GPIO linux软件包玩Raspberry Pi及其GPIO。我在我的博客上写了关于我的第一个简单步骤:Using Raspberry Pi GPIO Interface

通过调用GPIO.setmode(GPIO.BOARD)或GPIO.setmode(GPIO.BCM),有一种调用将RPi.GPIO模式设置为BOARD或BCM,该模式在两个引脚配置之间变化。如果你看看它是什么,它可以帮助你解决问题。