热度 21
2013-7-1 16:14
1087 次阅读|
1 个评论
下面以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