字元裝置驅動

2021-07-24 23:41:04 字數 804 閱讀 7541

問題:兩個註冊裝置驅動的函式有什麼區別?

乙個是:register_chrdev()另外乙個是:cdev_add()

例一://載入模組

static int __init ***_init(void)

register_chrdev(111,"my_led",&my_dev_fops);//註冊裝置 

}//解除安裝模組

static int __exit ***_exit(void)

例二:部落格中的字元驅動

1  //裝置結構體 

2  struct ***_dev_t 

3   ***_dev; 

7  //裝置驅動模組載入函式 

8  static int _ _init ***_init(void) 

9   

18   else 

19    

22    

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

24   ... 

25 } 

26 /*裝置驅動模組解除安裝函式*/ 

27 static void _ _exit ***_exit(void) 

28  

register_chrdev()是向系統註冊裝置,註冊裝置時包括分配裝置號(主裝置都確定了)為裝置分配資源等,所有的操作在這個函式中一步完成;

但是cdev_add()是在你申請了裝置號,cdev結構體初始化後進行的乙個向chrdevs[255]指標陣列上新增乙個裝置,主裝置號確定,次裝置號是乙個範圍。

裝置驅動例項 字元裝置驅動

在整個linux裝置驅動學習中,字元裝置驅動較為基礎。通過對它的學習,對裝置驅動進一步加深了解 cdev 結構體struct cdev 講下比較重要的成員變數 dev t dev 定義了32位的裝置號,其中12位是主裝置號,20位是從裝置號。獲取主裝置號 major dev t dev 獲取從裝置號...

字元裝置驅動

字元裝置驅動 概述 塊裝置 字元裝置以及網路裝置中塊裝置和網路裝置一般都會硬體配置完備,對於程式設計師而言,能夠更多操作的就是字元裝置。設定字元裝置的一般步驟 1.初始化硬體 2.定義fops file operations 3.申請cdev,掛載fops 3.加入cdev 函式cdev add 主...

字元裝置驅動

標頭檔案包含 include 變數定義 define gpgconaddr 0x56000060 硬體中斷號定義 define key1 irq irq eint5 define key2 irq irq eint3 裝置名定義 define devname mykey 主裝置號 cdev定義 需全...