I2C设备驱动程序从用户空间绑定控制(旧内核)

注意:只有当你在处理内核2.6中发现的一些旧代码时,这一节才有用。如果您使用的是最新的内核,您可以安全地跳过这一节。

直到内核2.6.32,许多I2C驱动程序都使用 <linux/i2c.h> 提供的帮助宏,它创建了标准模块参数,让用户控制驱动程序探测I2C总线和连接到设备的方式。这些参数被称为probe(让驱动程序探测一个额外的地址),force(强制将驱动程序连接到给定的设备上)和 ignore(防止驱动程序探测给定地址)。

在将I2C子系统转换为标准设备驱动程序绑定模型之后,很明显,不再需要这些每个模块的参数,可以进行集中实现。新的基于sysfs的接口在如何实例化I2C设备一文“方法4:从用户空间实例化”中进行了描述。

下面是旧模块参数到新接口的映射。

将驱动程序连接到I2C设备

旧方法(模块参数):

# modprobe <driver> probe=1,0x2d
# modprobe <driver> force=1,0x2d
# modprobe <driver> force_<device>=1,0x2d

新方法(sysfs接口):

# echo <device> 0x2d > /sys/bus/i2c/devices/i2c-1/new_device

阻止驱动程序连接到I2C设备

旧方法(模块参数):

# modprobe <driver> ignore=1,0x2f

新方法(sysfs接口):

# echo dummy 0x2f > /sys/bus/i2c/devices/i2c-1/new_device
# modprobe <driver>

当然,在加载驱动程序之前实例化虚拟设备是很重要的。虚拟设备将由i2c核心自己处理,以防止稍后其他驱动程序绑定到它。如果在有问题的地址上有一个真实的设备,而您想要另一个驱动程序绑定到它,那么只需传递有问题的设备的名称,而不是虚拟的。

posted @   闹闹爸爸  阅读(186)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示