我正在尝试在由OpenWRT驱动的板上实现恢复模式。
我有一个连接到某些GPIO的按钮:GPIO_PL4。
我使用下一个表达式将gpio名称转换为数字表示形式:
(position of letter in alphabet - 1) * 32 + pin number
所以我得到了
PL4
-356
映射。我试图将以下行添加到uboot环境文件
uEnv-default.txt
中: if gpio input 356; then
echo "The button is pressed";
fi;
但是在启动过程中收到错误消息:
gpio: requesting pin 356 failed
gpio - query and control gpio pins
Usage:
gpio <input|set|clear|toggle> <pin>
- input/set/clear/toggle the specified pin
gpio status [-a] [<bank> | <pin>] - show [all/claimed] GPIOs
然后,我尝试使用
gpio status -a
获取有关GPIO的信息:gpio status -a (within uEnv-default.txt)
并得到下一个输出:
Bank PA:
...
Bank PL:
PL0: func
...
PL4: func // does it mean that I'm not able to use it as an input
...
PL11: func
PL12: input: 0 [ ]
PL13: input: 0 [ ]
....
所以问题是:我是否可以将PL4 gpio引脚用作当前gpio配置的输入,如果不能,如何更改此引脚的gpio配置?
我想,我必须在U-Boot上打补丁才能进行正确的gpio配置,对吗?
最佳答案
我找到了解决方案。有两个问题:
至少适用于sunxi-8设备的U-boot(2018.11)不使用上述表达式将gpio名称转换为数字表示形式(可以为u-boot gpio
命令键入gpio名称:)。
默认情况下,端口L在sunxi-8 cpus(至少sun8i-h2-plus-orangepi-zero板)上不带时钟/不供电,因此必须由gpio input pl4
时钟/供电。看https://forum.armbian.com/topic/10111-orange-pi-zero-u-boot-gpio-access/?tab=comments#comment-76996
关于linux - 如何从OpenWRT构建的UBoot中读取GPIO值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55531722/