<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

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

    博客

    RK3568驅動指南|第二篇 字符設備基礎-第15章 文件私有數據實驗

    已有 630 次閱讀2024-4-11 14:42 |個人分類:RK3568

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

    15.1 文件私有數據簡介
    Linux中并沒有明確規定要使用文件私有數據,但是在linux驅動源碼中,廣泛使用了文件私有數據,這是Linux驅動遵循的“潛規則”,實際上也體現了Linux面向對象的思想。struct file 結構體中專門為用戶留了一個域用于定義私有數據。結構體內容如下所示:

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

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

    我們可以在read write函數中通過private_data訪問設備結構體,如下所示:

    15.2 實驗程序編寫

    15.2.1 驅動程序編寫

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

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

    15.2.2 編寫測試 APP

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

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

    15.3 運行測試

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

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

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

    至此我們的驅動模塊就編譯成功了,下面進行應用程序編譯,

    15.3.2 編譯應用程序

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

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

    下面進行驅動程序的測試。

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

    ls /dev/test -al

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

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

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

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


    路過

    雞蛋

    鮮花

    握手

    雷人

    評論 (0 個評論)

    facelist

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

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    返回頂部
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷