裝置驅動及Linux裝置號
阿新 • • 發佈:2019-02-14
在一個計算機系統的開發過程中,應用層一般不會去關心底層硬體的具體操作,而是專注於應用層業務邏輯的實現,因此我們會將涉及到裝置硬體底層的操作封裝成一個個介面,應用層在進行業務設計的過程中只需呼叫這些介面便可以完成想要的操作,這些介面我們可以成為裝置驅動。
即使在一個不執行作業系統的系統中(如傳統的51微控制器),我們也經常會講跟底層硬體關係較緊密的操作如讀寫暫存器、通過指定時序讀寫晶片等封裝為一個功能模組,包含在一個.c和.h檔案中,這也是裝置驅動的一種體現。這也體現了軟體設計中高內聚、低耦合的思路。
在帶作業系統的系統中,裝置驅動的基本功能依舊沒變,但更加體現於作業系統核心與底層硬體間的連線,而且在Linux中,每個裝置驅動都可以以檔案的形式體現,應用程式可以通過read()、write()等檔案IO操作實現對裝置驅動的呼叫,在應用程式中完成對底層硬體的操作,這也算Linux中“萬物皆檔案”的一種體現。
Linux裝置分類:
·字元裝置
·塊裝置
·網路裝置
字元裝置的特點是必須以序列順序依次訪問的裝置,我們平時經常在系統中使用的觸控式螢幕、鍵盤、LED燈、各類感測模組均屬於這種。
裝置號:
裝置號的作用:將裝置檔案和真實的硬體裝置關聯起來。
主裝置號:由同一裝置驅動控制的裝置,主裝置號相同。
從裝置號:用來指向同一裝置驅動控制的不同裝置。
過程:Linux系統啟動→裝置驅動被載入→向系統反饋一個主裝置號→驅動程式根據主裝置號在/dev建立相應的裝置檔案→操作裝置檔案→實現對硬體的訪問