社区
驱动程序开发区
帖子详情
ubuntu上insmod ko文件时 却触发了module_exit指向的函数,rmmod 时触发了module_init 刚好反了 新人求大佬赐教!
qq_28762649
2017-10-31 05:07:49
结果:
c文件:
makefile文件:
...全文
531
1
打赏
收藏
ubuntu上insmod ko文件时 却触发了module_exit指向的函数,rmmod 时触发了module_init 刚好反了 新人求大佬赐教!
结果: c文件: makefile文件:
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ArchangelDior
2018-12-06
打赏
举报
回复
1
是因为你的代码中,printk中的字符串没有\n.
如果字符串中没有\n,则该字符串无法立即在dmesg中输出。
rtl8188eu.deb
这个是rtl8188eu的deb包。 直接dpkg -i后就可以了,然后in
smo
d 8188eu.
ko
就能上网了, 解决了该usb网卡的网络不稳定,易掉线,信号强度非常低等问题,
module
_
init
与
module
_
exit
的分析
在编写驱动模块的
时
候有两个
函数
经常被使用也必须被使用,分别是
module
_
init
和
module
_
exit
,这两个
函数
分别在加载和卸载驱动
时
被调用,即调用in
smo
d和
rmmod
命令的
时
候,但是in
smo
d和
rmmod
不能识别这两个
函数
,它只能识别
init
_
module
和cleanup_
module
,其实
init
_
module
和cleanup_
module
相当于是
module
_in...
内核加载驱动机制详解(
module
_
init
&
module
_
exit
)
1、驱动加载方式:静态加载 & 动态加载 Linux是高度可配置、可裁剪的,驱动程序是对内核功能的扩展。 静态加载:将驱动代码直接编译进内核,内核在启动过程中就会自动加载内核; 动态加载:将驱动代码单独编译成.
ko
格式的
文件
,再用in
smo
d命令在需要的
时
候加载内核,在不需要驱动的
时
候用
rmmod
命令卸载驱动; 比较:静态加载一般用于基础功能的驱动,
反
正都是迟早是要加载的,编译进内核效率更高;动态加载一般用于扩展功能的驱动,这个设备可能 需要加载这个驱动也可能不需要加载这个驱动,这就要根据情况去加
驱动之
module
_
init
/
module
_
exit
在前面helloworld的编写里面,我们使用了两个宏分别是
module
_
init
和
module
_
exit
,这里分析下为什么使用这两个宏。 在写模块的
时
候有两个特殊的
函数
,分别是
init
_
module
和cleanup_
module
,这两个
函数
分别在in
smo
d的
时
候和
rmmod
的
时
候调用,并且in
smo
d和
rmmod
只识别这两个特殊的
函数
,可是我们前面的例子里面并没有这两个
函数
。怎么会这样呢,那
module
_
init
函数
底层原理
一直以来写linux驱动,都是按照固定格式,定义一个初始化和推出
函数
,书上告诉我这两个
函数
会被调用,至于为什么会被调用,在哪调用,一直不清楚。 偶然的一个机会,看到blob里面的代码,里面有一个初始化
函数
列表。按照一般的编程想法,各部分的初始化
函数
会在一个固定的
函数
里调用比如: void
init
(void) {
init
_a();
init
_b(); ... } 如果再加入一个初始化
函数
呢,那么再
init
_b()后面再加一行:
init
_c(); 这样确实能完成我们的功能,但
驱动程序开发区
1,318
社区成员
2,173
社区内容
发帖
与我相关
我的任务
驱动程序开发区
主要是开发驱动技术
复制链接
扫一扫
分享
社区描述
主要是开发驱动技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章