如何操作GPIO

购买了一块RK3288板子,想尝试一下用GPIO来控制power灯,查询原理图确认使用了GPIO8-A2
这样我就运行:
cd /sys/class/gpio
echo 258 > export
结果提示Permission denied,加上sudo也是毫无效果

这会是什么原因呢?

不是258

这GPIO已经被使用,所以你用通用GPIO的方式控制不了,要么在dts代码屏蔽power led,led的控制可以参考
http://wiki.t-firefly.com/zh_CN/Firefly-RK3288/dirver_led.html

jpchen 发表于 2018-10-10 09:30
这GPIO已经被使用,所以你用通用GPIO的方式控制不了,要么在dts代码屏蔽power led,led的控制可以参考
http …

这就是说,如果想用GPIO来控制led,就要改动kernel了

jpchen 发表于 2018-10-10 09:30
这GPIO已经被使用,所以你用通用GPIO的方式控制不了,要么在dts代码屏蔽power led,led的控制可以参考
http …

在dts里面关闭gpio-led这部分
然后切换成root,此时可以用echo 258 > /sys/class/gpio/export来创建节点,但是配置direction和value仍然无法控制灯的亮灭,还有其他地方需要配置么?

williamzhang 发表于 2018-11-6 11:47
在dts里面关闭gpio-led这部分
然后切换成root,此时可以用echo 258 > /sys/class/gpio/export来创建节点 …

dts里面屏蔽掉led,就可以使用通用GPIO的方式控制led
— a/kernel/arch/arm/boot/dts/firefly-rk3288.dts
+++ b/kernel/arch/arm/boot/dts/firefly-rk3288.dts
@@ -155,6 +155,7 @@
status = “disabled”;
};

  •   /*
      firefly-led{
              compatible = "firefly,led";
              led-work = <&gpio8 GPIO_A2 GPIO_ACTIVE_LOW>;
    

@@ -176,6 +177,7 @@
gpios = <&gpio8 GPIO_A2 GPIO_ACTIVE_LOW>;
};
};

  • */

本帖最后由 williamzhang 于 2018-11-8 09:56 编辑

jpchen 发表于 2018-11-6 16:32
dts里面屏蔽掉led,就可以使用通用GPIO的方式控制led
— a/kernel/arch/arm/boot/dts/firefly-rk3288.d …

确认dts里面已经注释掉了,另外,可以建立gpio的节点,用echo 258 > /sys/class/gpio/export时,可以生成节点,不会报错

能够访问生成的节点的direction/value文件,但是,输入内容没有反应
我的做法:
echo “out” > /sys/class/gpio/gpio258/direction
echo 0 > /sys/class/gpio/gpio258/value
echo 1 > /sys/class/gpio/gpio258/value
按说应该能够控制灯的亮灭,但是,一点实际上没有任何反应

感觉没法操控GPIO一样
大神能详细指点一下么,感觉自己很可能遗漏了一个小枝节

jpchen 发表于 2018-11-6 16:32
dts里面屏蔽掉led,就可以使用通用GPIO的方式控制led
— a/kernel/arch/arm/boot/dts/firefly-rk3288.d …

继续下去,发现有个PCLK_GPIO8需要设置,设置之后情况还是一样
用cat /sys/class/gpio/gpio258/value读取value的值,发现始终不能变化

所以GPIO始终没有能够设置拉高拉低,这会是什么原因呢?

williamzhang 发表于 2018-11-8 09:58
继续下去,发现有个PCLK_GPIO8需要设置,设置之后情况还是一样
用cat /sys/class/gpio/gpio258/value读 …

是不是硬件led灯坏了

jpchen 发表于 2018-11-8 11:24
是不是硬件led灯坏了

没有,默认GPIO都是value是0,两颗灯都很正常的亮着
另外,恢复dts设置,灯又可以控制的

firefly-rk3288可以控制power led和work led 分别是,257 258脚,
AIO-3288J 控制power led和work led分别是262,257
看你机型是否有弄对

我也有这个疑问,请问楼主解决了吗

楼主解决了吗,我已经解决了,通过debugfs可查看gpio的使用情况,由此得知power led和work led 分别是,250,249脚。