You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无设备树时在用户空间使用gpio-pca953x I2C扩展器Linux驱动

在无设备树的x86平台实例化TCA6408A GPIO驱动

核心思路

x86平台无设备树时,需通过sysfs手动向I2C总线注册设备,让gpio-pca953x驱动识别并生成标准GPIO设备节点。

步骤1:确认并加载驱动模块

首先检查gpio-pca953x驱动是否已加载:

lsmod | grep gpio_pca953x

如果无输出,手动加载模块:

sudo modprobe gpio-pca953x

步骤2:定位TCA6408A的I2C总线与地址

  1. 查看系统可用的I2C总线:
ls /dev/i2c-*

输出类似/dev/i2c-0 /dev/i2c-1,这些是总线编号。

  1. 逐个扫描总线,找到TCA6408A的设备地址(默认地址为0x20,若修改了地址引脚需对应调整):
sudo i2cdetect -y 0  # 替换0为你的总线编号

扫描结果中显示的两位数十六进制值就是设备地址。

步骤3:通过sysfs注册I2C设备

进入目标I2C总线的sysfs目录,注册TCA6408A:

cd /sys/bus/i2c/devices/i2c-0  # 替换0为你的总线编号
sudo echo pca953x 0x20 > new_device  # 替换0x20为你的设备实际地址

pca953x是驱动兼容的设备标识,TCA6408A属于该系列,因此直接使用即可。

步骤4:验证GPIO设备生成

执行以下命令查看是否生成标准GPIO设备:

ls /sys/class/gpio/
ls /dev/gpiochip*

若看到gpiochipX(X为数字),说明驱动已成功实例化,可通过标准GPIO接口(sysfs或libgpiod工具)操作引脚。

可选:设置开机自动配置

避免每次重启重复操作,可配置自动加载驱动和注册设备:

  1. 让系统开机自动加载gpio-pca953x模块:
sudo echo "gpio-pca953x" > /etc/modules-load.d/gpio-pca953x.conf
  1. 添加设备注册命令到开机自启动脚本(以rc.local为例,若使用systemd可创建自定义服务):
    编辑/etc/rc.local,在exit 0前添加:
# 等待I2C总线初始化完成(可选,按需调整延迟)
sleep 2
echo pca953x 0x20 > /sys/bus/i2c/devices/i2c-0/new_device

保存后赋予执行权限:

sudo chmod +x /etc/rc.local

注意事项

  • 若扫描不到I2C设备,需先确认主板BIOS中已启用I2C控制器,且加载了对应主板的I2C控制器驱动(如i2c-i801适用于Intel芯片组)。
  • 若注册设备失败,检查总线编号、设备地址是否正确,或驱动是否兼容(TCA6408A属于pca953x系列,驱动完全支持)。

内容的提问来源于stack exchange,提问作者David R86

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 01:15:05