Kconfig 语言

一、Kconfig结构

Kconfig是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config

Kconfig格式:

menu "MenuName"

comment "describe message"

  config Option Name

    bool xxxx

    depends on xxxx

    select xxxx

    help

      .............
source "route/Kconifg" 

......

  config Option Name

    bool type

    default y or n

    depends on xxxx

    select xxxx

    help

      .............

......

endmenu

menu:用于生成菜单,menu之后是MenuName(菜单名)。menu和endmenu间有很多config条目;

comment:用于定义一些帮助信息,出现在界面的第一行;

config:表示一个配置选项的开始;紧跟着的是Option Name(配置选项的名称),省略了前缀"CONFIG_";

bool:表示变量类型,有5种类型:bool、tristate、string、hex和int,其中tristate和string是基本的类型:

bool变量的值: y和n

tristate变量的值:y、n和m

string变量的值: 字符串

hex :取值为十六进制数据

int :取值为十进制数据

bool之后的字符串“xxxx”是提示信息,在配置界面中上下移动光标选中它时,就可以通过按空格或回车键来设置CONFIG_ xxxx的值(即选择了哪个值就会把该值赋值给CONFIG_xxxx);

default :为变量默认值,可被用户设置值覆盖;

depends on:表示依赖于xxxx,“depends on xxxx”表示只有当xxxx配置选项被选中时,当前配置选项的提示信息才会出现,才能设置当前配置选项,说明:

select:是反向依赖关系的意思,即当前配置选项被选中,则xxxx就会被选中。

help :它其中的文字将作为配置界面中的帮助信息;

 choice

        prompt "xxxx"

        default y or n

        config xxxx

             .........

        config xxxx

             .........

 endchoice

choice条目将多个类似的配置选项组合在一起,供用户单选或多选。prompt "xxxx"给出提示信息,光标选中后回车进入就可以看到多个config条目定义的配置选项,choice条目中定义的变量只有bool和tristate。


"default" <expr> ["if" <expr>]


一个配置选项可以有任意多个默认值。如果有多个默认值,那么只有第一个被定义的值是可用的。如果用户没有设置(通过上面的输入提示),配置选项的值就是显示输入也即默认值。如果可以显示输入提示的话,就会把默认值显示给用户,并可以让用户进行修改。
默认值的依赖关系可以用 "if" 添加。(可选项)


config CONS_INDEX
    int "UART used for console"
    depends on SPECIFY_CONSOLE_INDEX
    range 0 6
    default 0 if CONS_INDEX_0
    default 2 if CONS_INDEX_2
    default 3 if CONS_INDEX_3
    default 4 if CONS_INDEX_4
    default 5 if CONS_INDEX_5
    default 6 if CONS_INDEX_6
    default 1
    help
      Set this to match the UART number of the serial console.

 

 

4、 depends on 和 select

打开 arch/Kconfig 文件,在里面有这如下代码:

7 config SYS_GENERIC_BOARD
8 bool
9 depends on HAVE_GENERIC_BOARD
10
11 choice
12 prompt "Architecture select"
13 default SANDBOX
14
15 config ARC
16 bool "ARC architecture"
17 select HAVE_PRIVATE_LIBGCC
18 select HAVE_GENERIC_BOARD
19 select SYS_GENERIC_BOARD
20 select SUPPORT_OF_CONTROL

  第 9 行,“depends on”说明“SYS_GENERIC_BOARD”项依赖于“HAVE_GENERIC_BOARD”,也就是说“HAVE_GENERIC_BOARD”被选中以后“ SYS_GENERIC_BOARD”才能被选中。
  第 17~20 行,“select”表示方向依赖,当选中“ARC”以后,“HAVE_PRIVATE_LIBGCC”、“HAVE_GENERIC_BOARD”、“SYS_GENERIC_BOARD”和“SUPPORT_OF_CONTROL”这四个也会被选中。

 

 

https://www.cnblogs.com/schips/p/12083894.html

感谢:黄树超

https://www.cnblogs.com/fluidog/p/15176680.html#:~:text=%EE%80%80Kconfig%EE%80%81%20%E8%AF%AD%E8%A8%80%20%E8%8F%9C%E5%8D%95%E5%85%A5%E5%8F%A3%20Kconifg%20%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E4%B8%80%E7%B3%BB%E5%88%97%E4%BB%A5%E5%85%B3%E9%94%AE%E5%AD%97%E5%BC%80%E5%A4%B4%E7%9A%84%E8%8F%9C%E5%8D%95%E5%85%A5%E5%8F%A3%EF%BC%88%E8%8F%9C%E5%8D%95%E9%A1%B9%EF%BC%89%E3%80%82%20config%20%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E7%AC%A6%E5%8F%B7%20symbol%E3%80%82%E5%AE%83%E6%98%AF%E6%9E%84%E6%88%90,%E7%9A%84%E7%BB%9D%E5%A4%A7%E6%95%B0%E8%8F%9C%E5%8D%95%E5%85%A5%E5%8F%A3%EF%BC%8C%E5%85%B6%E4%BB%96%E8%8F%9C%E5%8D%95%E5%85%A5%E5%8F%A3%E5%B8%AE%E5%8A%A9%E7%BB%84%E7%BB%87%E6%AD%A4%E7%B1%BB%E5%9E%8B%E5%85%A5%E5%8F%A3%E3%80%82%20%EE%80%80%E8%AF%AD%E6%B3%95%EE%80%81%E5%A6%82%E4%B8%8B%EF%BC%9A%20config%20%3Csymbol%3E%20%3Cconfig%20options%3E%20menuconfig%20

 

posted @ 2022-02-12 19:18  liujunhuasd  阅读(211)  评论(0编辑  收藏  举报