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 ”,如下图所示:

menuconfig 图形化配置原理说明二_第1张图片

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 ”。

menuconfig 图形化配置原理说明二_第2张图片

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) --->

配置界面如下图所示:

menuconfig 图形化配置原理说明二_第3张图片

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

menuconfig 图形化配置原理说明二_第4张图片

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

你可能感兴趣的:(uboot,系统移植篇,arm开发,linux)