如何操作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设置,灯又可以控制的
页:
[1]
2