"); //-->
验证驱动模块 -- 模块相关的命令
插入或者加载一个模块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
这些命令只要你敲的多了,自然就牢记于心了,初学者还是要勤加练习。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
uClinux系统分析
Linux内核源代码的阅读和工具介绍(aqian转)
由于英特尔裁员和公司重组,主要的英特尔 Linux 驱动项目正在消亡
Linux系统的DS18B20驱动程序源代码
GeForce 590 驱动分支是首个不支持 GTX 9 和 10 系列 GPU 的分支——Linux 版本标志着定义时代显卡的终结
Linux中的fork与exec系列函数分析
Linux 今天 34 岁了
基于Linux平台的温度传感器DS18B20驱动程序设计
彻底告别486:Linux内核维护者正式移除英特尔486处理器支持
Linus Torvalds 称谷歌工程师提交的 RISC-V 代码为“垃圾”,并表示它“让世界变得更糟糕”
RK3506核心板SDK重磅升级,解锁三核A7实时控制新架构
uClinux系统分析
53年后,惠普于1972年推出的总线标准获得了稳定的Linux驱动——通用接口总线拥有惊人的8 MB/s带宽
linux入门精华
嵌入式LINUX开发套件常见问题解答
基于ARM的嵌入式Linux系统开发 中
实时Linux技术:如何在嵌入式LINUX中应用实时特性
嵌入式Linux优化:加快系统起动和应用起动的过程
[链接]Firefox_ 重新发现网络
Linux就AI生成代码定下规则:允许Copilot类工具、拒绝劣质AI代码,错误由人类负责
U-BOOT 与 MontaVista Linux 的移植
Linux系统下USB摄像头驱动开发
基于ARM的嵌入式Linux系统开发 上
基于ARM的嵌入式Linux系统开发 下
Kontron与Congatec合作开发安全的嵌入式Linux平台
一种嵌入式ARM-Linux GPS智能终端设计
[转帖]NeuLinux嵌入式Linux开发平台
FFT公司9200的板子的资料
ARM 开发板使用手册 在三星 S3C2410开发板上烧写linux
基于ARM-Linux的MiniGUI的仿真与移植