裝置驅動 三

2021-06-20 12:49:06 字數 1124 閱讀 1455

裝置分類

字元裝置

塊裝置網路裝置

訪問方式

順序訪問,位元組為單位

隨機訪問,固定大小為單位訪問

裝置鍵盤,鍵盤

磁碟[扇區],flash[讀:頁,寫:塊]

有無緩衝沒有有

有無裝置檔案有有

沒有

裝置號

dev_t devno;     

//32位的整數

devno = mkdev(major, minor);

31~20    主裝置號,用於識別不同型別的裝置

19~0      次裝置號,用於識別相同型別的不同裝置

建立裝置節點

mknod 型別 主裝置號 次裝置號

檢視已經申請的裝置節點

檢視/proc/devices
字元裝置驅動製作

申請裝置號

靜態方式

dev_t devno = mkdev(major, minor);     

register_chrdev_region(devno, 申請的數量, "裝置名稱");  //靜態申請,可能重複導致不能申請成功

動態方式

dev_t devno = 0;

alloc_chrdev_region(&devno, 次裝置號, 申請的數量, "裝置名稱");  //動態申請,第乙個裝置號儲存在devno中,裝置號連續

實現操作集合

定義struct file_operations結構體變數,並實現操作

其中owner = this_module

註冊字元裝置

建立struct cdev cdev;變數, 並例項化

呼叫cdev_init

設定cdev.owner = this_module;

新增到字元裝置鍊錶中,進行cdev_init,完成註冊cdev_add

解除安裝函式中從列表中刪除cdev, 釋放裝置號

裝置驅動在核心中的結構

Linux裝置驅動之字元裝置(三)

在linux裝置驅動之字元裝置 一 中學習了裝置號的構成,裝置號的申請與釋放。在linux裝置驅動之字元裝置 二 中學習了如何建立乙個字元裝置,初始化,已經註冊到系統中和最後釋放該字元裝置。本節將結合前兩節學到的知道,編寫乙個簡單的字元裝置驅動。最後總結一下字元裝置驅動的模型。include inc...

Linux驅動(三) 完善裝置驅動自動建立裝置號

include include include include include include include argc 應用程式引數個數,包括應用程式本身 ar 具體的引數內容,字串形式 int main int argc,char ar filename ar 1 獲取檔名稱 fd open f...

驅動案例三 platform按鍵驅動(一 裝置)

plat device.c include include include include include include include include include static struct resource s3c buttons resource 0 start s3c24xx pa g...