如何从OpenWRT构建的UBoot中读取GPIO值

时间:2019-04-05 08:58:20

标签: linux gpio openwrt u-boot

我正在尝试在由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配置,对吗?

1 个答案:

答案 0 :(得分:-1)

我找到了解决方案。有两个问题:

  1. 至少用于sunxi-8设备的U-boot(2018.11)不使用上述表达式将gpio名称转换为数字表示形式(可以为u-boot {{1}输入gpio名称}命令:gpio
  2. 默认情况下,
  3. 端口L在sunxi-8 cpus(至少是 sun8i-h2-plus-orangepi-zero )板上是不带时钟的/没有电源,因此必须由{{1 }}。看https://forum.armbian.com/topic/10111-orange-pi-zero-u-boot-gpio-access/?tab=comments#comment-76996