专栏中心

EEPW首页 > 专栏 > Linux设备驱动的模块化编程之如何在Linux系统上验证驱动模块

Linux设备驱动的模块化编程之如何在Linux系统上验证驱动模块

发布人:嵌入式Linux 时间:2023-01-05 来源:工程师 发布文章

验证驱动模块 -- 模块相关的命令

插入或者加载一个模块
sudo insmod hello.ko

在包含有hello.ko的目录执行这个命令,就会将这个hello模块插入到你当前运行的内核(ubuntu系统或者开发板)中,并且执行你的入口函数hello_init,这时有些同学会发现,执行完插入模块的命令后,没有执行printk打印,其实是执行了,只不过是打印到了缓存里面,我们需要用下面的命令查看打印信息:

查看printk打印信息


dmesg //查看系统从开机到当前时刻由printk输出到缓存的所有log

sudo dmesg -c //查看显示log信息,并将整个缓存清除掉

sudo dmesg -C //不显示log信息,将整个缓存清除掉

看到log信息后,如何确认模块是否真正插入成功?

查询内核中插入的所有模块

lsmod

//如果显示的模块太多,我们可以通过lsmod | grep hello 这个命令来查看是否有hello这个模块


当我不需要这个模块时,如何从内核中将这个模块卸载掉?

卸载模块

sudo rmmod hello

//注意,模块名字时hello,那么执行这个卸载命令的时候,就会执行我们的卸载函数hello_exit,通过dmesg可以看到对应的log,通过lsmod可以发现没有hello这个模块了。


有同学看到打印信息后会有个疑问,为什么卸载模块的时候,竟然有hello_init的log,这个地方我解释下,前面说过,printk是把打印信息输出到缓存中,也就是说,每次执行dmesg的时候,是将整个缓存的log都打印出来了,所以hello_init这个log是执行insmod加载模块的时候打印的。

查看模块信息

modinfo hello.ko


这些命令只要你敲的多了,自然就牢记于心了,初学者还是要勤加练习。


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: 模块化编程 Linux

相关推荐

由于英特尔裁员和公司重组,主要的英特尔 Linux 驱动项目正在消亡

GeForce 590 驱动分支是首个不支持 GTX 9 和 10 系列 GPU 的分支——Linux 版本标志着定义时代显卡的终结

Linux中的fork与exec系列函数分析

嵌入式系统 2025-08-06

Linux 今天 34 岁了

彻底告别486:Linux内核维护者正式移除英特尔486处理器支持

Linus Torvalds 称谷歌工程师提交的 RISC-V 代码为“垃圾”,并表示它“让世界变得更糟糕”

嵌入式系统 2025-08-11

RK3506核心板SDK重磅升级,解锁三核A7实时控制新架构

2025-12-18

53年后,惠普于1972年推出的总线标准获得了稳定的Linux驱动——通用接口总线拥有惊人的8 MB/s带宽

linux入门精华

基于ARM的嵌入式Linux系统开发 中

视频 2009-10-22

实时Linux技术:如何在嵌入式LINUX中应用实时特性

视频 2009-10-22

嵌入式Linux优化:加快系统起动和应用起动的过程

视频 2009-10-22

Linux就AI生成代码定下规则:允许Copilot类工具、拒绝劣质AI代码,错误由人类负责

U-BOOT 与 MontaVista Linux 的移植

基于ARM的嵌入式Linux系统开发 上

视频 2009-10-22

基于ARM的嵌入式Linux系统开发 下

视频 2009-10-22

Kontron与Congatec合作开发安全的嵌入式Linux平台

FFT公司9200的板子的资料

ARM 开发板使用手册 在三星 S3C2410开发板上烧写linux

更多 培训课堂
更多 焦点
更多 视频

技术专区