1. 简介

sysfs控制gpio的方式主要基于内核提供的gpio控制接口文件。也就是通过读写/sys/class/gpio目录下的文件来控制对应的gpio接口。

2. sysfs控制gpio

  • GPIO pin脚计算公式:pin = bank * 32 + number GPIO 小组编号计算公式:number = group * 8 + X 例如: gpio3 RK_PA0 : 32 * 3 + 0 = 96

**注意**:使用命令:dmesg | grep cannot检查是否有gpio冲突,有冲突的话驱动代码会中断,后面的dts就不会生效。

  • 在终端/sys/class/gpio路径下使用命令来打开LED灯:
1. echo 96 > /sys/class/gpio/export                  //gpio_request          申请导出相应的gpio
2. echo out > /sys/class/gpio/gpio96/direction       //gpio_direction_output 设置相应gpio为输出方向
3. echo 1 > /sys/class/gpio/gpio96/value             // gpio_set_value       设置输出高电平
4. cat /sys/class/gpio/gpio96/value                  // gpio_get_value       获取gpio当前状态值
5. echo 96 > /sys/class/gpio/unexport                // gpio_free            释放申请的gpio

**注意**:如果驱动程序已经使用了该引脚,那么将会export失败,会提示下面的错误: Device or resource busy

3. gpio调试技巧

3.1 查看gpio占用状态:

cat /sys/kernel/debug/gpio

linux系统基于syfs控制gpio_引脚

3.2 查看gpio全部信息:

cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinmux-pins

linux系统基于syfs控制gpio_rk3588_02

3.3 查看pinmux-pins:

cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinmux-pins