原创
动态加载内核模块
2013-7-1 16:14
1084
20
21
分类:
消费电子
下面以hello module的动态加载方式说明一下内核驱动模块动态加载的一般流程:
-
进入内核源代码的驱动代码路径,找到mini210_hello_moudle.c,浏览一下源文件的代码,以便在动态加载时,可以根据打印信息确定加载是否成功。
mini210_hello_module.c源代码如图8:
图8
-
在mini210_hello_module.c所在路径中,键入vim Kconfig,编辑内核驱动配置文件,编辑完成后保存退出。如图9:
图9
2.1、每一个Kconfig都作为menuconfig中的一个菜单。
2.2、每一个对应的config项都是一个菜单项,其中MINI210_HELLO_MODULE为菜单项标签(记下标签名,下边修改Makefile文件时需要据此编写配置项)。
2.3、tristate是菜单类型。常用的菜单类型有bool和tristate,含义分别是bool只能选中或不选中,对应的default值只能是y或者n;tristate的含义除了y、n之外还有m(可以编译成内核模块)
2.4、deponds on定义的是依赖关系,先不详述。
-
键入vim Makefile编辑,如图10:
图10
插入方框内内容是为了保证在编译内核时可以把HELLO_MOUDLE编译进内核。
-
返回内核源代码根目录,键入make menuconfig,修改配置项菜单,找到Mini210 module sample菜单项(Kconfig中tristate后面的字符串就是menuconfig中显示的菜单名),键入M,表示要以动态加载的模式插入内核驱动模块,保存menuconfig并退出。如图11:
图11
-
在命令行键入make modules编译生成后缀为ko的内核驱动模块,编译完成后进入mini210_hello_module.c所在路径中可以找到mini210_hello_module.ko。
-
键入cp mini210_hello_module.ko /home/nfs/,将内核驱动模块复制到nfs路径中。
-
登录tiny210的串口终端,键入mount –t nfs –o nolock 192.168.0.102:/home/nfs /mnt/,挂载nfs文件系统,挂载成功后,键入ls /mnt/查看mini210_hello_module.ko内核驱动模块。
-
在/mnt路径下键入insmod mini210_hello_module.ko,加载内核驱动模块,并查看打印信息,如图12:
图12
结合mini210_hello_module.c中打印信息可以确定内核驱动模块挂载成功。
-
键入rmmod mini210_hello_moudle(不加ko),可以卸载hello模块。如图13:
图13
用户1658243 2013-7-12 20:35
用户1406868 2011-12-3 08:08