当执行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详解-文件的基本要素 ***的更多相关文章

  1. Kconfig详解

    当执行#make menuconfig时会出现内核的配置界面,所有配置工具都是通过读取"arch/$(ARCH)Kconfig"文件来生成配置界面,这个文件就是所有配置的总入口,它 ...

  2. 详解文件操作(ifstream、ofstream、fstream)[转]

    C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstre ...

  3. Linux学习之CentOS(八)----详解文件的搜寻、查找(转)

    which (寻找『运行档』) [root@www ~]# which [-a] command 选项或参数: -a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称 分 ...

  4. Linux命令详解-文件系统管理

    1. 外部设备简介 (1.)硬盘的分类: IDE硬盘 ./dev/hda   hdb,hdc…  分区后:/dev/hda1  /dev/hda2 scsi硬盘: /dev/sda   sdb,sdc ...

  5. FileHeader 详解文件头部注释-sublimeText

    FileHeader 前言: 直奔主题吧,sublimeText 的大部分插件都是非常好用,易用的,而且很容易找到资料.这次用 FileHeader 发现网上的资料很少,而且大部分说得都很模糊,或者直 ...

  6. ggplot2|详解八大基本绘图要素

    本文首发于微信公众号 *“ 生信补给站 ” ,期待您的关注!!!* 原文链接:https://mp.weixin.qq.com/s?__biz=MzIyNDI1MzgzOQ==&mid=265 ...

  7. ll字段 详解 文件权限

    文件类型和权限 硬链接总数 属主用户名 属组组名 文件大小(字节) 上次修改时间 文件/目录名 drwxr-xr-x 15 lb lb 4096 10月 19 01:11 ./ drwxr-xr-x ...

  8. 史上最全的maven的pom.xml文件详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  9. SVN与TortoiseSVN实战:文件加锁详解

    硬广:<SVN与TortoiseSVN实战>系列已经写了八篇,本篇是完结篇,整个系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,以技巧性为主. 本篇详解使用Tortoi ...

随机推荐

  1. 一段简单的手写Java计算器代码

    import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.lang.*; public class Calc ...

  2. 前端安全 xss

    整体的 XSS 防范是非常复杂和繁琐的,不仅需要在全部需要转义的位置,对数据进行对应的转义.而且要防止多余和错误的转义,避免正常的用户输入出现乱码. 虽然很难通过技术手段完全避免 XSS,但可以总结以 ...

  3. [Python3网络爬虫开发实战] 1.1-Python3的安装

    既然要用Python 3开发爬虫,那么第一步一定是安装Python 3.这里会介绍Windows.Linux和Mac三大平台下的安装过程. 1. 相关链接 官方网站:http://python.org ...

  4. Linux:使用root踢掉其他用户

     首先使用w命令查看所有在线用户:  执行命令: pkill -kill -t tty3 再用w命令查看是否已经强制踢掉: TTY 是终端的意思    TTY :0 表示root用户登陆图形化界面的终 ...

  5. C++ <queue>用法

    C++队列可以不需要自己写,有现成的模版类 头文件: #include <queue> #include <iostream> using namespace std; (之前 ...

  6. python爬虫28 | 你爬下的数据不分析一波可就亏了啊,使用python进行数据可视化

    通过这段时间 小帅b教你从抓包开始 到数据爬取 到数据解析 再到数据存储 相信你已经能抓取大部分你想爬取的网站数据了 恭喜恭喜 但是 数据抓取下来 要好好分析一波 最好的方式就是把数据进行可视化 这样 ...

  7. 线程 synchronized锁机制

    脏读 一个常见的概念.在多线程中,难免会出现在多个线程中对同一个对象的实例变量进行并发访问的情况,如果不做正确的同步处理,那么产生的后果就是"脏读",也就是取到的数据其实是被更改过 ...

  8. openstack windows2012r2 glance镜像制作

    镜像实现: 密码注入 修改密码 根分区扩展 1.下载windows iso镜像 下载地址:http://imsdn.com/MSDN-1.html 例如:cn_windows_server_2012_ ...

  9. 自定义EL表达式,将对象转成json格式,关键代码

    做javaweb开发的最常用的一个东西el表达式,这个东西是个很好用的东西,但有些时候我们处理复杂的字符串操作,就有些相形见绌了,这个时候就需要用自定义的方法去实现更多简洁方便的事情. 下面自定义一个 ...

  10. Nginx源码分析:3张图看懂启动及进程工作原理

    编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由陈科在高可用架构群分享.转载请注明来自高可用架构公众号「ArchNotes」.   导读:很多工程师及架构师都希望了解及掌握高性能服务器 ...