menuconfig 图形化配置原理说明二

一.  简介

之前一篇文章中,我们已经知道: scripts/kconfig/mconf 会调用 uboot 根目录下的 Kconfig 文件开始 构建图形化配置界面。
接下来简单学习一下 Kconfig 的语法。因为后面学习 Linux 驱动开发 时,可能会涉及到修改 Kconfig ,对于 Kconfig 语法我们不需要太深入的去研究。本文我们大概了解其原理即可。

二.  menuconfig 图形化配置之 Kconfig语法

打开 uboot 根目录下的 Kconfig ,这个 Kconfig 文件就是顶层 Kconfig ,我们就以这个文件为例来简单学习一下 Kconfig 语法。

1.  mainmenu

顾名思义 mainmenu 就是主菜单,也就是输入“ make menuconfig ”以后打开的默认界面,在顶层 Kconfig 中有如下代码:
mainmenu "U-Boot $UBOOTVERSION Configuration"
以上的代码是定义了一个名为 “ U-Boot $UBOOTVERSION Configuration ” 的主菜单,其中,UBOOTVERSION=2016.03 ,因此,主菜单名为“ U-Boot 2016.03 Configuration ”,如下图所示:

2.  调用其他目录下的 Kconfig 文件

makefile 一样,Kconfig 也可以调用其他子目录中的 Kconfig 文件,调用方法如下:

source "xxx/Kconfig" //xxx 为具体的目录名,相对路径

在顶层 Kconfig 中有如下代码:

source "arch/Kconfig"
................
source "drivers/Kconfig"
source "fs/Kconfig"
source "lib/Kconfig"
source "test/Kconfig"
可以看出,顶层 Kconfig 文件调用了很多其他子目录下的 Kconfig 件,这些子目录下的 Kconfig 文件在主菜单中生成各自的菜单项。

3.  menu/endmenu 条目

menu 用于生成菜单, endmenu 就是菜单结束标志,这两个一般是成对出现的。在顶层 Kconfig 中有如下代码:

menu "General setup"
.................
	  When disabling this, please check if malloc calls, maybe
	  should be replaced by calloc - if expects zeroed memory.
endif
endmenu		# General setup

可以看出,有一个 menu/endmenu 代码块,这个代码块就是一个子菜单。
1 行的  “ menu "General setup" ”  表示子菜单“ General setup ”。

4.  menuconfig

menuconfig menu 很类似,但是 menuconfig 是个带选项的菜单,其一般用法为:
menuconfig MODULES 
    bool "菜单"
if MODULES
...
endif # MODULES

1 行,定义了一个可选的菜单 MODULES ,只有选中了 MODULES ,第 3~5 if endif 之间的内容才会显示。在顶层 Kconfig 中有如下代码:
menu "General setup"
.................
menuconfig EXPERT
	bool "Configure standard U-Boot features (expert users)"
	default y
	help
	  This option allows certain base U-Boot options and settings
	  to be disabled or tweaked. This is for specialized
	  environments which can tolerate a "non-standard" U-Boot.
	  Only use this if you really know what you are doing.

if EXPERT
.................
	  should be replaced by calloc - if expects zeroed memory.
endif
endmenu		# General setup

第1 ~6 行使用 menuconfig 实现了一个菜单,路径如下:
General setup
-> Configure standard U-Boot features (expert users) --->

配置界面如下图所示:

可以看到,前面有“ [ ] ”说明这个菜单是可选的,当选中这个菜单以后就可以进入到子选项中,
也就是 的第12 ~15 行所描述的菜单。效果如下:

如果不选择 Configure standard U-Boot features (expert users) ,那么代码中
12~15 行所描述的菜单就不会显示出来,进去以后是空白的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值