linux 裝置模型簡析

2021-06-16 07:41:10 字數 1746 閱讀 9217

file_operations 不可能被拋棄。它是字元裝置的基礎結構,

各種裝置模型或者說匯流排,只是對字元裝置進行了包裝。 

驅動一定是核心模組 核心模組不一定是驅動

裝置模型的初衷 是省電 建立一條 掛有 所有裝置的樹 全域性裝置樹

與使用者空間的通訊:裝置間的通訊 都是通過 sysfs檔案系統實現的 把裝置模型的介面以檔案的形式 暴露給使用者

可以通過 讀寫檔案的方式 配置裝置

裝置模型的經濟基礎決定了裝置模型的上層建築

kobject是構成裝置模型的最小單元 是構成裝置模型的核心結構  把一些 不同裝置通用的東西屬性或操作放到乙個結構裡 便於管理 。    kobject 相當於物件導向的基類 。 把 kobject 嵌入到更大的物件中 。 這些物件通過 kobject 聯接起來形成了乙個樹狀結構,便於管理   。 kobject_type 是具有相同操作的 kobject 結構的集合。

它管理一類 kobject 在sysfs下的操作  。    kset是 kobject 的集合 。 kobject 通過kset形成層次化的集合kobject 相當於乙個葉子節點 。  kobject和kset二者連線形成乙個樹狀結構  kobject_type關心 kobject的型別。  kset關心的是kobject的集合  。 kset是kobject的頂層容器類   。 只要設定了乙個kset 並在系統中註冊,則將在sysfs檔案系統中新增乙個目錄 kset建立上層下層的關聯性 kobject通過kset來分辨自己屬於哪個型別 。 從而可在sysfs檔案系統下確立自己正確的目錄位置,kobject會利用自kobject_type 己結構中的kset來確定自己所屬的kset  並把kobject 中的kobject_type 字段指向對應所屬kset中的kobject_type  。 裝置模型中 所有的裝置都通過 匯流排連線  驅動就是核心和裝置通訊的軟體程式。

當我們說裝置驅動的時候,應該說是某個匯流排下的裝置和驅動(例如:usb下的網絡卡驅動還是pci匯流排下的網絡卡驅動)

device_driver結構往往嵌入到更大的結構中 如platform_driver中  匯流排裝置驅動 是完美三角關係 兩兩互相包含     匯流排裝置驅動 是現貨存在的物件 kobject 是他們的基類實現的是一些功能和介面

kset 是用鍊錶來實現的

usb_register 把device——driver這個結構插入到usb bus——type中的驅動鏈表中 match函式為 device 和 driver搭橋

spec 協議規範

static struct platform_driver s3c2412fb_driver = ,

};struct bus_type platform_bus_type = ;

platform_driver_register(struct platform_driver *drv) 函式註冊 就是填寫

struct platform_driver ;結構

並將struct platform_driver 掛到

bus上掛了兩個鍊錶,乙個是driver,乙個devices,註冊devices時,會把該device掛到devices鍊錶上,同時會遍歷driver鍊錶,尋找可以驅動該device的driver,如果有則呼叫驅動中的probe函式,裝置就驅動上了;

同樣的過程發生在註冊驅動的情況下

任何裝置模型 例如

各種最終封裝的是字元裝置即file_opration結構體  匯流排裝置驅動 作為乙個大的框架包裝了它 ,形成乙個物件

以上是我對linux裝置模型的簡單認識。如有錯誤之處,希望大家幫忙指出。

linux4 3 2 塊裝置驅動簡析 2

上次我們了解到,mmc card裝置驅動通過mmc bus type這條匯流排找到了block驅動,由block驅動去載入該裝置。今天我們再進一步去了解這整個過程。我們都知道,mmc card的驅動需要啟動中斷並配合定時器去檢測是否有卡插入,那這個功能是在 實現的呢?在函式 mmc alloc ho...

Linux目錄結構簡析

linux繼承了unix作業系統結構清晰的特點。在linux下的檔案結構非常有條理。但是,上述的優點只有在對linux相當熟悉時,才能體會到。現在,就把linux下的目錄結構簡單介紹一下。vmlinuz 我們已經知道,每乙個linux都有乙個核心 vmlinuz 我們在這個核心上新增上可以完成各種特...

Linux目錄結構簡析

linux繼承了unix作業系統結構清晰的特點。在linux下的檔案結構非常有條理。但是,上述的優點只有在對linux相當熟悉時,才能體會到。現在,就把linux下的目錄結構簡單介紹一下。vmlinuz 我們已經知道,每乙個linux都有乙個核心 vmlinuz 我們在這個核心上新增上可以完成各種特...