選擇迅為開發(fā)板,就是選擇完整的技術(shù)保障體系
在RK3568核心板同質(zhì)化日趨嚴(yán)重的今天,載板的設(shè)計與用料才是真正區(qū)分“玩具”與“工具”的分水嶺。迅為RK3568開發(fā)板憑借其工業(yè)級設(shè)計理念,將RK3568的強(qiáng)勁算力安全、可靠地輸送到每一個工業(yè)應(yīng)用節(jié)點(diǎn)。
迅為科技為您提供全方位支持:
·完整資料庫:提供數(shù)據(jù)手冊、硬件原理圖、源碼包、編譯指南等
·技術(shù)保障:資深工程師團(tuán)隊提供專業(yè)的技術(shù)支持服務(wù)
·持續(xù)更新:系統(tǒng)源碼持續(xù)維護(hù),定期發(fā)布功能更新與優(yōu)化
·工業(yè)級品質(zhì):-40℃至+85℃寬溫設(shè)計,滿足嚴(yán)苛工業(yè)環(huán)境需求
對于正在開發(fā)工業(yè)控制器、邊緣計算網(wǎng)關(guān)、機(jī)器視覺設(shè)備或智能NVR的開發(fā)者而言,迅為提供的穩(wěn)定平臺和完善支持,正是項目成功的關(guān)鍵保障。


第4章 驅(qū)動模塊傳參實(shí)驗(yàn)
本章我們學(xué)習(xí)驅(qū)動模塊傳參,加載內(nèi)核模塊時使用insmod命令也可以傳遞參數(shù)。
4.1 內(nèi)核模塊傳參簡介
內(nèi)核模塊傳參是一種可以隨時向內(nèi)核模塊傳遞、修改參數(shù)的方法。例如可以傳遞串口驅(qū)
動的波特率、數(shù)據(jù)位數(shù)、校驗(yàn)位、停止位等參數(shù)進(jìn)行功能的設(shè)置,從而節(jié)省編譯模塊的時間,
提高調(diào)試速度。
Linux內(nèi)核提供了module_param(name, type, perm)、module_param_array(name, type, nu
mp, perm)宏和module_param_string(name, string, len, perm)宏,分別進(jìn)行基本類型、數(shù)組和字
符串參數(shù)的傳遞。這些宏定義在內(nèi)核源碼/include/linux/moduleparam.h文件中(在module.h頭文
件中已經(jīng)對export.h頭進(jìn)行引用,所以不需要單獨(dú)引用moduleparam.h文件),詳細(xì)定義如代碼4.
1所示:

module_param宏用來進(jìn)行基本類型參數(shù)的傳遞。其中參數(shù)name表示模塊參數(shù)的名稱。
參數(shù)type表示模塊參數(shù)的數(shù)據(jù)類型,參數(shù)type可以取以下任意一種情況:

參數(shù)perm表示在sysfs中相應(yīng)文件的訪問權(quán)限。訪問權(quán)限與Linux中訪問權(quán)限管理相同,
權(quán)限可以使用數(shù)字如0666或者使用內(nèi)核源碼/include/linux/stat.h文件宏定義表示,如代碼清單
4.3所示。

如果要傳遞數(shù)組類型參數(shù)可以使用module_param_array宏,module_param_array宏相較
于module_param宏多了n_para參數(shù),該參數(shù)用來表示傳遞參數(shù)個數(shù),因?yàn)閚_para參數(shù)值會根
據(jù)輸入的參數(shù)個數(shù)而改變,所以n_para的最終值為傳遞的數(shù)組元素個數(shù)。
最后是module_param_string(name, string, len, perm)宏,改用來傳遞字符串類型的變量,四
個參數(shù)的定義如下所示:
lname:外部傳入的參數(shù)名,即加載模塊時的傳入值
lstring:內(nèi)部的變量名,即程序內(nèi)定義的參數(shù)名
llen:以string命名的buffer大小(可以小于buffer的大小,但是沒有意義)
lperm:模塊參數(shù)的訪問權(quán)限
如代碼清單4.4使用module_param_string(name, string, len, perm)宏傳遞字符串類型變量str。

4.2 實(shí)驗(yàn)程序的編寫
本實(shí)驗(yàn)代碼存放在iTOP-RK3568開發(fā)板【底板V1.7版本】\03_【iTOP-RK3568開發(fā)板】
指南教程\02_Linux驅(qū)動配套資料\04_Linux驅(qū)動例程\02目錄下。
parameter.c代碼實(shí)現(xiàn)通過insmod命令加載內(nèi)核模塊時候?qū)崿F(xiàn)參數(shù)傳遞,并將傳遞給內(nèi)核模
塊的參數(shù)打印到串口終端上。其代碼如代碼清單4.5所示。

代碼清單4.5將傳遞int類型參數(shù)number、char類型參數(shù)name、int類型的數(shù)組para和char
類型字符串str1,并在驅(qū)動入口函數(shù)中對各個參數(shù)值進(jìn)行打印。
4.3 運(yùn)行測試
4.3.1 編譯驅(qū)動程序
在parameter.c代碼同一目錄下創(chuàng)建Makefile文件,如圖4.1所示。

Makefile文件內(nèi)容如代碼清單4.6所示.
代碼清單4.6

使用命令make編譯驅(qū)動程序,編譯成功如圖4.2所示。

編譯完生成parameter.ko目標(biāo)文件,如下圖4.3所示

4.3.2 運(yùn)行測試
使用insmod命令加載內(nèi)核模塊實(shí)現(xiàn)內(nèi)核模塊傳參,命令格式為:
insmod對應(yīng)的模塊 參數(shù)
parameter.ko內(nèi)核模塊可以傳遞3個參數(shù),使用以下命令分別傳遞為int類型的參數(shù)
number,char類型的參數(shù)name和int數(shù)組類型的參數(shù)para。
insmod parameter.ko number=100 name="topeet" para=0,1,2,3,4,5,6,7 str="itop"
打印信息如圖4.4所示:

通過圖4.4可以看出傳遞的參數(shù)都分別打印了出來。輸入rmmod parameter.ko命令可以卸
載驅(qū)動。打印信息如圖4.5所示:

迅為定制服務(wù):根據(jù)項目需求提供硬件定制和軟件適配服務(wù)
獲取更多支持:
·訪問迅為查看《itop-3568開發(fā)板驅(qū)動開發(fā)指南》完整技術(shù)文檔
·加入迅為技術(shù)交流群獲取實(shí)時支持
·聯(lián)系銷售獲取定制化解決方案
-
開發(fā)板
+關(guān)注
關(guān)注
25文章
6056瀏覽量
111456 -
RK3568
+關(guān)注
關(guān)注
5文章
619瀏覽量
7478 -
迅為電子
+關(guān)注
關(guān)注
0文章
78瀏覽量
295
發(fā)布評論請先 登錄
【北京迅為】itop-3568開發(fā)板驅(qū)動開發(fā)指南(重制版)
迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入
迅為RK3568開發(fā)板安裝燒錄工具-安裝 RKTool 驅(qū)動
迅為RK3568驅(qū)動指南GPIO子系統(tǒng) GPIO操作函數(shù)實(shí)驗(yàn)
迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)三級節(jié)點(diǎn)操作函數(shù)實(shí)驗(yàn)
【北京迅為】iTOP-RK3568開發(fā)板鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動開發(fā)實(shí)操-HDF驅(qū)動配置UART
【北京迅為】iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動開發(fā)-第4章 UART基礎(chǔ)知識
北京迅為iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動開發(fā)實(shí)操-HDF驅(qū)動配置LED
北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動開發(fā)內(nèi)核HDF驅(qū)動框架架構(gòu)
【北京迅為】iTOP-RK3568OpenHarmony系統(tǒng)南向驅(qū)動開發(fā)GPIO基礎(chǔ)知識
【北京迅為】itop-3568 開發(fā)板openharmony鴻蒙燒寫及測試-第2章OpenHarmony v3.2-Beta4版本測試
【北京迅為】itop-3568 開發(fā)板openharmony鴻蒙燒寫及測試-第1章 體驗(yàn)OpenHarmony—燒寫鏡像

【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開發(fā)板驅(qū)動開發(fā)第4章驅(qū)動模塊傳參實(shí)驗(yàn)
評論