在乙個計算機系統的開發過程中,應用層一般不會去關心底層硬體的具體操作,而是專注於應用層業務邏輯的實現,因此我們會將涉及到裝置硬體底層的操作封裝成乙個個介面,應用層在進行業務設計的過程中只需呼叫這些介面便可以完成想要的操作,這些介面我們可以成為裝置驅動。
即使在乙個不執行作業系統的系統中(如傳統的51微控制器),我們也經常會講跟底層硬體關係較緊密的操作如讀寫暫存器、通過指定時序讀寫晶元等封裝為乙個功能模組,包含在乙個.c和.h檔案中,這也是裝置驅動的一種體現。這也體現了軟體設計中高內聚、低耦合的思路。
在帶作業系統的系統中,裝置驅動的基本功能依舊沒變,但更加體現於作業系統核心與底層硬體間的連線,而且在linux中,每個裝置驅動都可以以檔案的形式體現,應用程式可以通過read()、write()等檔案io操作實現對裝置驅動的呼叫,在應用程式中完成對底層硬體的操作,這也算linux中「萬物皆檔案」的一種體現。
linux裝置分類:
·字元裝置
·塊裝置
·網路裝置
字元裝置的特點是必須以序列順序依次訪問的裝置,我們平時經常在系統中使用的觸控螢幕、鍵盤、led燈、各類感測模組均屬於這種。
裝置號:
裝置號的作用:
將裝置檔案和真實的硬體裝置關聯起來。
主裝置號:
由同一裝置驅動控制的裝置,主裝置號相同。
從裝置號:用來指向同一裝置驅動控制的不同裝置。
過程:linux系統啟動→裝置驅動被載入→向系統反饋乙個主裝置號→驅動程式根據主裝置號在/dev建立相應的裝置檔案→操作裝置檔案→實現對硬體的訪問
字元裝置驅動 裝置號 裝置檔案
主裝置號用來標識與裝置檔案相連的驅動程式.用來反映裝置型別.次裝置號被驅動程式用來辨別操作的是哪乙個裝置.用來區分同型別的裝置.通過的是主裝置號.字元裝置檔案 本身沒有太多的內容,通過 字元裝置檔案 能找到 字元裝置驅動程式 字元裝置檔案 能將 應用程式 的需求傳遞給 字元裝置驅動程式.核心中如何描...
linux驅動裝置號的註冊
建立裝置號,分2種,靜態註冊和動態註冊 不是自己指定裝置號 靜態 註冊 int register chrdev unsigned int major,const char name,const struct file operations fops 傳參 major 主裝置號 name 裝置名 fo...
linux裝置樹(裝置驅動)
一 裝置樹的簡單概念 裝置樹 由一系列的節點,屬性組成,節點本身包含子節點 屬性 成對出現的名稱和值 裝置樹可描述的資訊 原先大多數被編碼在核心中 它是電路板上cpu,匯流排,裝置組成的樹,bootloader會將這棵樹傳遞給核心,並根據它展開linux核心中的platform device等裝置。...