迅为工业RK3568 itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解
2025-12-04 来源:elecfans
迅为工业级稳定可靠的RK3568平台itop-3568开发板驱动开发实战:RK3568内核模块符号导出深入解析
选择迅为iTOP-3568开发板,获取完整驱动开发套件与工业级稳定性保障
在复杂的Linux驱动开发中,模块化设计是提升代码可维护性和复用性的关键。内核模块符号导出正是实现模块间的基础技术。本期将基于迅为RK3568开发板,深入讲解这一核心机制。
迅为提供的完整驱动开发套件,包含从基础教程到进阶实战的全套代码示例,助您快速掌握此类核心驱动开发技巧。

第5章 内核模块符号导出实验
本章节我们学习内核模块符号导出,什么是内核模块符号导出呢?内核模块之间是相互独
立的,互相不能直接访问。将内核模块的符号(函数或变量)导出后,导出的符号(函数或变
量)可以被其他模块使用。
5.1 内核模块符号导出简介
驱动程序编译生成的ko文件是相互独立的,即模块之间变量或者函数在正常情况下无法
进行互相访问。而一些复杂的驱动模块需要分层进行设计,这时候就需要用到内核模块符号导
出。
内核模块符号导出指的是在内核模块中导出相应的函数和变量,符号导出所使用的宏为E
XPORT_SYMBOL(sym)和EXPORT_SYMBOL_GPL(sym)。定义在 内核源码/include/linux/export.h文
件中(在module.h文件中已经对export.h进行引用,所以不需要单独引用export.h文件),详
细定义如代码清单5.1所示:
EXPORT_SYMBOL(sym)和EXPORT_SYMBOL_GPL(sym)两个宏使用方法相同,sym参数表示要
导出的函数或变量名称。
宏EXPORT_SYMBOL_GPL(sym)导出的内核模块符号只能被GPL许可的模块使用,因此绝
大多数情况都是使用EXPORT_SYMBOL(sym)宏进行内核模块符号导出。
5.2 实验程序的编写
本实验代码存在网盘iTOP-RK3568开发板【底板V1.7版本】 3_【iTOP-RK3568开发板】
指南教程 2_Linux驱动配套资料 4_Linux驱动例程 3路径下。
本章实验将编写Linux下的内核模块符号导出实例代码,总共有两个驱动程序,第一个驱
动文件名为mathmodule.c,用来定义参数num和函数d(a,b),第二个驱动文件名为hello.c,
会引用mathmodule.c驱动程序中的参数num和数学函数add(a,b),并将相应的参数值和函数
返回值打印到串口终端上。
代码清单5.2是mathmodule.c代码。
代码清单5.2

代码清单5.2定义了一个int类型的num变量和add()数学函数,并使用EXPORT_SYMBOL
宏进行导出。
代码清单5.3是hello.c代码。
代码清单5.3
代码清单5.3中程序使用了在代码清单5.2中定义的int类型的变量num和add()函数,并
在驱动入口函数中打印相应了num的参数值并对add()函数进行了调用。
5.3 运行测试
5.3.1 编译驱动程序
在mathmodule.c和hello.c的同一目录下创建Makefile文件,如图5.1所示。
Makefile文件内容如代码清单5.4所示:
代码清单5.4
这里要注意的是在hello.c代码中使用了mathmodule.c所导出的符号,所以mathmodule.c
要在hello.c之前进行编译,即Makefile中第3行和第4行代码顺序不能交换。
使用命令make编译驱动程序,编译成功后如图5.2所示:

编译完后会生成hello.ko和mathmodule.ko目标文件,如图5.3所示:
5.3.2 运行测试
由于hello.ko依赖于mathmodule.ko,所以mathmodule.ko需要先加载,分别使用以下命
令进行模块的加载(加载顺序不能变):
insmod mathmodule.ko
insmod hello.ko
打印信息如图5.4所示。
通过图5.4可以看出当hello.ko驱动加载的时候,在mathmodule.ko模块中定义的num参
数值和在hello.ko中调用add()函数的后的返回值都被打印了出来。说明mathmodule.ko中已经
成功实现内核模块符号导出。
可以输入以下命令进行驱动的卸载:
rmmod hello.ko
rmmod mathmodule.ko
打印信息如图5.5所示。
- RK3568开发板的JTAG仿真方案:突破AMP架构调试瓶颈
- 飞凌嵌入式RK3568开发板通过TFTP烧写文件系统操作指南
- RKDC2025 丨米尔亮相第九届瑞芯微开发者大会,共绘工业数智新图景
- 英康仕国产化工控机基于RK3568平台的跨场景自动化节能部署
- Openharmony软件评估指南-瑞芯微RK3568开发板
- RK3568|3588|3566处理器属于什么档次?
- 米尔RK3568加推工控板和工控机,更丰富的场景应用
- 米尔创新设计RK3568全LGA国产核心板,更紧凑可靠省连接器成本
- RK3568核心板ROM-5880助力360°环视系统破除车辆盲区
- 基于迅为iTOP-3568开发板的Linux驱动开发实战:menuconfig图形化配置实验
- 嵌入式的风向变了:2026纽伦堡嵌入式展透露这些趋势
- 高通确认不在GDC 2026发布新款骁龙G系列掌机处理器SoC
- 行业评论 从工具到平台:如何化解跨架构时代的工程开发和管理难题
- 面向嵌入式部署的神经网络优化:模型压缩深度解析
- 摩尔线程MTT S5000全面适配Qwen3.5三款新模型
- Mujoco中添加Apriltag标签并实现相机识别教程
- 英飞凌与宝马集团携手合作,基于Neue Klasse架构塑造软件定义汽车的未来
- 物理AI仿真新突破:摩尔线程与五一视界共建全栈国产化生态
- 阿里达摩院发布玄铁C950,打破全球RISC-V CPU性能纪录
- 爆火的OpenClaw! 告别云端,米尔RK3576开发板本地部署
- 边缘计算主机盒选购指南:五大核心指标解析
- Arm AGI CPU 更多细节:台积电 3nm 制程、Neoverse V3 微架构
- Arm AGI CPU 重磅发布:构筑代理式 AI 云时代的芯片基石
- Arm 拓展其计算平台矩阵,首次跨足芯片产品
- 阿里达摩院发布RISC-V CPU玄铁C950,首次原生支持千亿参数大模型
- 边缘 AI 加速的 Arm® Cortex® ‑M0+ MCU 如何为电子产品注入更强智能
- 阿里达摩院发布玄铁C950,打破全球RISC-V CPU性能纪录
- VPU中的“六边形战士”:安谋科技Arm China发布“玲珑”V560/V760 VPU IP
- 利用锚定可信平台模块(TPM)的FPGA构建人形机器人安全




