Linux驱动模块加载的两种方法、设置方式和其基本原理简述

Linux中驱动的加载一般有两种形式,一种是在内核启动的过程中自动的加载驱动,另一种是在内核启动起来之后,使用insmod命令手动的加载驱动模块。那么这两种方法实现原理有什么不同呢?

(1)驱动的加载方式要从内核的配置讲起。Linux的内核配置分为两个步骤:一是采用make    xxxx_default_config进行初步的配置,二是采用make menuconfig进行细节上的配置。

(2)make   xxxx_default_config之后会在内核的根目录下产生一个.config文件,该文件中的内容是由内核中的各个Makefile提供的。而这些内容就是make menucofig 中的选项。

(3)新添加驱动的时候,不仅要把源码填充的驱动框架的相应位置,而且还要更改驱动源码所在目录的Makefile。在Makefile中添加编译新添加驱动源码文件的命令。添加方式有以下两种

obj-$(CONFIG_I2C_BOARDINFO)	+= i2c-boardinfo.o
obj-y				+= algos/ busses/

方式一是采用的“-$”加上配置宏“CONFIG_I2C_BOARDINFO”的方式来决定后面的.o文件能否编译得到。

方式二是采用的“-y”的形式来决定后面的文件是否得到编译。

“-$”的方式就是可配置的方式,将来初步配置的时候,后面的的配置宏会去掉“COFNIG”,剩下的部分作为一个项目出现在.config文件中,最终成为make menuconfig中的一个选项。在make menuconfig的时候该选项会有三种形式,即‘Y’,'N','M',这三个状态可通过键盘上对应的三个按键来选择。Y模式代表该驱动模块会在内核启动过程中自动加载,N表示该驱动模块不会在内核启动过程中安装加载,M模式表示该驱动模块可以在内核启动起来之后采用insmod的方式来加载。

“-y”表示该模块将来在make menuconfig中不会被选择,而被写死成了内核启动过程中自动加载。

本文为作者一字一字的总结敲打上去的,若有不对之处请批评指正,若有转载请注明出处,万分感激!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值