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
3.2 查看gpio全部信息:
cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinmux-pins
3.3 查看pinmux-pins:
cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinmux-pins