匯流排,裝置,驅動之間關係
再看i2c驅動迷茫時候看到《 從需求的角度去理解linux系列:匯流排、裝置和驅動 》,感覺豁然開朗,根據部落格內容簡單總結一下。
1、匯流排
匯流排代表同類裝置需要共同遵守的時序,不同匯流排硬體的通訊時序也是不同的,如i2c匯流排、usb匯流排、pci匯流排……
2、裝置
裝置代表真實存在的物理器件,每個器件有自己不同的通訊時序,i2c、usb這些都代表不同的時序,這就與匯流排掛鉤了
3、驅動
驅動代表操作裝置的方式和流程,以應用來說,在程式open裝置時,接著read這個這個裝置,驅動就是實現應用訪問的具體過程。驅動就是乙個通訊官和翻譯官,一是通過對soc的控制暫存器程式設計,按匯流排要求輸出相應時序的命令,與裝置互動,一是對得到資料進行處理,給上層提供特定格式資料。
驅動重點關注操作的流程和方法,如果在驅動中直接針對具體的引腳來程式設計,其驅動的平台可移植性就比較差,為了提高驅動的可移植性,linux把驅動要用到的gpio和中斷等資源剝離給裝置去管理。即在裝置裡面包含其自己的裝置屬性,還包括了其連線到soc所用到的資源。
1.1、匯流排-2
軟體層面匯流排職責,負責管理裝置和驅動
1.2、驅動-2
在裝置探測成功後,驅動就開始工作了
4、再來理解iic裝置
匯流排上先新增好iic驅動,i2c.c遍歷i2c_boardinfo鍊錶,依次建立i2c_client,並對每乙個i2c_client與所有在在這個線上的驅動匹配match,匹配上就呼叫該驅動的probe函式完成裝置檔案建立,操作介面註冊。
匯流排 裝置和驅動
一 匯流排 linux中,使用struct bus type表示一條匯流排,該結構定義在linux device.h中,先只看其中的兩個字段,name表示匯流排的名字,比如usb i2c spi等,match方法用於匹配新增到該匯流排上的裝置和驅動,如果匹配成功,則呼叫驅動中的probe函式。註冊一...
匯流排 裝置 驅動模型
裝置元素 匯流排,驅動,裝置 匯流排 處理器和裝置之間的通道,在裝置模型中,所有的裝置都通過匯流排相連,甚至是內部的虛擬 platform 匯流排 定時器,看門狗並沒有直接相連 在linux裝置模型中,匯流排由bus type結構表示,定義在 匯流排的註冊使用 bus register struct...
匯流排裝置驅動模型
匯流排裝置驅動模型 匯流排是主機和裝置之間的通道,由bus type 結構描述。int bus register struct bus type bus 匯流排的註冊,若成功,新的匯流排將被新增進系統,並可在 sysfs 的 sys bus 下看到。void bus unregister struc...