2015-01-02 205 views
1

由于我是嵌入式领域的新手,我在理解i2c设备/驱动程序和平台设备/驱动程序之间的明显区别时遇到困难。平台设备/驱动程序vs i2c设备/驱动程序

我已阅读此链接:

What is the difference between Platform driver and normal device driver..?

这不能不平台设备/驱动器是使用像通过匹配的名字在I2C总线和平台的设备连接绑定到驱动程序的设备没有发现设备。

我已经通过董事会文件,在I2C总线连接的音频编解码器(非发现设备)使用I2C API(i2c_register_board_info,omap_i2c_add_bus等)注册了,所以我的问题是

  1. 是什么i2c设备/驱动程序和平台设备/驱动程序之间的区别?
  2. 何时使用i2c相关API以及何时使用平台相关API(platform_driver_register,platform_device_register)在内核中注册设备/驱动程序。或者如果我们可以将i2c相关的API用于不可发现的设备(连接在i2c上)注册,那么我们需要平台设备注册。

回答

2

每个SOC(硅片上)或微控制器将有一个I2C控制器,它提供了一种方法来连接和通信,以像相机传感器,PMIC,温度传感器等。用于配置和使用该驱动器I2C器件I2C控制器被称为平台驱动程序。这个I2C控制器被称为平台设备。大多数平台设备将成为SOC的一部分。 I2C控制器的寄存器使用平台驱动程序进行编程。这些寄存器在ARM存储器中映射,并将在SOC的TRM上提供。

现在,所有可以通过I2C控制器(如相机传感器,PMIC,温度传感器等)连接到SOC或微控制器的I2C器件都需要驱动程序来控制它们。该驱动程序称为设备驱动程序。这些器件的寄存器不是SOC的存储器映射的一部分。需要像OV5640相机传感器这样的I2C器件的数据表来对寄存器进行编程。 I2C数据被发送出去编程寄存器并访问数据。