2. Kconfig文件分析

(注:本文参考资料:朱有鹏嵌入式课程。本文为个人学习记录,如有错误,欢迎指正。)

1. Kconfig文件的作用

Kcongfig用于构建Linux内核配置的图形界面,配置界面所有配置项都从Kconfig中读取。

2. Kconfig文件的格式说明
Kconfig文件遵循一定的格式,menuconfig程序可以识别其格式,并从中提取相关信息形成menuconfig界面中的菜单项。

在进行驱动移植等移植工作时,需要自己添加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"
.......................................
(1)menuconfig    XXX,表示一个菜单项(它本身也是其上一级菜单中的一个配置选项)。XXX表示该配置项的名称,该字符串用CONFIG_修饰就构成.config文件中的配置项名称CONFIG_XXX。

(2)config XXX,表示菜单中的一个配置选项。一个menuconfig XXX下的所有config 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文件。

3. Kconfig、.config、autoconfig.h、Makefile之间的关联
menuconfig图形界面中所有表项都从Kcongfig中读取,所有表项的设置值都从.config文件中读取。menuconfig界面中的修改部分会同步至.config文件中;同时还会将所有的配置选项以宏的形式保存在/kernel/include/generated/autoconfig.h中,Makefile会根据其中的宏对相应的配置项进行条件编译。

猜你喜欢

转载自blog.csdn.net/qq_20182935/article/details/80805209