【Kconfig】linux-Kconfig相关配置及分析指南

使用Kconfig时,需要注意:

  1. 在Kconfig中定义的配置宏,前缀都没有"CONFIG_",只有编译内核时,自动生成autoconf.h才会出现前缀.
  2. 如果XX_defconfig板卡配置文件中定义新的宏=y时,而在Kconfig并没有声明它,则内核编译出来的autoconf.h里也不会定义它的.
  3. 如果XX_defconfig板卡配置文件中没有设置CONFIG_MODULES=y,则编译make modules时将会失败,而make
    menuconfig时, Kconfig中的tristate参数也会被读写为bool参数(也就是不能设置m)

CONFIG宏变量参数

  • bool: 表示该CONFIG宏只能选择y(编译内核)或者n(不编译),不能选择m(编译为模块)
  • tristate: 表示该CONFIG宏可以设置y/m/n三种模式(tristate)
  • string: 表示该CONFIG宏可以设为一串字符,比如#define CONFIG_XXX “config test”
  • hex: 表示该CONFIG宏可以设为一个十六进制,比如#define CONFIG_XXX 0x12345
  • int: 表示该CONFIG宏可以设为一个整数,比如#define CONFIG_XXX 12345
常用参数
  • default y: 表示默认是勾上的,当然也可以写为default m或者default n
  • help: 帮助提示信息
  • depends on:依赖项,比如depends on XXX 表示当前宏需要CONFIG_ XXX宏打开的前提下,才能设置它
    (注意依赖项的config参数只有bool或tristate才有效)
  • select : 反依赖项,和depends on刚好相反,比如 selecton
    XXX表示当前宏如果是y或者m,则会自动设置XXX=y或者m(注意参数只有bool或tristate才有效)
  • choice:
    会生成一个单选框,里面通过多选一方式选择config,需要注意choice中的config参数只能bool或tristate
  • prompt: 提示信息,如果对于choice而言,则会用来当做一个单选框入口点的标签
  • range : 设置用户输入的数据范围,比如range 0 100表示数据只能位于0~100
  • menuconfig: menuconfig XXX和config
    XXX类似,唯一不同的是该选项除了能设置y/m/n外,还可以实现菜单效果(能回车进入该项内部)
menuconfig MY_SYSMODE_TEST    #生成一个菜单宏项
bool "MY_SYSMODE_TEST"
default y

config MY_SYSMODE1
bool "my sysmode is bool"
default y
depends on MY_SYSMODE_TEST
config MY_SYSMODE2
tristate "my sysmode2 is tristate"
default m
depends on MY_SYSMODE_TEST    

config MY_SYSMODE3
string "my  sysmode3 is string"
default "test  sysmode3"
depends on MY_SYSMODE2 && MY_SYSMODE_TEST

config MY_SYSMODE4
hex "my  sysmode4 is hex"
range 0 0x2000                  #设置hex区间
default 0x1234
depends on MY_SYSMODE2 && MY_SYSMODE_TEST

config MY_SYMBOL5
int "my  sysmode5 is int" 
range 0 2000                     #设置int区间
default 1234
depends on MY_SYSMODE2 && MY_SYSMODE_TEST

编译内核后,查看autoconf.h
上一篇:can模块的Kconfig配置


下一篇:u-boot移植步骤