2.6内核的源码树目录下一般都会有兩个文文:Kconfig和Makefile分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单用户配置完后保存到.config(在顶层目录下生成)中。在内核编译内核模块时主Makefile调用这个.config,就知道了用户对内核的配置情况
上面的内容说明:Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就有途径选择我们的驱动假如想使这个驱动被编译内核模块,还要修改该驱动所在目录下的Makefile因此,一般添加新的驱动时需要修改的文件有两种(注意不只是两个)
*Makefile要想知道怎么修改这两种文件就要知道两种文档的语法结构。
每个菜单项都有一个关键字标識最常见的就是config。语法:
symbol就是新的菜单项options是在这个新的菜单项下的属性和选项其中options部分有:
、类型定义:每个config菜单项都要有类型定义,bool:布尔类型 tristate三态:内建、模块、移除, 类型的只能选中或不选中tristate类型的菜单项多了编译内核模块成内核模块的选项,假如选择编译內核模块成内核模块则会在.config中生成一个CONFIG_HELLO_MODULE=m的配置,假如选择内建就是直接编译内核模块成内核影响,就会在.config中生成一个CONFIG_HELLO_MODULE=y的配置. 、依赖型萣义depends on或requires指此菜单的出现是否依赖于另一个定义 、帮助性定义只是增加帮助用关键字help或---help---makefile的知识最后举个例子:假设想把自己写的一个flash的驱動程式加载到工程中,而且能够通过menuconfig配置内核时选择该驱动该怎么办呢能够分三步:第一:将您写的flashtest.c