ARM Linux 如何在sysfs用户态命令行中控制 GPIO 引脚?
我们在开发工作中,经常需要确定内核gpio驱动,是否有异常,或者在没有应用的情况下,想控制某个外设,这时我们就可以在控制台命令行中导出gpio符号来操作,操作如下所示:
1、通过 sysfs 控制 gpio 引脚 /sys/class/gpio。
A-D 对应1-4:A->1,B->2,C->3,D->4。
GPIOn_xy = n*32 + (x-1)*8 + y
GPIO4_C6 = 4*32 + (3-1)*8 + 6 = 150
备注:不同平台GPIO计算方法不一样,上面例子是RK3568的计算方法,请注意。
2、配置 gpio 为输入读取状态。
[root@rk3568:/]# echo 150 > /sys/class/gpio/export //导出GPIO4_C6 引脚
[root@rk3568:/]# echo in > /sys/class/gpio/gpio150/direction //设置IO 输入方向
[root@rk3568:/]# cat > /sys/class/gpio/gpio150/value //查看IO 值
[root@rk3568:/]# echo 150 > /sys/class/gpio/unexport //取消导出引脚
3、配置 gpio 为输出设置状态。
[root@rk3568:/]# echo 150 > /sys/class/gpio/export //导出GPIO4_C6 引脚
[root@rk3568:/]# echo out > /sys/class/gpio/gpio150/direction //设置IO 输出方向
[root@rk3568:/]# echo 0 > /sys/class/gpio/gpio150/value //设置IO 输出为低电平
[root@rk3568:/]# echo 1 > /sys/class/gpio/gpio150/value //设置IO 输出为高电平
[root@rk3568:/]# echo 150 > /sys/class/gpio/unexport //取消导出引脚