linux系统基于syfs控制gpio

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 查看pinmux-pins:gpio全部信息:

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

 

 

posted @ 2023-07-03 17:04  ArmSoM开源硬件  阅读(77)  评论(0编辑  收藏  举报