RK3568驅動(dòng)指南|第二篇 字符設備基礎-第11章 創(chuàng )建設備節點(diǎn)實(shí)驗(一)
函數作用:
用于動(dòng)態(tài)創(chuàng )建設備的邏輯類(lèi),并完成部分字段的初始化,然后將其添加進(jìn)Linux內核系統。
參數含義:
owner:struct module結構體類(lèi)型的指針,指向函數即將創(chuàng )建的這個(gè)struct
class的模塊。一般賦值為T(mén)HIS_MODULE。
name:char類(lèi)型的指針,代表即將創(chuàng )建的struct class變量的名字。
返回值:struct class * 類(lèi)型的結構體。
class_destroy(…)函數
該函數在“內核源碼/include/linux/device.h”文件中所引用,如下(圖11-2)所示:
圖 11-2
函數作用:
用于刪除設備的邏輯類(lèi),即從Linux內核系統中刪除設備的邏輯類(lèi)。
參數含義:
owner:struct module結構體類(lèi)型的指針,指向函數即將創(chuàng )建的這個(gè)struct
class的模塊。一般賦值為T(mén)HIS_MODULE。
name:char類(lèi)型的指針,代表即將創(chuàng )建的struct class變量的名字。
返回值:無(wú)
device_create(…)函數
該函數在“內核源碼/include/linux/device.h”文件中所引用,如下(圖11-3)所示:
函數作用:
用來(lái)在class類(lèi)中下創(chuàng )建一個(gè)設備屬性文件,udev會(huì )自動(dòng)識別從而進(jìn)行設備節點(diǎn)的創(chuàng )建。
參數含義:
cls:指定所要創(chuàng )建的設備所從屬的類(lèi)。
parent:指定該設備的父設備,如果沒(méi)有就指定為NULL。
devt:指定創(chuàng )建設備的設備號。
drvdata:被添加到該設備回調的數據,沒(méi)有則指定為NULL。
fmt:添加到系統的設備節點(diǎn)名稱(chēng)。
返回值:struct device * 類(lèi)型結構體
device_destroy(…)函數
在“內核源碼/include/linux/device.h”文件中所引用,如下(圖11-4)所示:
函數作用:
用來(lái)刪除class類(lèi)中的設備屬性文件,udev會(huì )自動(dòng)識別從而進(jìn)行設備節點(diǎn)的刪除。
參數含義:
cls:指定所要創(chuàng )建的設備所從屬的類(lèi)。
devt:指定創(chuàng )建設備的設備號。
返回值:無(wú)
至此,關(guān)于自動(dòng)創(chuàng )建節點(diǎn)相關(guān)的函數就介紹完成了,會(huì )在下一小節中對于設備節點(diǎn)的自動(dòng)創(chuàng )建進(jìn)行相應實(shí)驗程序的編寫(xiě)。
11.2 實(shí)驗程序的編寫(xiě)
本實(shí)驗對應的網(wǎng)盤(pán)路徑為:iTOP-RK3568開(kāi)發(fā)板【底板V1.7版本】\03_【iTOP-RK3568開(kāi)發(fā)板】指南教程\02_Linux驅動(dòng)配套資料\04_Linux驅動(dòng)例程\06。
本章實(shí)驗將編寫(xiě)Linux下的自動(dòng)創(chuàng )建設備節點(diǎn)實(shí)驗代碼,首先采用自動(dòng)申請設備號的方式進(jìn)行設備號的申請,并對獲取的主設備號與次設備號進(jìn)行打印,之后對字符設備進(jìn)行注冊(file_operations結構體只填充owner 字段即可,會(huì )在下個(gè)章節對file_operations結構體進(jìn)行講解),最后自動(dòng)對設備節點(diǎn)進(jìn)行創(chuàng )建。
編寫(xiě)完成的chrdev_node.c代碼如下(圖11-5)所示
相較于上一章節實(shí)驗,本章節代碼在入口函數中添加了自動(dòng)創(chuàng )建設備節點(diǎn)相關(guān)代碼,在驅動(dòng)出口函數中添加了相應的刪除設備節點(diǎn)相關(guān)代碼(相關(guān)代碼已加粗)。
需要注意的是,在進(jìn)行設備節點(diǎn)添加時(shí),類(lèi)的創(chuàng )建要放在設備創(chuàng )建之前;在進(jìn)行設備節點(diǎn)刪除時(shí),類(lèi)的刪除要放在設備刪除之后。
11.3 運行測試
11.3.1 編譯驅動(dòng)程序
在上一小節中的chrdev_node.c代碼同一目錄下創(chuàng )建 Makefile 文件,Makefile 文件內容如下(圖11-6)所示:
對于Makefile的內容注釋已在上圖添加,保存退出之后,來(lái)到存放chrdev_node.c和Makefile文件目錄下,如下圖(圖11-7)所示:
然后使用命令“make”進(jìn)行驅動(dòng)的編譯,編譯完成如下圖(圖11-8)所示:
編譯完生成 chrdev_node.ko目標文件,如下圖(圖11-9)所示:
至此我們的驅動(dòng)模塊就編譯成功了,下面進(jìn)行驅動(dòng)的運行測試。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。