2015-01-02 61 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數據被髮送出去編程寄存器並訪問數據。