内核的源码树目录下一般都会有两个文文:Kconfig和Makefile。分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make
上面的内容说明:Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中,可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就有途径选择我们的驱动,假如想使这个驱动被编译,还要修改该驱动所在目录下的Makefile。因此,一般添加新的驱动时需要修改的文件有两种(注意不只是两个)
*Kconfig
*Makefile
要想知道怎么修改这两种文件,就要知道两种文档的语法结构。
First:
config
options
symbol就是新的菜单项,options是在这个新的菜单项下的属性和选项
例如config
bool
bool类型的只能选中或不选中,tristate类型的菜单项多了编译成内核模块的选项,假如选择编译成内核模块,则会在.config中生成一个CONFIG_HELLO_MODULE=m的配置,假如选择内建,就是直接编译成内核影响,就会在.config中生成一个CONFIG_HELLO_MODULE=y的配置.
2、依赖型定义depends
config HELLO_MODULE
bool "hello test module"
depends on ARCH_PXA
最后举个例子:假设想把自己写的一个flash的驱动程式加载到工程中,而且能够通过menuconfig配置内核时选择该驱动该怎么办呢?
能够分三步:
第一:将您写的flashtest.c
第二:修改/driver/mtd/maps目录下的kconfig文档:
config MTD_flashtest
tristate “ap71 flash" 引号内的内容是会显示到Menu list中的。tristate表示这一项是三态的。
这样当make
第三:修改该目录下makefile文档。
添加如下内容:obj-$(CONFIG_MTD_flashtest)
这样,当您运行make