Linux字元裝置驅動組成 載入,解除安裝day01

2021-08-30 11:16:01 字數 1211 閱讀 9723

day01

摘要:linux裝置驅動原理, 字元裝置載入解除安裝函式

最近在學習linux裝置驅動相關的知識.

為了能夠系統的學習,把知識點總結一下,方便以後複習查證.

1.原理:

系統呼叫是作業系統核心和應用程式之間的介面

裝置驅動程式是作業系統核心和機器硬體之間的介面

裝置驅動程式為應用程式遮蔽了硬體的細節,這樣在應用程式看來,硬體裝置只是乙個裝置檔案,應用程式可以象操作普通檔案一樣對硬體裝置進行操作。裝置驅動程式是核心的一部分,它完成以下的功能:

(1)對裝置初始化和釋放;

(2)把資料從核心傳送到硬體和從硬體讀取資料;

(3)讀取應用程式傳送給裝置檔案的資料和回送應用程式請求的資料;

(4)檢測和處理裝置出現的錯誤。

在linux作業系統下有三類主要的裝置檔案型別,一是字元裝置,二是塊裝置,三是網路裝置。字元裝置和塊裝置的主要區別是:在對字元裝置發出讀/寫請求時,實際的硬體i/o一般就緊接著發生了,塊裝置則不然,它利用一塊系統記憶體作緩衝區,當使用者程序對裝置請求能滿足使用者的要求,就返回請求的資料,如果不能,就呼叫請求函式來進行實際的i/o操作。塊裝置是主要針對磁碟等慢速裝置設計的,以免耗費過多的cpu時間來等待。

注意:在使用者程序呼叫驅動程式時,系統進入核心態,這時不再是搶先式排程.

linux系統下一切皆檔案,驅動程式的呼叫無非是一些系統呼叫,這裡就用到乙個很重要的結構體:file_operations.下文詳細說明.

以下知識點側重字元裝置驅動.

2.linux字元裝置驅動的組成

(1)載入,解除安裝

載入函式: 裝置號申請, cdev註冊

解除安裝函式: 裝置號釋放, cdev登出

模板:

/*裝置結構體*/

struct ***_dev_t***_dev;

/*模組載入函式*/

static int __init ***_init(void)

else

ret = cdev_add(&***_dev.cdev,***_dev_no,1); /*註冊裝置號*/

}/*模組解除安裝函式*/

static void__exit ***_exit(void)

day02介紹file_operations結構體

linux 驅動 字元裝置驅動的組成

1包含的標頭檔案 巨集及裝置結構體 裝置結構體 struct dev t dev 2.字元裝置驅動模組載入與解除安裝函式 裝置驅動模組載入函式 static int init init void 裝置驅動模組解除安裝函式 static void exit exit void 3.字元裝置驅動的fil...

驅動 linux裝置驅動 字元裝置驅動開發

preface 前面對linux裝置驅動的相應知識點進行了總結,現在進入實踐階段!linux 裝置驅動入門篇 linux 裝置驅動掃盲篇 fedora下的字元裝置驅動開發 開發乙個基本的字元裝置驅動 在linux核心驅動中,字元裝置是最基本的裝置驅動。字元裝置包括了裝置最基本的操作,如開啟裝置 關閉...

Linux裝置驅動之《字元裝置驅動》

linux裝置中最大的特點就是裝置操作猶如檔案操作一般,在應用層看來,硬體裝置只是乙個裝置檔案。應用程式可以像操作檔案一樣對硬體裝置進行操作,如open close read write 等。下面是乙個字元裝置驅動程式的簡單實現test.c 模組分析 1.初始化裝置驅動的結構體 struct fil...