0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

迅为3568开发板从零学习Linux驱动开发:迅为一站式资料包如何让我效率翻倍

北京迅为电子 2025-11-05 11:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


作为一名嵌入式Linux的初学者,在拿到功能强大的RK3568开发板时,我的心情既兴奋又忐忑。兴奋在于终于可以动手实践,忐忑则源于对复杂开发环境的恐惧。网络上零散的资料、版本不匹配的工具链、以及深不见底的“坑”,都巨大挑战。

然而,迅为提供的一站式资料包,可以让嵌入式Linux学习之旅却出乎意料地顺畅和高效。本文将分享《【北京迅为】itop-3568开发板驱动开发指南》第3章 内核模块实验的完整过程。


迅为一站式学习教程资料包的价值所在

,迅为的一站式资料包在以下几个方面让我效率翻倍:
1.完整性:从工具链、源码、到文档和工具,所有要素版本匹配,开箱即用,形成了闭环生态。
2.指引性:步步为营的文档如同一位无声的导师,消除了过程中的不确定性,让学习路径清晰可见。
3.排障效率:技术支持是强大的“安全网”,能将绝大多数常见问题的解决,

对于一名新手而言,时间是最宝贵的成本。迅为的资料包所做的,正是通过体系化的知识工程,最大限度地节约的时间,保护了学习热情,能够快速进入嵌入式Linux开发的核心殿堂——驱动开发。这无疑是一次价值远超硬件本身的投资。

wKgZO2kKv1iAWYvRAAX4gJ2VKR8017.png

北京迅为RK3568开发板:迅为RK3568开发板ARM3568J核心板瑞芯微人工智能AI鸿蒙Linux安卓

联系我们获得《迅为itop-3568开发板驱动开发指南》完整版本。

配套视频资源:【北京迅为】嵌入式学习之Linux驱动, 免费在线观看

【北京迅为itop-3568开发板驱动开发指南第 3 章 内核模块实验】

在上一章节编写了最简单的驱动程序helloworld。helloworld驱动程序要如何编译并运行

呢?编译驱动有两种方法,分别是将驱动编译进内核和将驱动编译成内核模块。我们先来学习

如何将驱动编译成内核模块。

把驱动编译成内核模块并运行需要设置交叉编译器、编写Makefile和编译模块三个步骤。

编译好的内核模块可以使用insmod命令加载到内核运行,从内核中卸载内核模块使用rmmod

命令。

3.1 设置交叉编译器

1.下载交叉编译器

在网盘“iTOP-3568开发板\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\03_

交叉编译器”路径下下载交叉编译器,将下载好的交叉编译器拷贝到虚拟机Ubuntu环境中的

/usr/local目录下,如图3.1所示。

wKgZPGkKv1eAE0FoAAFa4071BrQ024.png

输入tar -vxf gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz命令解压交叉编译压缩

包,解压完毕后会生成交叉编译器所在的文件夹。如图3.2所示。

wKgZO2kKv1eAYqREAAFtaBzOqf8474.png

2.设置环境变量

在终端输入sudo vi /etc/profile命令打开profile文件,接着在profile文件末尾添加以下

代码。

export PATH=$PATH:/usr/local/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin

添加完后如图3.3所示。

wKgZPGkKv1eAVuCWAAG2B3Bpa60360.png

保存退出后在终端输入reboot命令重新启动Ubuntu系统,使交叉编译环境生效。

3.检查是否设置成功

Ubuntu系统重新启动登录到系统后,打开命令行终端,输入命令aarch64-linux-gnu-gcc -v,

如果终端有如图3.4所示的打印信息,说明交叉编译环境搭建成功。如果没有出现如图3.4的

打印信息,需要检查上一步骤是否设置正确。

wKgZPGkKv1iACRrXAA8kl-0tLFY152.png

3.2 编写 Makefile

wKgZPGkKv1eAaAbRAAFFJm4_Xd0305.png

编译驱动程序需要使用Makefile文件。接下来为helloworld.c编写一个简单的Makefile,其

代码如代码清单3.1所示。

wKgZO2kKv1eAQm7BAADYUtCjMUg121.png

源文件helloworld.c与Makefile文件需要位于同一级目录下。如下图3.5所示:

wKgZO2kKv1eAC-mjAAEyPUjtY_k586.png

3.3 编译成内核模块

在把驱动编译成内核模块之前需先编译通过在Makefile文件中通过KDIR变量指定路径下

的内核源码。内核源码编译通过后,在Makefile与helloworld驱动路径下输入make命令即可

把helloworld驱动编译成内核模块,如图3.6所示。

wKgZO2kKv1iAJUDHAAQpJKfbSac762.png

内核模块是以ko为后缀名,因此编译成功得到的helloworld.ko文件即内核模块,也就是

编译好的驱动程序。如图3.7所示:

wKgZO2kKv1eAA4qFAAGjhaoIumM547.png

输入make clean命令可清除编译文件,如图3.8所示:

wKgZPGkKv1eACyu6AANO9ej9-ZQ038.png

3.4 模块加载与卸载

内核模块可以通过insmod命令加载、通过rmmod命令卸载。

将helloworld.ko内核模块拷贝到iTOP-RK3568开发板上,通过insmod helloworld.ko命令加

载helloworld内核模块,加载内核模块时会调用驱动入口函数helloworld_init,从而输出打印

字符串信息“helloworld_init”,如图3.9所示:

wKgZO2kKv1eAawnFAAEEwRQkfV4474.png

如果要卸载helloworld内核模块,执行rmmod helloworld命令。同理,在卸载内核模块的

时候会执行驱动出口函数,所以可以看到驱动出口函数打印出来的字符串信息helloworld_exit,

如下3.10所示:

wKgZPGkKv1eAEv7sAAFRdQsg0Jw551.png

加载内核模块也可以使用modprobe命令,它比insmod命令更强大,modprobe命令在加

载驱动模块的时候,会同时加载该模块依赖的其他模块。比如helloworld.ko依赖before.ko,

使用insmod加载的时候,就必须先加载before.ko,然后再加载helloworld.ko才可以加载成功。

使用modprobe加载的时候,他会自动分析模块的依赖关系,然后将所有依赖的模块都加载到

内核当中,所以modprobe命令比较“聪明”。

同样,在卸载驱动模块的时候,如果模块存在依赖关系,如果使用insmod命令,需要手

动卸载依赖的内核模块,但是使用modprobe命令可以自动卸载驱动模块所依赖的其他模块。

如果驱动模块是以modprobe helloworld.ko命令加载的,卸载的时候使用modprobe -r

helloworld.ko命令卸载。

但是,使用modprobe卸载存在一个问题,如果所依赖的模块被其他模块所使用,比如刚

才例子中的before.ko还被其他的模块使用,这时候就不能使用modprobe卸载。所以要根据

需求选择合适的命令进行操作。

3.5 查看模块信息

lsmod命令可以列出已经载入Linux内核模块,在helloworld驱动加载之后,使用lsmod

命令查看内核中加载的模块,如图3.11所示:

wKgZO2kKv1eAJlrpAAIo5u0MDyw831.png

除了使用lsmod命令,也可以使用modinfo helloworld.ko命令可以获得模块的其他信息,

如模块作者,模块说明,模块支持的参数等等。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    26

    文章

    6422

    浏览量

    120917
  • 驱动开发
    +关注

    关注

    0

    文章

    142

    浏览量

    12720
  • Linux驱动
    +关注

    关注

    0

    文章

    47

    浏览量

    10523
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    电子RK3568+RK3588开发板资料焕新升级!多维度优化助力开发效率提升

    电子RK3568+RK3588开发板资料焕新升级!多维度优化助力开发
    的头像 发表于 03-26 15:06 490次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>电子RK<b class='flag-5'>3568</b>+RK3588<b class='flag-5'>开发板</b><b class='flag-5'>资料</b>焕新升级!多维度优化助力<b class='flag-5'>开发</b>者<b class='flag-5'>效率</b>提升

    iTOP-Hi3403开发板一站式启动Hi3403 NPU开发运行例程开始,快速验证AI效能

    iTOP-Hi3403开发板一站式启动Hi3403 NPU开发运行例程开始,快速验证
    的头像 发表于 02-12 15:59 1118次阅读
    【<b class='flag-5'>迅</b><b class='flag-5'>为</b>iTOP-Hi3403<b class='flag-5'>开发板</b>】<b class='flag-5'>一站式</b>启动Hi3403 NPU<b class='flag-5'>开发</b>:<b class='flag-5'>从</b>运行例程开始,快速验证AI效能

    驱动开发实战:iTOP-RK3568开发板eDP屏幕移植全攻略

    驱动开发实战:iTOP-RK3568开发板eDP屏幕移植全攻略
    的头像 发表于 12-30 15:42 1259次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>实战:iTOP-RK<b class='flag-5'>3568</b><b class='flag-5'>开发板</b>eDP屏幕移植全攻略

    iTOP-Hi3516开发板驱动开发资料全面上线,构建入门到精通的完整学习路径!

    iTOP-Hi3516开发板linux驱动开发资料
    的头像 发表于 12-19 15:47 854次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>iTOP-Hi3516<b class='flag-5'>开发板</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b><b class='flag-5'>资料</b>全面上线,构建<b class='flag-5'>从</b>入门到精通的完整<b class='flag-5'>学习</b>路径!

    Hi3403开发板驱动教程全面上线,开启嵌入Linux开发新篇章!

    iTOP-Hi3403开发板linux驱动教程全面上线,开启嵌入
    的头像 发表于 12-18 14:23 892次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>Hi3403<b class='flag-5'>开发板</b><b class='flag-5'>驱动</b>教程全面上线,开启嵌入<b class='flag-5'>式</b><b class='flag-5'>Linux</b><b class='flag-5'>开发</b>新篇章!

    iTOP-3568开发板 Linux驱动开发实战:menuconfig图形化配置实验

    iTOP-3568开发板 Linux驱动开发实战
    的头像 发表于 11-24 15:29 951次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>iTOP-<b class='flag-5'>3568</b><b class='flag-5'>开发板</b> <b class='flag-5'>Linux</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>实战:menuconfig图形化配置实验

    工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解

    工业RK3568稳定可靠】itop-3568开发板Linux
    的头像 发表于 11-21 13:25 1637次阅读
    【<b class='flag-5'>迅</b><b class='flag-5'>为</b>工业RK<b class='flag-5'>3568</b>稳定可靠】itop-<b class='flag-5'>3568</b><b class='flag-5'>开发板</b><b class='flag-5'>Linux</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>实战:RK<b class='flag-5'>3568</b>内核模块符号导出详解

    工业RK3568稳定可靠】itop-3568开发板驱动开发第4章驱动模块传参实验

    工业RK3568稳定可靠】itop-3568开发板驱动
    的头像 发表于 11-06 14:25 526次阅读
    【<b class='flag-5'>迅</b><b class='flag-5'>为</b>工业RK<b class='flag-5'>3568</b>稳定可靠】itop-<b class='flag-5'>3568</b><b class='flag-5'>开发板</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>第4章<b class='flag-5'>驱动</b>模块传参实验

    嵌入Linux新手入门:为什么RK3568+资料是黄金组合

    嵌入Linux新手入门:为什么RK3568+
    的头像 发表于 11-04 14:05 703次阅读
    嵌入<b class='flag-5'>式</b><b class='flag-5'>Linux</b>新手入门:为什么<b class='flag-5'>迅</b><b class='flag-5'>为</b>RK<b class='flag-5'>3568</b>+<b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>资料</b>是黄金组合

    避坑指南!RK3568开发板选型,这5点没看清千万别下手!(附驱动开发指南资源)

    避坑指南!RK3568开发板选型,这5点没看清千万别下手!(附驱动开发指南资源)
    的头像 发表于 10-30 15:49 1082次阅读
    避坑指南!RK<b class='flag-5'>3568</b><b class='flag-5'>开发板</b>选型,这5点没看清千万别下手!(附<b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>指南资源)

    项目效率翻倍RK3568 V2.0硬件接口升级,开发流程再提速

    项目效率翻倍RK3568 V2.0硬件接口升级,开发流程再提速
    的头像 发表于 10-29 10:53 678次阅读
    项目<b class='flag-5'>效率</b><b class='flag-5'>翻倍</b>!<b class='flag-5'>迅</b><b class='flag-5'>为</b>RK<b class='flag-5'>3568</b> V2.0硬件接口升级,<b class='flag-5'>开发</b>流程再提速

    RK3568开发板模型推理测试实战LPRNet 车牌识别

    RK3568开发板模型推理测试实战LPRNet 车牌识别
    的头像 发表于 08-25 14:55 1563次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>RK<b class='flag-5'>3568</b><b class='flag-5'>开发板</b>模型推理测试实战LPRNet 车牌识别

    技术分享 | RK3568开发板如何将 Linux 板卡虚拟成U盘

    技术分享 | RK3568开发板如何将 Linux 板卡虚拟成U盘
    的头像 发表于 06-04 10:57 1337次阅读
    技术分享 | <b class='flag-5'>迅</b><b class='flag-5'>为</b>RK<b class='flag-5'>3568</b><b class='flag-5'>开发板</b>如何将 <b class='flag-5'>Linux</b> 板卡虚拟成U盘

    RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入

    RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入
    的头像 发表于 05-29 14:05 1194次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>RK<b class='flag-5'>3568</b><b class='flag-5'>开发板</b><b class='flag-5'>驱动</b>指南GPIO子系统GPIO子系统API函数的引入

    RK3568开发板驱动指南GPIO子系统三级节点操作函数实验

    RK3568开发板驱动指南GPIO子系统三级节点操作函数实验
    的头像 发表于 05-26 15:39 1679次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>RK<b class='flag-5'>3568</b><b class='flag-5'>开发板</b><b class='flag-5'>驱动</b>指南GPIO子系统三级节点操作函数实验