1. 查看kernel已经使用gpio及状态命令:
C:\Users\Administor>adb shell
rk3399_all:/ $ su
rk3399_all:/ # cat /sys/kernel/debug/gpio
GPIOs 0-31, platform/pinctrl, gpio0:
gpio-4 ( |bt_default_wake_host) in lo
gpio-5 ( |power ) in hi
gpio-6 ( |vbus-5v ) out lo
gpio-9 ( |bt_default_reset ) out lo
gpio-10 ( |reset ) out hi
gpio-11 ( |? ) out lo
gpio-13 ( |enable ) out hi
GPIOs 32-63, platform/pinctrl, gpio1:
gpio-34 ( |int-n ) in hi
gpio-35 ( |vcc2 ) out hi
gpio-45 ( |vcc1 ) out hi
gpio-46 ( |vsel ) out hi
gpio-49 ( |vsel ) out lo
gpio-54 ( |mpu6500 ) in lo
2. 使用io命令直接控制gpio输出电平:
以gpio0为例:
rk3399_all:/ # io -4 -l 64 0xff720000
ff720000: 00002400 00002e40 00000000 00000000
ff720010: 00000000 00000000 00000000 00000000
ff720020: 00000000 00000000 00000000 00000000
第一个reg为输出状态:可以看到gpio0 b5为1,即gpio1 b5输出为高电平
# io -4 -w 0xff720000 0x400 // gpio0 b5为low
# io -4 -w 0xff720000 0x2400 //gpio0 b5为high
第二个reg为输入输出方向:可以看到gpio0 b5为输出状态
同理,经查询dts可知
gpio1 对应0xff730000
gpio2 对应0xff780000
gpio3 对应0xff788000
gpio4 对应0xff790000