原创 动态加载内核模块

2013-7-1 16:14 1084 20 21 分类: 消费电子

下面以hello module的动态加载方式说明一下内核驱动模块动态加载的一般流程:

 

  1. 进入内核源代码的驱动代码路径,找到mini210_hello_moudle.c,浏览一下源文件的代码,以便在动态加载时,可以根据打印信息确定加载是否成功。

 

mini210_hello_module.c源代码如图8:

 

clip_image002.jpg

图8

  1. 在mini210_hello_module.c所在路径中,键入vim Kconfig,编辑内核驱动配置文件,编辑完成后保存退出。如图9:
clip_image002.jpg

图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定义的是依赖关系,先不详述。

 

  1. 键入vim Makefile编辑,如图10:
clip_image002.jpg

图10

 

插入方框内内容是为了保证在编译内核时可以把HELLO_MOUDLE编译进内核。

 

  1. 返回内核源代码根目录,键入make menuconfig,修改配置项菜单,找到Mini210 module sample菜单项(Kconfig中tristate后面的字符串就是menuconfig中显示的菜单名),键入M,表示要以动态加载的模式插入内核驱动模块,保存menuconfig并退出。如图11:
clip_image002.jpg

图11

  1. 在命令行键入make modules编译生成后缀为ko的内核驱动模块,编译完成后进入mini210_hello_module.c所在路径中可以找到mini210_hello_module.ko。
  2. 键入cp mini210_hello_module.ko /home/nfs/,将内核驱动模块复制到nfs路径中。
  3. 登录tiny210的串口终端,键入mount –t nfs –o nolock 192.168.0.102:/home/nfs /mnt/,挂载nfs文件系统,挂载成功后,键入ls /mnt/查看mini210_hello_module.ko内核驱动模块。
  4. 在/mnt路径下键入insmod mini210_hello_module.ko,加载内核驱动模块,并查看打印信息,如图12:
clip_image001.gif

图12

 

结合mini210_hello_module.c中打印信息可以确定内核驱动模块挂载成功。

 

  1. 键入rmmod mini210_hello_moudle(不加ko),可以卸载hello模块。如图13:
clip_image001.gif
图13

文章评论1条评论)

登录后参与讨论

用户1658243 2013-7-12 20:35

新手学习的好东西。顶。

用户1406868 2011-12-3 08:08

怎么没有全文啊?
相关推荐阅读
462629051_256703759 2014-06-08 21:56
产品研发的一点想法
        产品研发的核心是产品,研发是为了实现产品,所以能够快速设计出稳定的产品才是研发的目的。通过对比自己身边的一些项目产生了一些想法,总体来说就是尽可能采用半导体厂商的最成熟方案尽可能和...
462629051_256703759 2014-03-01 12:34
LED子系统
        Linux驱动中已经将led驱动作为一个子系统来实现了,针对Tiny210采用通用IO口来控制led的情况,linux采用platform驱动来实现led子系统,因此我们可以通过l...
462629051_256703759 2014-02-27 22:47
git入门
15.1、安装git $sudo apt-get install git $sudo apt-get install git-core 更新git $git clone git:/...
462629051_256703759 2014-02-27 15:05
Vim + Ctags + Taglist组合
12.1、Ctags和Taglist插件的安装: 12.1.1、Ctags插件的安装:sudo apt-get install ctags 12.1.2、Taglist插件的安装:首先下载...
462629051_256703759 2013-09-23 15:57
改善电源负载瞬态响应性能的设计方法
        以前对电源芯片的理解停留在输出电压是否满足需求、输出电流是否满足负载等一些静态的参数上,但是后来发现即使这些参数满足要求所选用的电源芯片有可能还是不能满足负载瞬变时的波动,所以就查...
462629051_256703759 2013-09-05 14:33
MSP430两种串口升级方式对比
        早上收到网友咨询MSP430单片机串口升级问题的邮件,因为不是第一次收到这样的帮助请求,于是便把自己做过的两种串口升级方式做一对比希望对此问题感兴趣的工程师朋友可以从中受益,也希望...
我要评论
1
20
关闭 站长推荐上一条 /2 下一条