MISC裝置驅動分析及實現

2021-07-26 13:57:59 字數 1775 閱讀 4944

misc的意思是各式各樣。

misc裝置屬於字元裝置,是因為字元裝置多種多樣,很多無法歸類的字元裝置都歸在misc裝置中

misc裝置共享了同乙個主裝置號 misc_major = 10 ,根據不同的次裝置號區分不同的裝置

misc由於共享了同一主裝置號,所以它是自動生成裝置節點的

它的open函式由核心實現好了

一般裝置驅動都離不開幾個步驟,misc裝置驅動也是如此。

定義—->初始化—>註冊–>釋放

小建議:如果我們要編寫什麼裝置的驅動,最好是開啟相應裝置的.h原始碼,這樣對應的操作函式一目了然,如本例中,可以開啟miscdevice.h 標頭檔案來檢視核心提供的函式和結構體。

miscdevice結構體表徵了miscdevice裝置,所以第一步先定義乙個miscdevice裝置。

struct miscdevice misc_demo;
結構體內容為

struct miscdevice  ;
初始化即初始化miscdevice結構體

misc.minor = misc_dynamic_minor(系統動態分配乙個次裝置號)

misc.name = "misc_demo"

同時我們也應編寫操作方法集來填充成員const struct file_operations *fops

struct file_operations misc_fops = 

misc.fops = &misc_fops;

註冊和釋放就直接使用了核心提供的函式介面

int misc_register(struct miscdevice *misc);

/*****

*****

*****

*****

*****

*****

*****

*****

*****

功能:註冊miscdevice

輸入引數:miscdevice結構體

返回值:成功返回0,失敗返回負的錯誤碼

*****

*****

*****

*****

*****

*****

*****

*****

*****/

int misc_deregister(struct miscdevice *misc); 

/*****

*****

*****

*****

*****

*****

*****

*****

*****

功能:釋放miscdevice

輸入引數:miscdevice結構體

返回值:成功返回0,失敗返回負的錯誤碼

*****

*****

*****

*****

*****

*****

*****

*****

*****/

這樣,最簡單的乙個misc裝置驅動就完成了。在實際工作中,我們還需要編寫操作硬體的函式和提供使用者層的函式,對應相應的裝置有著相應的驅動方案。

misc雜項裝置驅動

linux裡面的misc雜項裝置是主裝置號為10的驅動裝置,它的註冊跟使用比較的簡單,所以比較適用於功能簡單的裝置。它有自己的裝置結構體 struct miscdevice 它在標頭檔案linux miscdevice.h裡面有定義,其中minor是misc裝置的副裝置號,misc裝置主要依賴min...

misc裝置驅動模型及例項解析

1 misc裝置驅動模型 本節我們來看一下misc裝置驅動模型的有關內容,首先是看看它的裝置結構體,定義在include linux miscdevice.h中 cpp view plain copy struct miscdevice 結構體中的部分成員我們是一目了然的,主要是來看看有疑惑的幾點 ...

misc裝置驅動模型及例項解析

1 misc裝置驅動模型 本節我們來看一下misc裝置驅動模型的有關內容,首先是看看它的裝置結構體,定義在include linux miscdevice.h中 cpp view plain copy struct miscdevice 結構體中的部分成員我們是一目了然的,主要是來看看有疑惑的幾點 ...