国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

就是塔塔的個(gè)人空間 http://m.qingdxww.cn/space-uid-136863.html [收藏] [復(fù)制] [RSS]

博客

RK3568驅(qū)動(dòng)指南|第二篇 字符設(shè)備基礎(chǔ)-第13章 雜項(xiàng)設(shè)備驅(qū)動(dòng)實(shí)驗(yàn)

已有 503 次閱讀2024-3-21 09:32 |個(gè)人分類:RK3568

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工藝,搭載一顆四核Cortex-A55處理器和Mali G52 2EE 圖形處理器。RK3568 支持4K 解碼和 1080P 編碼,支持SATA/PCIE/USB3.0 外圍接口。RK3568內(nèi)置獨(dú)立NPU,可用于輕量級(jí)人工智能應(yīng)用。RK3568 支持安卓 11 和 linux 系統(tǒng),主要面向物聯(lián)網(wǎng)網(wǎng)關(guān)、NVR 存儲(chǔ)、工控平板、工業(yè)檢測(cè)、工控盒、卡拉 OK、云終端、車載中控等行業(yè)。
第13章 雜項(xiàng)設(shè)備驅(qū)動(dòng)實(shí)驗(yàn)
經(jīng)過(guò)前面章節(jié)的學(xué)習(xí),我們已經(jīng)對(duì)字符設(shè)備驅(qū)動(dòng)框架有了一定的理解,而本章要講解的雜項(xiàng)設(shè)備屬于特殊的一種字符型設(shè)備,是對(duì)字符設(shè)備的一種封裝,為最簡(jiǎn)單的字符設(shè)備。為什么從字符設(shè)備中單獨(dú)提取出了雜項(xiàng)設(shè)備呢?雜項(xiàng)設(shè)備又要如何進(jìn)行使用呢?帶著疑問(wèn),讓我們進(jìn)行雜項(xiàng)設(shè)備的學(xué)習(xí)吧!

13.1 雜項(xiàng)設(shè)備驅(qū)動(dòng)簡(jiǎn)介
在Linux中,把無(wú)法歸類的五花八門(mén)的設(shè)備定義成雜項(xiàng)設(shè)備。相較于字符設(shè)備,雜項(xiàng)設(shè)備有以下兩個(gè)優(yōu)點(diǎn):

(1)節(jié)省主設(shè)備號(hào):雜項(xiàng)設(shè)備的主設(shè)備號(hào)固定為10,而字符設(shè)備不管是動(dòng)態(tài)分配還是靜態(tài)分配設(shè)備號(hào),都會(huì)消耗一個(gè)主設(shè)備號(hào),進(jìn)而造成了主設(shè)備號(hào)浪費(fèi)。當(dāng)系統(tǒng)中注冊(cè)了多個(gè)misc設(shè)備驅(qū)動(dòng)時(shí),只需使用子設(shè)備號(hào)進(jìn)行區(qū)分即可。

(2)使用簡(jiǎn)單:當(dāng)使用普通的字符設(shè)備驅(qū)動(dòng)時(shí),如果開(kāi)發(fā)人員需要導(dǎo)出操作接口給用戶空間,就需要注冊(cè)對(duì)應(yīng)的字符驅(qū)動(dòng),并創(chuàng)建字符設(shè)備class從而自動(dòng)在/dev下生成設(shè)備節(jié)點(diǎn),而misc驅(qū)動(dòng)只需要將基本信息通過(guò)結(jié)構(gòu)體傳遞給相應(yīng)處理函數(shù)即可。

在驅(qū)動(dòng)中使用miscdevice結(jié)構(gòu)體描述misc設(shè)備,該結(jié)構(gòu)體定義在“內(nèi)核源碼/include/linux/miscdevice.h”文件中(在下面的實(shí)驗(yàn)代碼中需要加入該頭文件的引用),具體內(nèi)容如下所示:

定義一個(gè)misc 設(shè)備,一般只需要填充minor、name、fops 這三個(gè)成員變量。

minor指次設(shè)備號(hào),可以從“內(nèi)核源碼/include/linux/miscdevice.h”文件中預(yù)定義的次設(shè)備號(hào)挑選,也可以自行定義子設(shè)備號(hào)(沒(méi)有被其他設(shè)備使用即可),通常情況下將該參數(shù)設(shè)置為MISC_DYNAMIC_MINOR,表示自動(dòng)分配子設(shè)備號(hào)。

name表示misc設(shè)備的名字。misc設(shè)備驅(qū)動(dòng)注冊(cè)成功之后,會(huì)在dev目錄下生成名為name的設(shè)備節(jié)點(diǎn)。

fops 指向了file_operations的結(jié)構(gòu)體,表示字符設(shè)備的操作集合。

13.2 雜項(xiàng)設(shè)備的注冊(cè)和卸載

不同于字符設(shè)備的注冊(cè)和卸載的繁瑣,雜項(xiàng)設(shè)備的注冊(cè)可以直接使用函數(shù)misc_register函數(shù)來(lái)完成,雜項(xiàng)設(shè)備的卸載可以直接使用misc_deregister函數(shù)來(lái)完成。上述兩個(gè)函數(shù)均定義在“內(nèi)核源碼/include/linux/miscdevice.h”文件當(dāng)中。

雜項(xiàng)設(shè)備的注冊(cè):

函數(shù)原型:

​int misc_register(struct miscdevice *misc)

函數(shù)作用:

​基于misc_class構(gòu)造一個(gè)設(shè)備,將miscdevice結(jié)構(gòu)掛載到misc_list列表上,并初始化與linux設(shè)備模型相關(guān)的結(jié)構(gòu)。進(jìn)而起到雜項(xiàng)設(shè)備注冊(cè)的作用。

參數(shù)含義:

​misc: 雜項(xiàng)設(shè)備的結(jié)構(gòu)體指針

函數(shù)返回值:申請(qǐng)成功返回0,申請(qǐng)失敗返回負(fù)數(shù)

雜項(xiàng)設(shè)備的卸載:

函數(shù)原型:

​int misc_deregister(struct miscdevice *misc)

函數(shù)作用:

​從mist_list中刪除miscdevice,進(jìn)而起到雜項(xiàng)設(shè)備卸載的作用。

參數(shù)含義:

​ misc: 雜項(xiàng)設(shè)備的結(jié)構(gòu)體指針

**函數(shù)返回值:**卸載成功返回0,申請(qǐng)失敗返回負(fù)數(shù)

至此,注冊(cè)和卸載雜項(xiàng)設(shè)備的API函數(shù)就講解完成了,會(huì)在接下來(lái)的驅(qū)動(dòng)章節(jié)中對(duì)上述函數(shù)進(jìn)行具體使用。

13.3 雜項(xiàng)設(shè)備驅(qū)動(dòng)框架

MISC驅(qū)動(dòng)一般使用以下結(jié)構(gòu):

13.4 實(shí)驗(yàn)程序的編寫(xiě)

本實(shí)驗(yàn)對(duì)應(yīng)的網(wǎng)盤(pán)路徑為:iTOP-RK3568開(kāi)發(fā)板【底板V1.7版本】\03_【iTOP-RK3568開(kāi)發(fā)板】指南教程\02_Linux驅(qū)動(dòng)配套資料\04_Linux驅(qū)動(dòng)例程\08。

本小節(jié)將編寫(xiě)最簡(jiǎn)單的misc驅(qū)動(dòng),在驅(qū)動(dòng)入口函數(shù)中通過(guò)misc_register(…)函數(shù)注冊(cè)雜項(xiàng)設(shè)備驅(qū)動(dòng),在驅(qū)動(dòng)出口函數(shù)中通過(guò)misc_deregister(…)函數(shù)注銷雜項(xiàng)設(shè)備驅(qū)動(dòng)。編寫(xiě)完成的miscdevice.c代碼如下所示:

13.5 運(yùn)行測(cè)試
13.5.1 編譯驅(qū)動(dòng)程序

在上一小節(jié)中的miscdevice.c代碼同一目錄下創(chuàng)建 Makefile 文件,Makefile 文件內(nèi)容如下所示:

Makefile保存退出之后,來(lái)到存放miscdevice.c和Makefile文件目錄下,如下圖(圖13-1)所示:

然后使用命令“make”進(jìn)行驅(qū)動(dòng)的編譯,編譯完成如下圖(圖 13-2)所示:

編譯完生成 miscdevice.ko目標(biāo)文件,如下圖(圖 13-3)所示:

至此我們的驅(qū)動(dòng)模塊就編譯成功了,下面進(jìn)行驅(qū)動(dòng)的運(yùn)行測(cè)試。

可以看到驅(qū)動(dòng)加載之后,打印“misc registe is succeed”,說(shuō)明misc驅(qū)動(dòng)注冊(cè)成功。輸入以下命令查看加載的驅(qū)動(dòng)模塊,驅(qū)動(dòng)加載成功如下(圖13-5)所示:

然后來(lái)到/sys/class/misc目錄下,可以看到名為“test”的文件夾已經(jīng)被創(chuàng)建了,在/sys/class/misc目錄下有misc類的所有設(shè)備,每個(gè)注冊(cè)的雜項(xiàng)設(shè)備對(duì)應(yīng)一個(gè)文件夾目錄,如下圖(圖13-6)所示:

驅(qū)動(dòng)加載成功之后會(huì)生成/dev/test設(shè)備驅(qū)動(dòng)文件,輸入以下命令查看雜項(xiàng)設(shè)備的主次設(shè)備號(hào)。

結(jié)果如下圖(圖 13-8)所示:

從上圖可以看出,/dev/test這個(gè)雜項(xiàng)設(shè)備的主設(shè)備號(hào)為10,次設(shè)備號(hào)為53,最后可以使用以下命令對(duì)驅(qū)動(dòng)進(jìn)行卸載,卸載完成如下圖(圖 13-9)所示:

更多內(nèi)容:B站搜索迅為RK3568開(kāi)發(fā)板


路過(guò)

雞蛋

鮮花

握手

雷人

評(píng)論 (0 個(gè)評(píng)論)

facelist

您需要登錄后才可以評(píng)論 登錄 | 立即注冊(cè)

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
返回頂部
主站蜘蛛池模板: 国产欧美成人一区二区三区 | 久久亚洲精品成人 | 99久久精品费精品国产一区二 | 另类专区亚洲 | 久久99精品久久久久久秒播放器 | 自拍偷拍第一页 | 黄色一级片黄色一级片 | 欧美经典成人在观看线视频 | 国产三级成人 | 最新在线观看精品国产福利片 | 欧美 日韩 亚洲另类专区 | 日日日日日日日日日日 | 国产精品国产三级在线高清观看 | 四虎在线精品免费高清在线 | 女老师在线看 | 三级网站视频 | 日韩a在线看免费观看视频 日韩a在线观看 | 激情毛片 | 国产成人精品男人的天堂下载 | 日本大片成人免费播放 | 一级黄色毛片 | 精品免费 | 黄色视屏免费观看 | 九色精品在线 | 美国美女一级毛片免费全 | 免费人成网站免费看视频 | 国产在线干 | 韩国毛片免费 | 国产精品一区二区三区免费 | 欧美一区永久视频免费观看 | www.日韩在线观看 | 日日噜噜夜夜狠狠tv视频免费 | 亚洲最大情网站在线观看 | 手机在线免费不卡一区二 | 久久久噜噜噜久久 | 欧美高清视频www夜色资源网 | 九九久久精品国产免费看小说 | 欧美韩国日本在线 | 美女一级毛片免费不卡视频 | 手机毛片在线观看 | 免费观看黄色视屏 |