|
文件私有數據的概念在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開發板