91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開發(fā)板Linux驅(qū)動(dòng)開發(fā)實(shí)戰(zhàn):RK3568內(nèi)核模塊符號(hào)導(dǎo)出詳解

北京迅為電子 ? 2025-11-21 13:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開發(fā)板Linux驅(qū)動(dòng)開發(fā)實(shí)戰(zhàn):RK3568內(nèi)核模塊符號(hào)導(dǎo)出詳解

選擇迅為iTOP-3568開發(fā)板,獲取完整驅(qū)動(dòng)開發(fā)套件與工業(yè)級(jí)穩(wěn)定性保障

在復(fù)雜的Linux驅(qū)動(dòng)開發(fā)中,模塊化設(shè)計(jì)是提升代碼可維護(hù)性和復(fù)用性的關(guān)鍵。內(nèi)核模塊符號(hào)導(dǎo)出正是實(shí)現(xiàn)模塊間通信的基礎(chǔ)技術(shù)。本期將基于迅為RK3568開發(fā)板,深入講解這一核心機(jī)制。


迅為提供的完整驅(qū)動(dòng)開發(fā)套件,包含從基礎(chǔ)教程到進(jìn)階實(shí)戰(zhàn)的全套代碼示例,助您快速掌握此類核心驅(qū)動(dòng)開發(fā)技巧。

wKgZPGkf92yAW_cSAAPQZuGAs7k384.png

第5章 內(nèi)核模塊符號(hào)導(dǎo)出實(shí)驗(yàn)

本章節(jié)我們學(xué)習(xí)內(nèi)核模塊符號(hào)導(dǎo)出,什么是內(nèi)核模塊符號(hào)導(dǎo)出呢?內(nèi)核模塊之間是相互獨(dú)

立的,互相不能直接訪問。將內(nèi)核模塊的符號(hào)(函數(shù)或變量)導(dǎo)出后,導(dǎo)出的符號(hào)(函數(shù)或變

量)可以被其他模塊使用。

5.1 內(nèi)核模塊符號(hào)導(dǎo)出簡介

驅(qū)動(dòng)程序編譯生成的ko文件是相互獨(dú)立的,即模塊之間變量或者函數(shù)在正常情況下無法

進(jìn)行互相訪問。而一些復(fù)雜的驅(qū)動(dòng)模塊需要分層進(jìn)行設(shè)計(jì),這時(shí)候就需要用到內(nèi)核模塊符號(hào)導(dǎo)

出。

內(nèi)核模塊符號(hào)導(dǎo)出指的是在內(nèi)核模塊中導(dǎo)出相應(yīng)的函數(shù)和變量,符號(hào)導(dǎo)出所使用的宏為E

XPORT_SYMBOL(sym)和EXPORT_SYMBOL_GPL(sym)。定義在 內(nèi)核源碼/include/linux/export.h文

件中(在module.h文件中已經(jīng)對(duì)export.h進(jìn)行引用,所以不需要單獨(dú)引用export.h文件),詳

細(xì)定義如代碼清單5.1所示:

wKgZPGkf9maAWWlHAABA-1l5IJY098.png

EXPORT_SYMBOL(sym)和EXPORT_SYMBOL_GPL(sym)兩個(gè)宏使用方法相同,sym參數(shù)表示要

導(dǎo)出的函數(shù)或變量名稱。

宏EXPORT_SYMBOL_GPL(sym)導(dǎo)出的內(nèi)核模塊符號(hào)只能被GPL許可的模塊使用,因此絕

大多數(shù)情況都是使用EXPORT_SYMBOL(sym)宏進(jìn)行內(nèi)核模塊符號(hào)導(dǎo)出。

5.2 實(shí)驗(yàn)程序的編寫

本實(shí)驗(yàn)代碼存在網(wǎng)盤iTOP-RK3568開發(fā)板【底板V1.7版本】\03_【iTOP-RK3568開發(fā)板】

指南教程\02_Linux驅(qū)動(dòng)配套資料\04_Linux驅(qū)動(dòng)例程\03路徑下。

本章實(shí)驗(yàn)將編寫Linux下的內(nèi)核模塊符號(hào)導(dǎo)出實(shí)例代碼,總共有兩個(gè)驅(qū)動(dòng)程序,第一個(gè)驅(qū)

動(dòng)文件名為mathmodule.c,用來定義參數(shù)num和函數(shù)add(a,b),第二個(gè)驅(qū)動(dòng)文件名為hello.c,

會(huì)引用mathmodule.c驅(qū)動(dòng)程序中的參數(shù)num和數(shù)學(xué)函數(shù)add(a,b),并將相應(yīng)的參數(shù)值和函數(shù)

返回值打印到串口終端上。

代碼清單5.2是mathmodule.c代碼。

代碼清單5.2

wKgZPGkf9maAYL_mAAD8rlFsgDY629.png

wKgZO2kf9maAaPpYAAA6jkawQAY512.png

代碼清單5.2定義了一個(gè)int類型的num變量和add()數(shù)學(xué)函數(shù),并使用EXPORT_SYMBOL

宏進(jìn)行導(dǎo)出。

代碼清單5.3是hello.c代碼。

代碼清單5.3

wKgZO2kf9maAAUHgAAEnZPouQwQ094.png

代碼清單5.3中程序使用了在代碼清單5.2中定義的int類型的變量num和add()函數(shù),并

在驅(qū)動(dòng)入口函數(shù)中打印相應(yīng)了num的參數(shù)值并對(duì)add()函數(shù)進(jìn)行了調(diào)用。

5.3 運(yùn)行測(cè)試

5.3.1 編譯驅(qū)動(dòng)程序

在mathmodule.c和hello.c的同一目錄下創(chuàng)建Makefile文件,如圖5.1所示。

wKgZPGkf9maAMIlSAABc4uGvaxc021.png

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

代碼清單5.4

wKgZO2kf9maAZJldAACW7q8baWU127.png

這里要注意的是在hello.c代碼中使用了mathmodule.c所導(dǎo)出的符號(hào),所以mathmodule.c

要在hello.c之前進(jìn)行編譯,即Makefile中第3行和第4行代碼順序不能交換

使用命令make編譯驅(qū)動(dòng)程序,編譯成功后如圖5.2所示:

wKgZPGkf9maAFxbWAAG08ePQPbc294.png

編譯完后會(huì)生成hello.ko和mathmodule.ko目標(biāo)文件,如圖5.3所示:

wKgZO2kf9maALBhlAAFE3n5L2DY695.png

5.3.2 運(yùn)行測(cè)試

由于hello.ko依賴于mathmodule.ko,所以mathmodule.ko需要先加載,分別使用以下命

令進(jìn)行模塊的加載(加載順序不能變):

insmod mathmodule.ko

insmod hello.ko

打印信息如圖5.4所示。

wKgZO2kf9maAF0VfAAC50QlAjjY226.png

通過圖5.4可以看出當(dāng)hello.ko驅(qū)動(dòng)加載的時(shí)候,在mathmodule.ko模塊中定義的num參

數(shù)值和在hello.ko中調(diào)用add()函數(shù)的后的返回值都被打印了出來。說明mathmodule.ko中已經(jīng)

成功實(shí)現(xiàn)內(nèi)核模塊符號(hào)導(dǎo)出。

可以輸入以下命令進(jìn)行驅(qū)動(dòng)的卸載:

rmmod hello.ko

rmmod mathmodule.ko

打印信息如圖5.5所示。

wKgZPGkf9maAP36nAAB-qdQZnf0052.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6288

    瀏覽量

    117979
  • Linux驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    10480
  • RK3568
    +關(guān)注

    關(guān)注

    5

    文章

    644

    瀏覽量

    7903
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    驅(qū)動(dòng)開發(fā)實(shí)戰(zhàn)iTOP-RK3568開發(fā)板eDP屏幕移植全攻略

    驅(qū)動(dòng)開發(fā)實(shí)戰(zhàn)iTOP-RK3568開發(fā)板eDP
    的頭像 發(fā)表于 12-30 15:42 ?874次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b>:<b class='flag-5'>iTOP-RK3568</b><b class='flag-5'>開發(fā)板</b>eDP屏幕移植全攻略

    iTOP-3568開發(fā)板?Linux驅(qū)動(dòng)開發(fā)實(shí)戰(zhàn):menuconfig圖形化配置實(shí)驗(yàn)

    iTOP-3568開發(fā)板?Linux驅(qū)動(dòng)開發(fā)
    的頭像 發(fā)表于 11-24 15:29 ?761次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>iTOP-3568</b><b class='flag-5'>開發(fā)板</b>?<b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b>:menuconfig圖形化配置實(shí)驗(yàn)

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

    工業(yè)RK3568穩(wěn)定可靠itop-3568
    的頭像 發(fā)表于 11-06 14:25 ?364次閱讀
    【<b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>工業(yè)</b><b class='flag-5'>RK3568</b><b class='flag-5'>穩(wěn)定</b><b class='flag-5'>可靠</b>】<b class='flag-5'>itop-3568</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>第4章<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>模塊</b>傳參實(shí)驗(yàn)

    【北京itop-3568開發(fā)板驅(qū)動(dòng)開發(fā)指南(重制版)

    iTOP-RK3568開發(fā)板驅(qū)動(dòng)開發(fā)指南目錄:前言學(xué)習(xí)方法Linux驅(qū)動(dòng)基礎(chǔ)第 1 章 你好!
    發(fā)表于 10-30 15:48 ?37次下載

    RK3568開發(fā)板模型推理測(cè)試實(shí)戰(zhàn)LPRNet?車牌識(shí)別

    RK3568開發(fā)板模型推理測(cè)試實(shí)戰(zhàn)LPRNet 車牌識(shí)別
    的頭像 發(fā)表于 08-25 14:55 ?1303次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開發(fā)板</b>模型推理測(cè)試<b class='flag-5'>實(shí)戰(zhàn)</b>LPRNet?車牌識(shí)別

    RK3568?重制版RK3568驅(qū)動(dòng)指南全面升級(jí)

    RK3568 重制版RK3568驅(qū)動(dòng)指南全面升級(jí)
    的頭像 發(fā)表于 07-28 15:25 ?2468次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b>?重制版<b class='flag-5'>RK3568</b><b class='flag-5'>驅(qū)動(dòng)</b>指南全面升級(jí)

    技術(shù)分享 | RK3568開發(fā)板如何將 Linux 板卡虛擬成U盤

    技術(shù)分享 | RK3568開發(fā)板如何將 Linux 板卡虛擬成U盤
    的頭像 發(fā)表于 06-04 10:57 ?1111次閱讀
    技術(shù)分享 | <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開發(fā)板</b>如何將 <b class='flag-5'>Linux</b> 板卡虛擬成U盤

    RK3568開發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入

    RK3568開發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入
    的頭像 發(fā)表于 05-29 14:05 ?1012次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>驅(qū)動(dòng)</b>指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入

    RK3568開發(fā)板安裝燒錄工具-安裝 RKTool 驅(qū)動(dòng)

    在燒寫鏡像之前首先需要安裝 RKTool 驅(qū)動(dòng)。 RKTool 驅(qū)動(dòng)在網(wǎng)盤資料“iTOP-3568 開發(fā)板\\\\01_【iTOP-RK3568
    發(fā)表于 05-29 10:47

    RK3568開發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)三級(jí)節(jié)點(diǎn)操作函數(shù)實(shí)驗(yàn)

    RK3568開發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)三級(jí)節(jié)點(diǎn)操作函數(shù)實(shí)驗(yàn)
    的頭像 發(fā)表于 05-26 15:39 ?1513次閱讀
    <b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>驅(qū)動(dòng)</b>指南GPIO子系統(tǒng)三級(jí)節(jié)點(diǎn)操作函數(shù)實(shí)驗(yàn)

    【北京iTOP-RK3568開發(fā)板鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置UART

    【北京iTOP-RK3568開發(fā)板鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF
    的頭像 發(fā)表于 03-25 11:02 ?1724次閱讀
    【北京<b class='flag-5'>迅</b><b class='flag-5'>為</b>】<b class='flag-5'>iTOP-RK3568</b><b class='flag-5'>開發(fā)板</b>鴻蒙OpenHarmony系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>實(shí)操-HDF<b class='flag-5'>驅(qū)動(dòng)</b>配置UART

    【北京iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)-第4章 UART基礎(chǔ)知識(shí)

    【北京iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)-第4章 UART
    的頭像 發(fā)表于 03-17 15:50 ?1033次閱讀
    【北京<b class='flag-5'>迅</b><b class='flag-5'>為</b>】<b class='flag-5'>iTOP-RK3568</b><b class='flag-5'>開發(fā)板</b>OpenHarmony系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-第4章 UART基礎(chǔ)知識(shí)

    北京iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置LED

    北京iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF
    的頭像 發(fā)表于 03-14 14:41 ?1345次閱讀
    北京<b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>iTOP-RK3568</b><b class='flag-5'>開發(fā)板</b>OpenHarmony系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>實(shí)操-HDF<b class='flag-5'>驅(qū)動(dòng)</b>配置LED

    北京RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

    北京RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)
    的頭像 發(fā)表于 03-11 14:13 ?1839次閱讀
    北京<b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK3568</b><b class='flag-5'>開發(fā)板</b>OpenHarmony系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>內(nèi)核</b>HDF<b class='flag-5'>驅(qū)動(dòng)</b>框架架構(gòu)

    【北京iTOP-RK3568OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)GPIO基礎(chǔ)知識(shí)

    【北京iTOP-RK3568OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)GPIO基礎(chǔ)知識(shí)
    的頭像 發(fā)表于 03-06 11:23 ?1242次閱讀
    【北京<b class='flag-5'>迅</b><b class='flag-5'>為</b>】<b class='flag-5'>iTOP-RK3568</b>OpenHarmony系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>GPIO基礎(chǔ)知識(shí)