linux驅動模型分析總括

2021-04-24 05:14:38 字數 1468 閱讀 3433

linux裝置驅動模型在2.4和2.6之間有非常大的變化。感覺最大的變化就是2.6中加入了一些面相物件的方法進行管理裝置驅動,其實在linux中早就使用了該方法。

為了有乙個全面的了解,今天特意理清了一下思路,為下一步進入分析打下基礎。linux使用類似uinx方式管理裝置驅動,把裝置當作檔案來看待,只是當針對裝置進行操作時,會呼叫對應的裝置驅動中的操作。這裡主要是了解一下linux如何處理使用者對驅動的使用的。牽涉到虛擬檔案系統,其主要包含幾個結構和結構對於的操作。主要如下:

1.super_block(超級塊物件) 和對於的操作super_operations

2.inode(索引節點物件)和對應的操作inode_operations,該結構了包含了驅動程式用到的主裝置號和次裝置號,以及對於裝置指標。

3.dentry(目錄項物件)和dentry_operations,這個結構在寫驅動時基本上沒有涉及。

4.file(檔案物件)和file_operations,相信這個我們大家都非常熟悉,寫驅動的主要工作就是使用該檔案物件對應的操作,在2.4版本基本就是這樣。

另外還有乙個結構就是cdev

有關**就主要其中在fs目錄下。可以去看看,但是不要走的太遠,有個了解就可以了。

接下來就要分析裝置驅動模型了,其實就是幾個結構和將這連在一起的操作。主要有一下結構:

1.bus_type,描述匯流排的結構

2.class,裝置分類結構,就是將屬於某種型別的裝置在一起管理,像所有的各種輸入裝置,就被統一規劃為輸入類。

3.device,具體或者虛擬的裝置描述結構

4.device_driver,對於的裝置驅動程式結構

該部分**主要在drvier/base下面。

為了方面管理這些結構,又產生幾個新的結構

1.kobject

2.kset,該結構為kobject乙個集合,描述一類裝置。

這兩個結構的主要**在lib中。

最後為了在使用者空間可以獲得有關裝置資訊和屬性,又產生了sysfs檔案系統,該檔案系統是乙個虛擬的檔案系統,如同/proc,其在ram空間中建立。我們可以通過該檔案系統獲得有關裝置的資訊。

這裡主要了就是實現上面所講到的虛擬檔案系統中要求實現的介面,另外為了使用者在獲取裝置對於的屬性時需要實現各種包含attribut結構的屬性操作。如bus_type,class,device等對於的結構屬性結構,以及對於的顯示和儲存操作。

該部分**有一部已經包含在drvier/base下面了,也就無需再閱讀過多的**,我們也不必過於追究sysfs的實現(**在fs/sysfs下面),不然就走的太遠了,當然有興趣也可以閱讀一下。

最後結合一下documentation/driver-model和kobject.txt來進行輔助閱讀,並可以看看samples下面的kobjects使用例程來理解有關kobject和kset的使用。當然還需要結合實際的驅動**來進行理解,並試著去動手寫一寫,這也是我接下來將要做的事情。

以上只是乙個大概的理解,肯定存在理解上的錯誤,希望以後能夠理會的更清楚點。

linux裝置驅動模型架構分析 一

lddm與驅動程式密切相關,而驅動程式處於linux系統中的什麼位置呢?我們自頂向下一步步來說,先看下圖 以下內容以中的內容為主體結合自己的認識和對於4.1核心的修改,這個系列文章非常好,推薦 linux由五個部分組成 也稱作程序管理 程序排程。負責管理 cpu資源,以便讓各個程序可以以盡量公平的方...

linux MISC 驅動模型分析

linux misc 驅動模型分析 閱讀led驅動程式的 的時候,沒有發現ldd3中提到的各種字元裝置註冊函式,而是發現了乙個misc register函式,這說明led裝置是作為雜項裝置出現在核心中的,在核心中,misc雜項裝置驅動介面是對一些字元裝置的簡單封裝,他們共享乙個主裝置號,有不同的次裝...

Linux裝置驅動模型

核心版本 2.6.29 裝置驅動模型框架是linux驅動程式設計的基礎。它通過kobject,kset,ktype等底層資料結構將bus type,device,device driver 等高層資料結構組織起來,形成乙個層次 分類清晰的驅動模型。優點如下 1.重用。將物件抽象為匯流排 驅動 裝置三...