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

Linux下能否为i2c-dev用户态驱动的I2C总线自定义命名?设备树可行吗?

为I2C总线分配自定义设备名的方法

可以给Linux的I2C总线分配/dev/my-i2c-bus0这类自定义名称,主要有两种可行方案:

一、用户态udev规则方案

这是无需修改内核或设备树的通用方法,通过udev创建软链接实现自定义名称:

  1. 先通过i2cdetect -l命令找到目标I2C总线的内核编号(比如i2c-1)。
  2. 在/etc/udev/rules.d/目录下创建规则文件,例如99-my-i2c.rules,写入:
    SUBSYSTEM=="i2c-dev", KERNEL=="i2c-1", SYMLINK+="my-i2c-bus0"
    
  3. 执行udevadm control --reload-rules && udevadm trigger让规则立即生效,之后/dev下就会出现my-i2c-bus0软链接,指向原/dev/i2c-1设备。

二、设备树配合方案

你提供的设备树中dev-name属性并非内核I2C驱动识别的属性,无法直接生效。若要通过设备树调整总线编号,再结合udev实现自定义名称,可按以下方式配置:

  1. 在设备树根节点下添加aliases节点,将目标I2C总线映射为指定编号:
    / {
        aliases {
            i2c0 = &i2c1; // 将硬件i2c1总线映射为内核编号i2c0
        };
    };
    
    &i2c1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c1>;
        clock-frequency = <100000>;
        status = "okay";
    };
    
  2. 编译并烧录设备树后,内核会生成/dev/i2c-0设备文件,再通过上述udev规则,将其链接为/dev/my-i2c-bus0即可。

注意:Linux内核本身只会生成/dev/i2c-X格式的原生设备文件,完全自定义的名称只能通过udev软链接实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:12:39