裝置分類
字元裝置
塊裝置網路裝置
訪問方式
順序訪問,位元組為單位
隨機訪問,固定大小為單位訪問
裝置鍵盤,鍵盤
磁碟[扇區],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...