第1章 linux裝置驅動程式模型
linux系統中包含字元裝置、塊裝置、網路裝置三類基本的裝置驅動程式。隨著技術的不斷進步,linux驅動程式體系的拓撲結構越來越複雜,linux 2.4核心已經不能適應這種形勢的需求。為此2.6核心開發了全新的裝置模型,它採用sysfs檔案系統,該檔案系統是乙個類似於proc檔案系統的特殊檔案系統,用於將系統中的裝置組織成層次結構,並向使用者態程式提供詳細的核心資料結構資訊。該模型在智慧型電源管理、熱插拔以及與使用者空間互動等方面具有明顯的優勢。本章主要介紹linux核心中的驅動程式模型,包括三類裝置的驅動程式、proc檔案系統、sysfs檔案系統、kobject等內容。
1.1 裝置驅動程式基礎
1.1.1 驅動程式的概念
所謂裝置驅動程式就是控制與管理硬體裝置資料收發的軟體,它是應用程式與硬體裝置溝通的橋梁。從本質上講裝置驅動程式主要負責硬體裝置的資料讀寫、引數配置與中斷處理。裝置驅動程式是作業系統的一部分,通常執行在核心層。應用層通過系統呼叫進入核心層,核心層根據系統呼叫號來呼叫驅動程式對應的介面函式。圖1-1說明了linux驅動程式的執行原理。
圖1-1 裝置驅動程式的原理
linux中的大部分驅動程式,是以核心模組的形式編寫的。核心模組是linux核心向外部提供的乙個介面,其全稱為動態可載入核心模組(loadable kernel module,lkm)。linux核心本身是乙個單核心(monolithic kernel),具有效率高的優點,也具有可擴充套件性和可維護性差的缺陷。模組機制就是為了彌補這一缺陷而設計的。核心模組可以被單獨編譯,它在執行時被鏈結到核心,作為核心的一部分在核心空間執行。要讓核心支援可載入模組,需要配置核心的【enable loadable module support】選項,如圖1-2所示。
linux裝置驅動程式 字元裝置驅動程式
先留個 有一起學習驅動程式的加qq295699450 字元裝置驅動 這篇比較惱火。載入成功,但是讀不出來資料,有知道怎麼回事的,留個言,一起討論下 資料結構 struct scull mem struct scull dev dev 整個驅動程式 如下 include include include...
Linux裝置驅動程式 字元裝置驅動程式
1.檢視主裝置號,次裝置號 進入 dev目錄執行ls l,第四,五列分別為主次裝置號,10,180,1,5,這些是主裝置號,而60,63這些就是次裝置號 130 shell android dev ls l crw rw r system radio 10,60 1969 12 31 21 00 a...
Linux裝置驅動程式
linux系統中的裝置分為字元裝置 char device 塊裝置 block 和網路裝置 net device 三種,字元裝置是指在訪問時沒有快取,能夠像檔案一樣被訪問的裝置,字元裝置驅動程式至少要實現open close read和write系統呼叫。多數的linux裝置驅動程式可以在核心模組發...