平台设备/驱动程序与i2c设备/驱动程序

时间:2015-01-02 14:23:06

标签: driver device platform difference i2c

由于我是嵌入式领域的新手,我在理解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上连接)注册,那么我们需要平台设备注册。

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

平台驱动程序的官方链接可以在LWN中找到。

平台设备本质上是无法发现的,即硬件无法说“嘿!我在场!”到软件。典型示例包括i2c设备,内核/文档/ i2c /实例化设备状态:与PCI或USB设备不同,I2C设备未在硬件级别(运行时)枚举。相反,软件必须(在编译时)知道每个I2C总线段上连接了哪些设备。因此,USB和PCI并不是平台设备。

  1. 平台设备通过匹配名称绑定到驱动程序,
  2. 平台设备应在系统引导过程中尽早注册。因为它们通常对系统的其余部分(平台)及其驱动程序至关重要。

基本上,问题是“它是平台设备还是标准设备?”更多的是它使用哪种公交车的问题。要使用特定的平台设备,您必须:

  1. 注册将管理此设备的平台驱动程序。它应该定义一个唯一的名称,
  2. 注册平台设备,并定义与驱动程序相同的名称。

这些芯片上的设备是否有平台驱动程序? 不是正确的(理论上是正确的,但实际上是正确的)。 i2c设备不是onChip,而是平台设备,因为它们是不可发现的。我们还可以想到普通设备onChip设备。示例:现代x86处理器上的集成PCI GPU芯片。它是可发现的,因此不是平台设备。

是否有用于与处理器芯片接口的设备的常规设备驱动程序?在遇到一个i2c驱动程序之前? 不对。许多普通设备都连接到处理器,但不是通过i2c总线。例如:USB鼠标。

答案 2 :(得分:0)

  1. i2c设备/驱动程序和平台设备/驱动程序有什么区别?
  • i2c设备驱动程序API用于从i2c客户端驱动程序(如音频编解码器)控制i2c外围设备

  • 平台设备驱动程序API由不可发现的设备(例如音频编解码器)使用,以通过设备树或电路板文件获取与硬件相关的配置