Linux的i2c驱动是怎么识别到设备并且匹配设备的
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文件写入名称 地址来动态创建。第二步:匹