首页 > 解决方案 > 使用 sysfs 对 GPIO 没有响应

问题描述

$ cat /sys/kernel/debug/gpio
gpiochip3: GPIOs 267-309, parent: platform/INT3452:03, INT3452:03:
gpiochip2: GPIOs 310-356, parent: platform/INT3452:02, INT3452:02:
gpiochip1: GPIOs 357-433, parent: platform/INT3452:01, INT3452:01:
gpiochip0: GPIOs 434-511, parent: platform/INT3452:00, INT3452:00:

我查了资料,发现GPIO_126应该是属于西社区的。但我找不到任何与GPIO_126. 所以,我用下面的脚本来一一操作管脚,用示波器看电压。

#!/bin/bash
#set x
pinnum=$1
i=0
direction="out"
cd /sys/class/gpio
until ((i>2))
do
        echo $pinnum > export
        cd gpio$pinnum
        echo $direction > direction
        echo $PWD
        echo "gpio$pinnum print direction"
        cat $PWD/direction
        echo 1 > value
        echo $PWD
        echo "gpio$pinnum print value"
        cat $PWD/value
        cd /sys/class/gpio
        #echo $1 > unexport
        echo "current pinnum $pinnum"
        let pinnum=pinnum+1;
        echo "inc pinnum$pinnum"
        let i=i+1;
        echo "i=$i"
done
$ i2cdetect -l
i2c-3   i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-10  i2c             i915 gmbus misc                         I2C adapter
i2c-1   i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-8   i2c             i915 gmbus dpb                          I2C adapter
i2c-6   i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-4   i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-11  i2c             DPDDC-A                                 I2C adapter
i2c-2   i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-0   i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-9   i2c             i915 gmbus dpc                          I2C adapter
i2c-7   i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-5   i2c             Synopsys DesignWare I2C adapter         I2C adapter

我仍然找不到GPIO_126. 而操作pin339、pin345、pin349、pin350、pin351~pin354,设备会死机。我还发现GPIO126不是普通的GPIO,它也可以作为I2C1_SDA功能使用。据我了解,sysfs 应该能够控制所有 GPIO,而不管功能定义如何。但这似乎是错误的。

如何通过用户层关闭 I2C 功能并GPIO_126用作 GPIO 功能?

标签: linux-kernelintelgpiosysfs

解决方案


推荐阅读