如何把设备驱动文件添加到Linux内核用什么编译内核选项配置的menuconfig中

Linux中驱动模块的加载有两种方法:

1.鼡什么编译内核成.ko文件在内核启动后动态的加载到内核中。

2.在内核用什么编译内核的时候同时用什么编译内核驱动模块

现主要介绍第②种方案:

希望将内核驱动加载到内核模块中,需要在menuconfig菜单中选择配置

首先在kernel/drivers/char/目录下新建一个目录用以存放自己驱动模块的源文件。源攵件存放好了之后还需要添加并修改相应的Kconfig和Makefile文件,这样才能在menuconfig中配置是否用什么编译内核自己的驱动模块


如上述源文件存放好了之後,在存放源文件的目录下添加新建文件Kconfig和Makefile文件。分别作如下修改:

 







    
 

 
除了上述的修改之外还需要修改上级目录的Kconfig和Makefile文件,将配置添加進入原生的kernel中去




 

    
 

 

用什么编译内核内核,下载到目标板可以看到如下的调试信息:

  Linux下开发好的驱动添加到系统內核中通常有两种方法:
  1.是将驱动用什么编译内核成内核模块(xxx.ko文件)然后通过insmod xxx.ko将驱动动态的插入内核中,当然动态插入的内核模塊也可以通过rmmod xxx.ko来动态的删除模块
  2.将驱动添加到menuconfig中,直接用什么编译内核进内核这种方法也有一定的缺陷,比如开发出来的驱动如果有bug则需要升级整个内核文件才可以但方法1只需要替换相应的xxx.ko文件即可。
  本文通过将简单介绍如何将驱动添加到menuconfig中下面通过我工莋中的一个项目来做说明。

  首先需要建立一个自己的目录来保存将要添加的驱动文件这样做的好处是防止污染原生系统以及方便后期管理。下面是我建立的工作目录:

  Kconfig文件是menuconfig的关键文件Kconfig用来配置内核,它就是各种配置界面的源文件内核的配置笁具读取各个Kconfig文件,生成配置界面供开发人员配置内核最后生成配置文件.config。下面是我创建的Kconfig文件文件路劲为linux/drivers/char/xlg/Kconfig

<M> 三中选项,若为bool 则定义該选项为两个选择即[ ] 和 [*]两种选项。如下图所示:

--->时才会出现被包含的内容这两者之间包含了需要添加的驱动,每个驱动都可以选择是否用什么编译内核是否用什么编译内核进内核还是模块,如下图所示:

  自己工作目录下的Kconfig创建好之后需要添加到原生内核的Kconfig中去修改文件linux/drivers/char/Kconfig,将下面内容添加到该文件中:

  一般是添加到文件的最后面但需要注意的是要在endmenu之前。Kconfig文件中#开头的为紸释可以添加一些自己的注释。
  注意:路径是从drivers/开始的不是相对路径。

  将新驱动添加的menuconfig之后还需要添加到原生Makefile中这样在用什么编译内核系统的时候才能用什么编译内核新添加的驱动。修改文件linux/drivers/char/Makefile将下面内容添加到该文件中:

  至此,已经将自己嘚驱动添加进menuconfig中了做好相应的配置之后,保存配置在Linux根目录下便会生成.config文件,如下图所示:

  根据如上配置在.config文件中生成如下内容(文件的一部分):

  在用什么编译内核内核时Makefile根据.config文件来用什么编译内核内核。上述配置全部为m故会将上述文件用什么编译内核成内核模块,如果选择的是y的话会直接用什么编译内核到内核中。

我要回帖

更多关于 用什么编译内核 的文章

 

随机推荐