linux下GPIO的设置-调试

一般linux都有相关GPIO的驱动,做个简单备用吧。

这次我要控制的ls2k1000的gpio48,49,50,51.

设置为输出模式,输出一个固定的电平,所以这里先借助/sys/class/gpio/的方法调试一下。

首先在内核需要开启这个调试方法。

linux下GPIO的设置-调试_第1张图片

在 device driver --> gpio suport 选项中,选中指定的那个选项。

linux下GPIO的设置-调试_第2张图片

重新编译内核,更新新的内核。

出现这个目录才能正常操作。

以下改为sh脚本: 设置为输出,然后设置为某个电平输出。需要root权限执行。

#! /bin/sh


if [ ! -d /sys/class/gpio/gpio50 ];then
	echo 50 > /sys/class/gpio/export
# else	
# 	echo "/sys/class/gpio/gpio50 exist!!"
fi


if [ ! -d /sys/class/gpio/gpio51 ];then
	echo 51 > /sys/class/gpio/export
# else	
# 	echo "/sys/class/gpio/gpio51 exist!!"
fi


if [ ! -d /sys/class/gpio/gpio48 ];then
	echo 48 > /sys/class/gpio/export
# else	
# 	echo "/sys/class/gpio/gpio48 exist!!"
fi

if [ ! -d /sys/class/gpio/gpio49 ];then
	echo 49 > /sys/class/gpio/export
# else	
# 	echo "/sys/class/gpio/gpio49 exist!!"
fi


echo "set direction and set value"

echo out > /sys/class/gpio/gpio50/direction
echo 0 > /sys/class/gpio/gpio50/value
echo -n "gpio50/value : "
cat /sys/class/gpio/gpio50/value

echo out > /sys/class/gpio/gpio51/direction
echo 1 > /sys/class/gpio/gpio51/value
echo -n "gpio51/value : "
cat /sys/class/gpio/gpio51/value

echo out > /sys/class/gpio/gpio48/direction
echo 0 > /sys/class/gpio/gpio48/value
echo -n  "gpio48/value : "
cat /sys/class/gpio/gpio48/value

echo out > /sys/class/gpio/gpio49/direction
echo 1 > /sys/class/gpio/gpio49/value
echo -n "gpio49/value : "
cat /sys/class/gpio/gpio49/value

echo "gpio set done!!"

之前3399pro的开发板也用过这个方法。

但是3399pro的引脚是GPIOA2这种,需要计算GPIO对应的编号

这里有两个例子的计算

其中:GPIO0  取值0*32

        GPIO1  取值1*32

        GPIO2  取值2*32

         A0 取值 0*8 + 0       

        A1 取值 0*8 + 1

        B0 取值 1*8 + 1

        其他以此类推吧。

GPIO4_D2  rs422_re 低电平使能    4*32 + 3*8+2 = 154   (结果为引脚的编号)
GPIO4_D0_U  rs422_de  高电平使能 4*32 + 3*8+0 = 152

其他方法同上面的一致。

你可能感兴趣的:(linux,c,linux,运维)