Kconfig文件分析
1. Kconfig文件的作用
Kcongfig用于构建Linux内核配置的图形界面,配置界面所有配置项都从Kconfig中读取。
2. Kconfig文件的格式说明
在进行驱动移植等移植工作时,需要自己添加Kconfig中的一个配置项来将某个设备驱动添加到内核的配置项目中。
# # Network device configuration # menuconfig NETDEVICES default y if UML depends on NET bool "Network device support" ---help--- You can say N here if you don't intend to connect your Linux box to any other computer at all.......................................... # All the following symbols are dependent on NETDEVICES - do not repeat # that for each of the symbols. if NETDEVICES ........................................ config DM9000 tristate "DM9000 support" depends on ARM || BLACKFIN || MIPS select CRC32 select MII ---help--- Support for DM9000 chipset. To compile this driver as a module, choose M here. The module will be called dm9000. config DM9000_16BIT bool "DM9000 16-bit" depends on DM9000 default n help Support DM9000 ethernet controller with 16bit data bus ........................................ source "drivers/net/pcmcia/Kconfig" source "drivers/net/wan/Kconfig" .......................................
(2)config XXX,表示菜单中的一个配置选项。一个menuconfig XXX下的所有config XXX都属于该菜单下的配置项。XXX表示该配置项的名称,该字符串用CONFIG_修饰就构成.config文件中的配置项名称CONFIG_XXX。(1)menuconfig XXX,表示一个菜单项(它本身也是其上一级菜单中的一个配置选项)。XXX表示该配置项的名称,该字符串用CONFIG_修饰就构成.config文件中的配置项名称CONFIG_XXX。
(3)bool,表示该配置项只有两种选择,编入(Y)或去除(N)。
(4)tristate,表示该配置项是三态的,对应:编入(Y)、去除(N)、模块化(M)。
(5)bool、tristate后的字符串,表示该配置项在menuconfig界面上显示的名称。
(6)depends,表示该配置项依赖于其他配置项,只有依赖的配置项为Y或M时,本配置项才有意义。
(7)select,表示若该配置项成立,则select下的配置项也会成立。
(8)help,表示该配置项对应的帮助信息;在menuconfig界面下,选中某一表项并按“?”即可显示该项对应的帮助信息。
(9)source,内核源码目录树中每一个Kconfig都会用source引入其所有子目录下的Kconfig,从而保证了所有的Kconfig项目都被包含进menuconfig中。因此,若在linux内核中添加了一个文件夹,一定要在该文件夹下创建一个Kconfig文件,然后在该文件夹的上一层目录的Kconfig中source引入该文件夹下的Kconfig文件。