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

就是塔塔的個人空間 http://www.qingdxww.cn/space-uid-136863.html [收藏] [復制] [RSS]

博客

RK3568驅動指南|第二篇 字符設備基礎-第13章 雜項設備驅動實驗

已有 489 次閱讀2024-3-21 09:32 |個人分類:RK3568

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

13.1 雜項設備驅動簡介
在Linux中,把無法歸類的五花八門的設備定義成雜項設備。相較于字符設備,雜項設備有以下兩個優點:

(1)節省主設備號:雜項設備的主設備號固定為10,而字符設備不管是動態分配還是靜態分配設備號,都會消耗一個主設備號,進而造成了主設備號浪費。當系統中注冊了多個misc設備驅動時,只需使用子設備號進行區分即可。

(2)使用簡單:當使用普通的字符設備驅動時,如果開發人員需要導出操作接口給用戶空間,就需要注冊對應的字符驅動,并創建字符設備class從而自動在/dev下生成設備節點,而misc驅動只需要將基本信息通過結構體傳遞給相應處理函數即可。

在驅動中使用miscdevice結構體描述misc設備,該結構體定義在“內核源碼/include/linux/miscdevice.h”文件中(在下面的實驗代碼中需要加入該頭文件的引用),具體內容如下所示:

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

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

name表示misc設備的名字。misc設備驅動注冊成功之后,會在dev目錄下生成名為name的設備節點。

fops 指向了file_operations的結構體,表示字符設備的操作集合。

13.2 雜項設備的注冊和卸載

不同于字符設備的注冊和卸載的繁瑣,雜項設備的注冊可以直接使用函數misc_register函數來完成,雜項設備的卸載可以直接使用misc_deregister函數來完成。上述兩個函數均定義在“內核源碼/include/linux/miscdevice.h”文件當中。

雜項設備的注冊:

函數原型:

​int misc_register(struct miscdevice *misc)

函數作用:

​基于misc_class構造一個設備,將miscdevice結構掛載到misc_list列表上,并初始化與linux設備模型相關的結構。進而起到雜項設備注冊的作用。

參數含義:

​misc: 雜項設備的結構體指針

函數返回值:申請成功返回0,申請失敗返回負數

雜項設備的卸載:

函數原型:

​int misc_deregister(struct miscdevice *misc)

函數作用:

​從mist_list中刪除miscdevice,進而起到雜項設備卸載的作用。

參數含義:

​ misc: 雜項設備的結構體指針

**函數返回值:**卸載成功返回0,申請失敗返回負數

至此,注冊和卸載雜項設備的API函數就講解完成了,會在接下來的驅動章節中對上述函數進行具體使用。

13.3 雜項設備驅動框架

MISC驅動一般使用以下結構:

13.4 實驗程序的編寫

本實驗對應的網盤路徑為:iTOP-RK3568開發板【底板V1.7版本】\03_【iTOP-RK3568開發板】指南教程\02_Linux驅動配套資料\04_Linux驅動例程\08。

本小節將編寫最簡單的misc驅動,在驅動入口函數中通過misc_register(…)函數注冊雜項設備驅動,在驅動出口函數中通過misc_deregister(…)函數注銷雜項設備驅動。編寫完成的miscdevice.c代碼如下所示:

13.5 運行測試
13.5.1 編譯驅動程序

在上一小節中的miscdevice.c代碼同一目錄下創建 Makefile 文件,Makefile 文件內容如下所示:

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

然后使用命令“make”進行驅動的編譯,編譯完成如下圖(圖 13-2)所示:

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

至此我們的驅動模塊就編譯成功了,下面進行驅動的運行測試。

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

然后來到/sys/class/misc目錄下,可以看到名為“test”的文件夾已經被創建了,在/sys/class/misc目錄下有misc類的所有設備,每個注冊的雜項設備對應一個文件夾目錄,如下圖(圖13-6)所示:

驅動加載成功之后會生成/dev/test設備驅動文件,輸入以下命令查看雜項設備的主次設備號。

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

從上圖可以看出,/dev/test這個雜項設備的主設備號為10,次設備號為53,最后可以使用以下命令對驅動進行卸載,卸載完成如下圖(圖 13-9)所示:

更多內容:B站搜索迅為RK3568開發板


路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

facelist

您需要登錄后才可以評論 登錄 | 立即注冊

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
返回頂部
主站蜘蛛池模板: 色综合成人网 | 国产成人精品免费 | 日本视频在线观看不卡高清免费 | 日日射天天操 | 视频黄色免费 | 日本二区免费一片黄2019 | 国产精品伦理一区二区三区 | 狠狠操操操| 91欧美精品 | 亚洲第一免费播放区 | 精品特级毛片 | 日本高免费观看在线播放 | 天天插天天爽 | 男女午夜影院 | 亚洲欧美日韩精品中文乱码 | 男人的天堂免费在线观看 | 九一色视频 | 一级做a爰片性色毛片黄书 一级做a爰片欧美一区 | 91在线精品播放 | 破外女出血一级毛片 | 美女视频黄的免费视频网页 | 久久99精品久久久久子伦小说 | 精品一区二区免费视频 | 青青青激情视频在线最新 | 白色强人粤语版在线观看港剧网 | 欧美高清一区二区三区欧美 | 日本不卡一区二区三区四区 | 日本高清免费中文字幕不卡 | 天天操天天干天天舔 | 中文在线最新版天堂8 | 亚洲免费在线播放 | 啄木乌欧美一区二区三区 | 亚洲精品天堂在线 | 国产精品热久久毛片 | 热久久网站 | 亚洲一区二区三区四区在线观看 | 欧美黑人一级片 | 黄色一级a毛片 | 午夜网站入口 | 日韩欧美一区二区在线 | 日本夜夜操 |