查看/proc/devices 文件可以獲知系統(tǒng)中注冊(cè)的設(shè)備勾徽,第 1 列為主設(shè)備號(hào),第 2 列為設(shè)備名,cat /dev/ 可以查看到所有的設(shè)備節(jié)點(diǎn)
手動(dòng)創(chuàng)建設(shè)備名
mknod /dev/設(shè)備名 設(shè)備類(lèi)型(字符:c,塊:b) 主設(shè)備號(hào) 從設(shè)備號(hào)
自動(dòng)創(chuàng)建
在驅(qū)動(dòng)初始化代碼里調(diào)用class_create為該設(shè)備創(chuàng)建一個(gè)class,再為每個(gè)設(shè)備調(diào)用device_create創(chuàng)建對(duì)應(yīng)的設(shè)備。
- 驅(qū)動(dòng)加載:分配設(shè)備號(hào)----注冊(cè)字符設(shè)備------------動(dòng)態(tài)創(chuàng)建設(shè)備節(jié)點(diǎn)。
- 驅(qū)動(dòng)卸載:刪除設(shè)備節(jié)點(diǎn)----取消字符設(shè)備的注冊(cè)-----------刪除設(shè)備號(hào)私恬。
1、定義一個(gè)class炼吴,和一個(gè)設(shè)備的結(jié)構(gòu)指針
- static struct class *class
- static struct device *class_dev
2本鸣、創(chuàng)建字符設(shè)備
3、調(diào)用 test_class = class_create(THIS_MODULE,“test_class”)
會(huì)在sys/class目錄下生成test_class文件夾硅蹦,test_class可以隨意命名
4荣德、調(diào)用test_class_dev = device_create(test_class, parent->dev, MKDEV(major, 0), drver_data(驅(qū)動(dòng)的數(shù)據(jù)), “xxx”)
會(huì)在/dev目錄下生成xxx的設(shè)備文件,major是主設(shè)備號(hào)
5童芹、注銷(xiāo)順序
- device_destroy() 刪除設(shè)備節(jié)點(diǎn)
- class_destroy() 刪除class
- unregister_chrdev()