Linux的i2c驱动是怎么识别到设备并且匹配设备的
📅 2026/7/8 2:05:57
👁️ 阅读次数
📝 编程学习
Linux I2C设备识别流程的核心是软件告知内核设备的存在和地址,再由内核完成设备与驱动的匹配。这与PCI/USB等硬件可枚举的总线不同。
整个流程主要分为两步:
第一步:声明设备(让内核知道“有什么”)
告诉内核有哪些I2C设备及其地址,主要有四种方式:
- 设备树 (Device Tree):嵌入式Linux最常用。在I2C控制器的节点下,为每个设备创建子节点,用
compatible属性指定设备类型,reg属性指定地址。内核在启动时会自动解析并创建设备。 - ACPI:在x86平台(如PC)上使用,由BIOS/UEFI提供设备信息。
- 板文件 (Board File):老旧嵌入式Linux方式,通过
i2c_register_board_info()函数用i2c_board_info结构体静态声明设备。 - 用户空间手动创建:用于调试。通过向
/sys/bus/i2c/devices/i2c-<N>/new_device文件写入名称 地址来动态创建。
第二步:匹
编程学习
技术分享
实战经验