由于我是嵌入式领域的新手,我在理解i2c设备/驱动程序和平台设备/驱动程序之间的明显区别时遇到了困难。
我已阅读此链接:
What is the difference between Platform driver and normal device driver..?
表示平台设备/驱动程序用于不可发现的设备,例如在i2c总线上连接的设备,平台设备通过匹配名称绑定到驱动程序。
我已经浏览了一个电路板文件,其中i2c总线上连接的音频编解码器(不可发现的设备)使用i2c API(i2c_register_board_info,omap_i2c_add_bus等)注册,所以我的问题是
答案 0 :(得分:4)
每个SOC(芯片上硅)或微控制器都有一个I2C控制器,它提供了一种连接和通信I2C设备的方法,如相机传感器,PMIC,温度传感器等。用于配置和使用此I2C控制器的驱动程序是称平台驱动程序。该I2C控制器称为平台设备。大多数平台设备将成为SOC的一部分。 I2C控制器的寄存器使用平台驱动程序进行编程。这些寄存器在ARM存储器映射中,并且可以在SOC的TRM上使用。
现在所有可以通过I2C控制器(如摄像头传感器,PMIC,温度传感器等)连接到SOC或微控制器的I2C设备都需要驱动程序来控制它们。此驱动程序称为设备驱动程序。这些器件的寄存器不是SOC的存储器映射的一部分。需要像OV5640相机传感器这样的I2C设备的数据表来编程寄存器。发送I2C数据以对寄存器和访问数据进行编程。
答案 1 :(得分:0)
平台设备本质上是无法发现的,即硬件无法说“嘿!我在场!”到软件。典型示例包括i2c设备,内核/文档/ i2c /实例化设备状态:与PCI或USB设备不同,I2C设备未在硬件级别(运行时)枚举。相反,软件必须(在编译时)知道每个I2C总线段上连接了哪些设备。因此,USB和PCI并不是平台设备。
基本上,问题是“它是平台设备还是标准设备?”更多的是它使用哪种公交车的问题。要使用特定的平台设备,您必须:
这些芯片上的设备是否有平台驱动程序? 不是正确的(理论上是正确的,但实际上是正确的)。 i2c设备不是onChip,而是平台设备,因为它们是不可发现的。我们还可以想到普通设备onChip设备。示例:现代x86处理器上的集成PCI GPU芯片。它是可发现的,因此不是平台设备。
是否有用于与处理器芯片接口的设备的常规设备驱动程序?在遇到一个i2c驱动程序之前? 不对。许多普通设备都连接到处理器,但不是通过i2c总线。例如:USB鼠标。
答案 2 :(得分:0)
- i2c设备/驱动程序和平台设备/驱动程序有什么区别?
i2c设备驱动程序API用于从i2c客户端驱动程序(如音频编解码器)控制i2c外围设备
平台设备驱动程序API由不可发现的设备(例如音频编解码器)使用,以通过设备树或电路板文件获取与硬件相关的配置