我有一台带有 8 个 GPIO 引脚的单板计算机,我想从 CentOS 6.4 安装上的用户空间访问它。我看到“dmesg”输出中提到的 GPIO 引脚,但 /sys/class/gpio 目录不存在。是否有我需要的特殊驱动程序,或者我的内核不够新(2.6.32-358.el6.i686)?如果重要的话,SBC 型号是 Advantech PCM-9389。
dmesg中提到的GPIO:
pci 0000:00:1f.0: quirk: [io 0x0800-0x087f] claimed by ICH6 ACPI/GPIO/TCO
pci 0000:00:1f.0: quirk: [io 0x0500-0x053f] claimed by ICH6 GPIO
答案1
您确实需要为您的硬件加载正确的 GPIO 驱动程序模块。如果它没有自动加载(有些不会,因为它们不是“即插即用”),您可能还需要手动加载它(通过在 /etc/modules 中命名)。
您没有目录的原因是缺少加载到正在运行的内核中的 GPIO 模块/sys/class/gpio
。
从您引用的启动消息来看,正确的模块可能是gpio_ich
.但只有测试才能确定。
我使用该gpio_ich
模块,因此为了进行比较,以下是我的系统的一些详细信息。我还没有测试我的 GPIO 引脚,但我的系统肯定比你的更接近工作,所以这应该会让你更接近。
$ modinfo gpio_ich
ERROR: Module gpio_ich not found.
这是因为我的 gpio_ich 静态链接到我的内核,以加快启动速度。我建议您将其构建为模块,在这种情况下,上述命令将会成功(与我的情况不同),并且会向您显示模块的参数(如果有)。
$ ls -l /sys/class/gpio/
total 0
--w------- 1 root root 4096 Jul 14 16:12 export
lrwxrwxrwx 1 root root 0 Jul 14 16:12 gpiochip195 -> ../../devices/pci0000:00/0000:00:1f.0/gpio_ich/gpio/gpiochip195
--w------- 1 root root 4096 Jul 14 16:12 unexport
$ dmesg|fgrep -i gpio
gpio_ich: GPIO from 195 to 255 on gpio_ich
lpc_ich: Resource conflict(s) found affecting gpio_ich
it87: VID is disabled (pins used for GPIO)
第一条消息是模块初始化。缺乏这一点是一个阻碍。我不知道Resource conflict(s)
第二行所述是否有问题(我怀疑它们是由于重复使用第三行所述的引脚,所以不是问题)。
祝你好运!
答案2
对我有用:
我们需要通过 config.txt 激活它:
echo -e "dtparam=i2c1=on\ndtparam=i2c_arm=on" >> /boot/config.txt
echo -e "i2c-bcm2708\ni2c-dev" >> /etc/modules-load.d/i2c.conf
yum install -y i2c-tools
systemctl 重新启动
PS CentOS Linux 版本 7.6.1810 (AltArch)