LINUX驅動之IIC子系統之三I2C的數

2021-06-19 19:31:07 字數 889 閱讀 3673

linux驅動之iic子系統之三i2c的資料結構

仍然是按照老的規矩,講一下i2c的資料結構,讓大家在學習i2c前,形成乙個整體上的知識結構的認知。它的資料結構也不多,主要的有下面幾個:(i2c.h)

1、i2c匯流排型別結構體:

struct bus_type i2c_bus_type = ;

2、i2c從裝置資料結構體:

struct i2c_client ;

3、i2c從裝置驅動結構體:

struct i2c_driver ;

4、表徵i2c裝置的一些特徵的資料結構體,組成鍊錶的基本單元:

struct i2c_board_info ;

在spi裡大家也發有這麼乙個吧,而且它還有乙個管理這個的鍊錶結構,這裡就不再講那個了,因為i2c直接使用的鍊錶沒有新建立乙個類似的結構。

5、i2c傳輸資料的一種演算法

struct i2c_algorithm ;

i2c的通訊最終都必須呼叫該結構中master_xfer的方法來實現。這套通訊方法是跟底層i2c控制器硬體相關的。

6、i2c主裝置資料結構:

struct i2c_adapter ;

這個叫控制器也叫介面卡,大家一定要記清。

7、i2c訊息資料結構體:

struct i2c_msg ;

看著它發現與spi有相類似的地方沒有。

8、smbus資料結構體(一種通訊演算法)

union i2c_smbus_data ;

這些個資料結構會自始至終的跟在整個i2c裝置的通訊過程中,大家一定要有乙個清楚的認識,別弄混了,象spi裡就有乙個裝置的遍歷和驅動的遍歷,很容易把人弄糊塗了。

先講這麼一點點,明天開始講註冊部分。

注重乙個字,恆!

利用linux中iic子系統做IIC驅動

利用linux中iic裝置子系統移植iic裝置驅動 背景描述 iic匯流排在嵌入式系統中應用十分廣泛,常見的有eeprom,rtc。一般的處理器會包含iic的控制器,用來完成iic時序的控制 另外一方面,由於iic的時序簡單,使用gpio口來模擬時序也是常見的做法。面對不同的iic控制器,各種各樣的...

linux驅動之輸入子系統

輸入子系統框架,把核心開啟 搜尋input.c 輸入子系統的 在 driver input目錄下面 最上一層,我們稱它為核心層 要看乙個驅動程式我們應該從他的入口函式開始看 有一行 err register chrdev region mkdev input major,0 input max ch...

linux驅動子系統之輸入子系統 5

5.總結 5.1 事件資訊的上報過程分析 l 上報的大致過程 裝置驅動層 核心層 事件處理層 應用層 l 具體呼叫的函式 以evdev為例 input event input handle event input pass event handle handler event handle,type...