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

博客

RK3568驅動(dòng)指南|第二篇 字符設備基礎-第15章 文件私有數據實(shí)驗

已有 632 次閱讀2024-4-11 14:42 |個(gè)人分類(lèi):RK3568

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工藝,搭載一顆四核Cortex-A55處理器和Mali G52 2EE 圖形處理器。RK3568 支持4K 解碼和 1080P 編碼,支持SATA/PCIE/USB3.0 外圍接口。RK3568內置獨立NPU,可用于輕量級人工智能應用。RK3568 支持安卓 11 和 linux 系統,主要面向物聯(lián)網(wǎng)網(wǎng)關(guān)、NVR 存儲、工控平板、工業(yè)檢測、工控盒、卡拉 OK、云終端、車(chē)載中控等行業(yè)。
第15章 文件私有數據實(shí)驗
在之前章節編寫(xiě)的驅動(dòng)程序中,將生成字符設備的一些硬件屬性(設備號、類(lèi)、設備名稱(chēng)等)全都寫(xiě)成了變量的形式,雖然這樣編寫(xiě)驅動(dòng)代碼不會(huì )產(chǎn)生報錯,但是會(huì )顯得有點(diǎn)不專(zhuān)業(yè)。通常在驅動(dòng)開(kāi)發(fā)中會(huì )為設備定義相關(guān)的設備結構體,將硬件屬性的描述信息全部放在該結構體中,在本章節中將對設備結構體的功能實(shí)現和文件私有數據進(jìn)行學(xué)習。

15.1 文件私有數據簡(jiǎn)介
Linux中并沒(méi)有明確規定要使用文件私有數據,但是在linux驅動(dòng)源碼中,廣泛使用了文件私有數據,這是Linux驅動(dòng)遵循的“潛規則”,實(shí)際上也體現了Linux面向對象的思想。struct file 結構體中專(zhuān)門(mén)為用戶(hù)留了一個(gè)域用于定義私有數據。結構體內容如下所示:

文件私有數據的概念在Linux驅動(dòng)中有著(zhù)非常廣泛的應用,文件私有數據就是將私有數據private_data指向設備結構體。通過(guò)它可以將私有數據一路從open函數帶到read, write函數層層傳入。一般是在open 的時(shí)候賦值,read、write時(shí)使用。open函數中私有數據的使用如下所示:

在上述代碼中,定義了一個(gè)設備結構體dev1,然后在open函數中,將私有數據private_data指向了設備結構體dev1。

我們可以在read write函數中通過(guò)private_data訪(fǎng)問(wèn)設備結構體,如下所示:

15.2 實(shí)驗程序編寫(xiě)

15.2.1 驅動(dòng)程序編寫(xiě)

本驅動(dòng)程序對應的網(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)例程\10\module。

本章實(shí)驗將編寫(xiě)Linux下的使用文件私有數據實(shí)例代碼,在open函數中對私有數據結構體賦值,在write函數中使用。編寫(xiě)完成的代碼如下所示:

15.2.2 編寫(xiě)測試 APP

本應用程序對應的網(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)例程\10\app。

編寫(xiě)測試APP其實(shí)是在編寫(xiě)Linux應用,在應用程序中向設備文件寫(xiě)入數據,編寫(xiě)完成的應用程序app.c代碼如下所示:

15.3 運行測試

對于Makefile的內容注釋已在上圖添加,保存退出之后,來(lái)到存放file.c和Makefile文件目錄下,如下圖(圖15-1)所示:

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

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

至此我們的驅動(dòng)模塊就編譯成功了,下面進(jìn)行應用程序編譯,

15.3.2 編譯應用程序

因為測試APP是要在開(kāi)發(fā)板上運行的,所以需要aarch64-linux-gnu-gcc來(lái)編譯,輸入以下命令,編譯完成以后會(huì )生成一個(gè)app的可執行程序,如下圖(圖15-4)所示:

aarch64-linux-gnu-gcc app.c -o app

下面進(jìn)行驅動(dòng)程序的測試。

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

ls /dev/test -al

結果如下圖(圖15-6)所示:

運行應用程序,如下(圖 15-6)所示:

在此實(shí)驗中,將硬件屬性的信息全部放在一個(gè)結構體private_data,依然可以實(shí)現字符設備的操作。

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

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
返回頂部
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页