【记录——内核模块加载到内核】基于鲁班猫4 rk3588s

【记录------内核模块加载到内核】基于鲁班猫4 rk3588s

野火]嵌入式Linux驱动开发实战指南------基于LubanCat-RK系列板卡 文档

其实要看的宝子完全可以参考这个手册,我这边是简单记录一下学的过程~

文章目录

我这边用的是pc交叉编译,编译完了自己所需要的.ko文件之后,通过scp拷贝到板子里

比如:

bash 复制代码
scp hellomodule.ko cat@192.168.103.129:/home/cat/

常见命令

insmod

将一个模块加载到内核中,insmod是最简单的办法, insmod+模块完整路径就能达到目的,前提是你的模块不依赖其他模块,还要注意需要sudo权限

lsmod

lsmod列出当前内核中加载的模块,格式化显示在终端,其原理就是将/proc/modules中的信息调整一下格式输出。 lsmod输出列表有一列 Used by, 它表明此模块正在被其他模块使用,显示了模块之间的依赖关系。

rmmod

rmod工具仅仅是将内核中运行的模块删除,只需要传给它路径就能实现。

modinfo

modinfo用来显示我们在内核模块中定义的几个宏。 我们可以通过modinfo来查看hellomodule,我们从打印的输出信息中,可以了解到,该模块遵循的是GPL协议, 该模块的作者是embedfire,该模块的vermagic等等。而这些信息在模块代码中由相关内核模块信息声明函数声明

开机自动加载

1️⃣首先将我们想要自动加载的模块统一放到"/lib/modules/内核版本"目录下

对于我的鲁班猫 路径是这个

2️⃣其次使用depmod建立模块之间的依赖关系,命令' depmod -a'

一个模块在运行时是否依赖其他模块先被加载,否则它本身不能正常工作。

就像软件依赖库一样,内核模块也可能依赖其他模块。

3️⃣在/etc/modules或者/etc/modules-load.d/.conf中加上我们自己的模块

注意在该配置文件中,模块 不写成.ko形式 代表该模块与内核紧耦合,有些是系统必须要跟内核紧耦合,比如mm子系统, 一般写成.ko形式比较好,如果出现错误不会导致内核出现panic错误,如果集成到内核,出错了就会出现panic。

就是这个文件 用vim 编辑即可

然后重启开发板,lsmod就能查看到我们的模块开机就被加载到内核里面了。

相关推荐
for_ever_love__8 分钟前
爬虫项目: 获取高分电影的数据总结
开发语言·python·学习
weixin_3077791313 分钟前
C++代码实现MATLAB中的ode23t函数功能
开发语言·c++·算法·matlab
wuminyu23 分钟前
Markword在紧凑对象头上的实现原理剖析
java·linux·c语言·jvm·c++
hansang_IR1 小时前
【代数与组合数学 | 那忘算 5】生成函数 & 例题 & 卷积
c++·算法·多项式·生成函数·母函数
无忧.芙桃1 小时前
数据结构之排序算法(上):从评价指标到插入、希尔、选择与堆排序
c语言·c++·排序算法
syagain_zsx1 小时前
算法基础篇 · 02 高精度(C++ 题解)
开发语言·c++·学习·高精度
6Hzlia1 小时前
【Classic 150 刷题计划】 LeetCode 242. 有效的字母异位词 | C++ 哈希计数与严密防线
c++·算法·leetcode
wabs6661 小时前
关于二叉树【力扣101.对称二叉树的思考】
数据结构·c++·算法·leetcode·二叉树
6Hzlia1 小时前
【Classic 150 刷题计划】 LeetCode 228. 汇总区间 | C++ 双游标区间扫描与 to_string 规范
c++·算法·leetcode
m4Rk_2 小时前
【论文阅读】Agent 记忆机制(72):EMA——在写入前决定什么值得记住
论文阅读·人工智能·学习·开源·github