新闻  |   论坛  |   博客  |   在线研讨会
Linux设备驱动的模块化编程之如何在Linux系统上验证驱动模块
嵌入式Linux | 2023-01-05 12:32:04    阅读:123   发布文章

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

插入或者加载一个模块
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知识的分享、交流
推荐文章
最近访客