用户空间当程序对一个I2C总线进行调用时此时程序执行在用户空间当用户程序发起系统调用的时候VFS负责将指令传达到具体的设备驱动与裸机开发不同的是linux中一切的对硬件操作都需要经过VFS通知驱动操作用户不可见。I2C设备驱动层驱动开发工程师负责的内容编写驱动修改设备树结合datasheet封装内核api为内核其他子系统提供api。I2C核心层负责仲裁不同程序对同一个I2C的调用防止同时对一个I2C总线控制。I2C适配器驱动层用来驱动硬件硬件中有I2C控制器这一层与硬件直接交互一般由原厂工程师编写对于不同的硬件会有不同的适配器。硬件层最底层包括I2C控制器和硬件设备。