linux-kernel - 使用 sysfs 对 GPIO 没有响应
问题描述
- 平台:英特尔阿波罗湖 N3350
- 操作系统平台:Ubuntu 18.04
- GPIO编号:GPIO126
$ 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 功能?
解决方案
推荐阅读
- c++11 - 具有完美转发的成员函数的 std::bind
- android - 如何防止应用程序在后台被杀死?
- r - R使用先前的迭代值向量化FOR循环
- flutter - 有什么用?之前的运算符。飞镖中的运算符
- c# - 为什么显示 Asp.Net Core 的内置验证错误消息而不是我的 Fluent Validation?
- scala - 生成的播放 json 隐式实例导致 StackOverflowError
- sql - 一种正确的加入
- c - 如何将二进制字符串转换为无符号整数?
- azure - 如何使用 Azure PowerShell 获取 Azure KeyVault 的访问策略
- python - 如果列中不存在值,则忽略条件