一、驅動程序三種基本類型
字符設備(Char Device)
塊設備(Block Device)
網絡設備(Net Device)
二、設備驅動程序功能
對設備初始化和釋放
把數據從內核傳送到硬件和從硬件讀取數據
讀取應用程序傳送給設備文件的數據和回送應用程序請求的數據
檢測和處理設備出現的錯誤
訪問特定硬件:
訪問特定硬件就是訪問物理地址(如處理器內設備的寄存器、外設的地址映射)。然而由于MMU的內存映射以及對操作系統的保護,運行在用戶態的應用程序一般不能直接訪問硬件地址。因此需要驅動程序作為應用程序和訪問硬件之間的媒介。
三、驅動程序的內核模塊機制(開發模式)
靜態編譯、動態加載
Linux提供了一種內核模塊機制。一個模塊被編譯成單獨的內核模塊后,一開始可以不編譯到整個內核中,當內核需要加入該模塊的時候,不需要重新編譯整個內核,只需要將該內核模塊插入(加載)到正在運行的內核中。同樣,也可以從正在運行的內核中卸載。
Linux設備驅動可以使用兩種方式被編譯和加載:
直接編譯到Linux內核,隨Linux啟動時加載,隨時可以使用該驅動程序;
編譯成一個可加載和刪除的模塊,用insmod加載,rmmod刪除。
四、驅動程序框架
三個主要部分
1、設備初始化/釋放:
負責對設備進行初始化和釋放
初始化檢測所要驅動的硬件設備是否存在、能否正常工作。如果設備正常,則對設備及相關驅動程序
需要的軟件狀態進行配置/初始化。
2、上半部分:服務于文件系統I/O
負責:通過文件系統從應用程序讀取數據,把數據通過文件系統回送給應用程序(文件系統層<->設備驅動層)
這部分由文件系統相關的系統調用執行,和調用進程屬于同一個進程,具有調用進程的運行環境,只是由用戶態變成了內核態。
3、下半部分:服務于硬件設備的I/O
負責:把數據從內核傳送到硬件,從硬件讀取數據到內核(設備驅動曾<->硬件層)
這部分可以通過中斷方式實現,對于多數設備可以提高CPU處理效率。
這部分也可以不通過中斷方式實現,只要能完成設備驅動層和硬件之間的數據通信即可。
1、字符設備驅動程序框架
2、塊設備驅動程序框架
3、網絡設備驅動程序框架
審核編輯:彭菁
-
模塊
+關注
關注
7文章
2671瀏覽量
47341 -
數據
+關注
關注
8文章
6892瀏覽量
88828 -
操作系統
+關注
關注
37文章
6738瀏覽量
123190 -
硬件
+關注
關注
11文章
3252瀏覽量
66115 -
Linux驅動
+關注
關注
0文章
43瀏覽量
9951
原文標題:Linux系統中驅動框架基本概述
文章出處:【微信號:嵌入式開發愛好者,微信公眾號:嵌入式開發愛好者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論