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...