Kconfig详解-文件的基本要素 ***
当执行make menuconfig时会出现内核的配置界面,所有配置工具都是通过读取"arch/$(ARCH)Kconfig"文件来生成配置界面,这个文件就是所有配置的总入口,它会包含其他目录的Kconfig
Kconfig的作用:Kconfig用来配置内核,它就是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config
Kconfig的语法可以参考“Documentation/kbuild/kconfig-language.txt”
Kconfig文件的基本要素:
1.config条目(entry)
config SUPPORT_CEC_TV
bool "Support CEC"
default y config SUPPORT_ARC
bool "Support ARC"
depends on SUPPORT_CEC_TV
default y config SUPPORT_CEC_VOLUME_KEY_CONTINUE
bool "Support CEC VOLUME KEY CONTINUE"
default n
解析:
config是关键字,表示一个配置选项的开始;紧跟着的SUPPORT_CEC_TV是配置选项的名称,省略了前缀"CONFIG_"
bool表示变量类型,即"CONFIG_ SUPPORT_CEC_TV "的类型,有5种类型:bool、tristate、string、hex和int,其中tristate和string是基本的类型
bool变量的值: y和n
tristate变量的值:y、n和m
string变量的值: 字符串
bool之后的字符串“Support CEC”是字串提示信息,在配置界面中上下移动光标选中它时,就可以通过按空格或回车键来设置“CONFIG_ SUPPORT_CEC_TV”
depends on:表示依赖于XXX,“depends on SUPPORT_CEC_TV”表示只有当SUPPORT_CEC_TV配置选项被选中时,当前配置选项的提示信息才会出现,才能设置当前配置选项

2.menu条目
menu条目用于生成菜单,其格式如下:
menu "Unicode Trans Support"
config SUPPORT_CHARSETDET
bool "Support Match Character Set Codepage"
default n
config SUPPORT_ISO88591_CP28591
bool "Codepage ISO8859-1 Latin 1"
default y
config SUPPORT_ISO88592_CP28592
bool "Codepage ISO8859-2 Central European"
default y
config SUPPORT_ISO88593_CP28593
bool "Codepage ISO8859-3 Latin 3"
default y
config SUPPORT_ISO88594_CP28594
bool "Codepage ISO8859-4 Baltic"
default y
config SUPPORT_ISO88595_CP28595
bool "Codepage ISO8859-5 Cyrillic"
default y
endmenu
menu之后的“Unicode Trans Support”是菜单名,menu和endmenu间有很多config条目,在配置界面中如下所示:
Unicode Trans Support--->
[ ] Support Match Character Set Codepage
[*] Codepage ISO8859-1 Latin 1
[ ] Codepage ISO8859-2 Central European

3.choice条目
1)choice条目将多个类似的配置选项组合在一起,供用户单选或多选
menu "Upgrade Select"
config SUPPORT_USB_UPGRADE
bool "SUPPORT_USB_UPGRADE"
default y
help
Define USB Upgrade
comment "BOOTROM"
config CODE_INCOMPLETE_CHECK
bool "CODE_INCOMPLETE_CHECK"
default y
help
DO NOT USE WHEN ROMTER IS ENABLE
choice
prompt "AC Upgrade Options"
optional
config AC_PWRKEY_UPGRADE
depends on SUPPORT_USB_UPGRADE
bool "AC PWRKEY UPGRADE"
config AC_AUTO_UPGRADE
depends on SUPPORT_USB_UPGRADE
bool "AC AUTO UPGRADE"
config AC_UART_UPGRADE
depends on SUPPORT_USB_UPGRADE
bool "AC UART UPGRADE"
endchoice
endmenu
prompt "AC Upgrade Options"给出提示信息“AC Upgrade Options”,光标选中
后回车进入就可以看到多个config条目定义的配置选项
choice条目中定义的变量只有bool和tristate

2)choice的默认值&依赖:
如下choice默认值为“formal”勾选,即定义的宏为“”
choice
prompt "OSD STYLE"
default NODISPLAY_OSD_STYLE_FORMAL config NODISPLAY_OSD_STYLE_FORMAL
bool "formal"
config NODISPLAY_OSD_STYLE_MSTAR
bool "mstar"
config NODISPLAY_OSD_STYLE_HAIER
bool "haier"
config NODISPLAY_OSD_STYLE_BBK
bool "bbk"
help
input current you want to select osd style
endchoice config OSD_CUSDEF
string
default "formal" if(NODISPLAY_OSD_STYLE_FORMAL)
default "mstar" if(NODISPLAY_OSD_STYLE_MSTAR)
default "haier" if(NODISPLAY_OSD_STYLE_HAIER)
default "bbk" if(NODISPLAY_OSD_STYLE_BBK) config TV_NEW_UI
bool
default y if(NODISPLAY_OSD_STYLE_FORMAL)

4、select 条目
A depends on B
那么只有在B选中才能选A
A select
B
那么只要选中A就会选中B 所以select叫反向依赖。
如下面:如果“SUPPORT_TTX”别选择了,那么“TTX_BYPASS_MODE”会被自动选择,反之亦成立。
menu "TT or CC or VCHIP Select"
config SUPPORT_TTX
bool "Teletext Support"
default y
select TTX_BYPASS_MODE
help
Select Teletext
config TTX_BYPASS_MODE
depends on SUPPORT_TTX
bool "TT BYPASS version"
default y
help
SW collect TTX packet
config TTX_COMPRESS_STORE
depends on SUPPORT_TTX
bool "TT Data compress"
default n
help
TT Pagedata compress store
config CC_SUPPORT
bool "CC Support"
help
Select Closed Caption
config VCHIP_SUPPORT
bool "VCHIP Support"
help
Select VChip
endmenu
"TT BYPASS version"不能被用户选择

5、range 条目
代表可以选择的范围:
menu "Default Setting"
config DEFAULT_PANEL_INVERT
int
range
prompt "Panel invert"
default
help
input current you want to select panel invert
config DEFAULT_PANEL_LVDS_TYPE
int
range
prompt "LVDS Type"
default
help
: JEDIA, : VESA(LSB), : VESA(MSB)
config INPUT_CURRENT_BL
int
prompt "CURRENT for BL mA"
default
help
input current value

6. 条件默认值
如果选择了“CHIP_533”,则CHIPED=0x533
选择了“CHIP_8501”,则CHIPED=0x331
选择了“CHIP_8053”,则CHIPED=0x131
choice
prompt "IC Version Config"
config CHIP_533
bool ""
config CHIP_8501
bool ""
config CHIP_8503
bool ""
endchoice config CHIPID
hex
default 0x533 if CHIP_533
default 0x331 if (CHIP_8501)
default 0x131 if (CHIP_8503)
default 0x131
这里要注意,条件依赖的默认值是不能有提示符的,即根据条件自动默认值,如果在UI用户可设置,依据条件的默认值将不起作用,如下面橙色的配置。
choice
prompt "IC Version Config"
config CHIP_533
bool ""
config CHIP_8501
bool ""
config CHIP_8503
bool ""
endchoice config CHIPID
hex "Chip Setting"
default 0x533 if CHIP_533
default 0x331 if (CHIP_8501)
default 0x131 if (CHIP_8503)
default 0x131

7.comment条目
comment条目用于定义一些帮助信息,出现在界面的第一行,如在arch/arm/Kconifg中有如下代码:
menu "Floating point emulation" comment "At least one emulation must be selected" config FPE_NWFPE ......... config FPE_NWFPE_XP
在界面中如下所示:
8.source条目
source条目用于读取另一个Kconfig文件,如:
source "net/Kconifg"
Kconfig详解-文件的基本要素 ***的更多相关文章
- Kconfig详解
当执行#make menuconfig时会出现内核的配置界面,所有配置工具都是通过读取"arch/$(ARCH)Kconfig"文件来生成配置界面,这个文件就是所有配置的总入口,它 ...
- 详解文件操作(ifstream、ofstream、fstream)[转]
C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstre ...
- Linux学习之CentOS(八)----详解文件的搜寻、查找(转)
which (寻找『运行档』) [root@www ~]# which [-a] command 选项或参数: -a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称 分 ...
- Linux命令详解-文件系统管理
1. 外部设备简介 (1.)硬盘的分类: IDE硬盘 ./dev/hda hdb,hdc… 分区后:/dev/hda1 /dev/hda2 scsi硬盘: /dev/sda sdb,sdc ...
- FileHeader 详解文件头部注释-sublimeText
FileHeader 前言: 直奔主题吧,sublimeText 的大部分插件都是非常好用,易用的,而且很容易找到资料.这次用 FileHeader 发现网上的资料很少,而且大部分说得都很模糊,或者直 ...
- ggplot2|详解八大基本绘图要素
本文首发于微信公众号 *“ 生信补给站 ” ,期待您的关注!!!* 原文链接:https://mp.weixin.qq.com/s?__biz=MzIyNDI1MzgzOQ==&mid=265 ...
- ll字段 详解 文件权限
文件类型和权限 硬链接总数 属主用户名 属组组名 文件大小(字节) 上次修改时间 文件/目录名 drwxr-xr-x 15 lb lb 4096 10月 19 01:11 ./ drwxr-xr-x ...
- 史上最全的maven的pom.xml文件详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- SVN与TortoiseSVN实战:文件加锁详解
硬广:<SVN与TortoiseSVN实战>系列已经写了八篇,本篇是完结篇,整个系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,以技巧性为主. 本篇详解使用Tortoi ...
随机推荐
- 12Oracle Database SQL程序
Oracle Databse SQL 程序 程序块 在这之前,我们所有的sql语句都是一句一句执行的,如果我们把很多事情看作一个整体提交执行的话,必须使用程序块. 声明部分:声名变量及初始化 关键字: ...
- mysql5.7报Access denied for xxx@localhost 的解决
使用root用户登录mysql数据库若如下报错 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor ...
- Python使用Flask框架,结合Highchart处理csv数据(引申-从文件获取数据--从数据库获取数据)
参考链接:https://www.highcharts.com.cn/docs/process-text-data-file 1.javascript代码 var options = { chart: ...
- linux time-统计给定命令所花费的总时间
推荐:更多linux 性能监测与优化 关注:linux命令大全 time命令用于统计给定命令所花费的总时间. 语法 time(参数) 参数 指令:指定需要运行的额指令及其参数. 实例 当测试一个程序或 ...
- python爬虫21 | 对于b站这样的滑动验证码,不好意思,照样自动识别
今天 要来说说滑动验证码了 大家应该都很熟悉 点击滑块然后移动到图片缺口进行验证 现在越来越多的网站使用这样的验证方式 为的是增加验证码识别的难度 那么 对于这种验证码 应该怎么破呢 接下来就是 学习 ...
- (七)python3 切片
切片:取一个 list 或 tuple 的部分元素是非常常见的操作 >>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] #笨办法 ...
- Python学习——字典
字典 字典是另一种可变容器模型,且可存储任意类型对象. 1.创建字典 字典由键和对应值成对组成.每个键与值之间用:隔开,每对之间逗号隔开. 每个键应当互不相同,值可以相同.若同时出现两个相同的键,则后 ...
- [bzoj1042][HAOI2008][硬币购物] (容斥原理+递推)
Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. Input 第一 ...
- java List 数组删除元素
在 java 中,ArrayList 是一个很常用的类,在编程中经常要对 ArrayList 进行增.删.改.查操作.之前在学校时一直认为删除操作是最简单的,现在才越发觉得自己愚蠢.只需要设置好预期条 ...
- Netty学习总结(4)——图解Netty之Pipeline、channel、Context之间的数据流向
以下所绘制图形均基于Netty4.0.28版本. 一.connect(outbound类型事件) 当用户调用channel的connect时,会发起一个outbound类型的事件,该事件将在pipel ...
