关键词加入搜索引擎网站怀化网站优化联系方式
一. 简介
本文继续简单了解一下,uboot的图形化配置原理。具体了解 Kconfig语法。
之前文章了解了几个 Kconfig语法。地址如下:
menuconfig 图形化配置原理说明二-CSDN博客
二. menuconfig 图形化配置之 Kconfig语法
1. config 条目
顶层 Kconfig 中的 “General setup” 子菜单内容如下:
menu "General setup"
config LOCALVERSIONstring "Local version - append to U-Boot release"
...................
config LOCALVERSION_AUTO
bool "Automatically append version information to the version string"default y
...................
config SYS_MALLOC_F_LENhex "Size of malloc() pool before relocation"
...................
endif
endmenu # General setup 
 
 
 
 可以看出,在  menu/endmenu  代码块中,有大量的 “ config xxxx ” 的代码块,也就是  config  条目。 config  条目就是 “ General setup ” 菜单的具体配置项,如下图 所示:  
 
 

顶层 Kconfig中,第 1行中,以 config 关键字开头,后面跟着 LOCALVERSION,LOCALVERSION就是配置项名字。
config 条目都是以 config条目开头的。后面紧跟着配置项名,例如,LOCALVERSION,使能了条目以后,就会在 .config文件 里面添加 CONFIG_LOCALVERSION=y。
 由此可知, .config  文件中的 “ CONFIG_xxx ”  (xxx  就是具体的配置项名字 )  就是  Kconfig  文件中  config  关键字后面的配置项名字加上 “ CONFIG_ ” 前 缀。 
 
 
config 关键字下面的这几行是配置项属性,3~5 行是 LOCALVERSION 的属性。
 属性里面描述了配置项的类型、输入提示、依赖关系、帮助信息和默认值等。  
 
 第  17  行的  string  是变量类型,也就是“ CONFIG_ LOCALVERSION ”的变量类型。 
 
 可以为:bool 、 tristate 、 string 、 hex  和  int ,一共  5  种。 
  最常用的是  bool 、 tristate  和  string  这三种。 
  bool  类  型有两种值: y  和  n ,当为  y  的时候表示使能这个配置项,当为  n  的时候就禁止这个配置项。  
  tristate  类型有三种值: y 、 m  和  n ,其中  y  和  n  的涵义与  bool  类型一样, m  表示将这个配置项编  
  译为模块。 
  string  为字符串类型,所以  LOCALVERSION  是个字符串变量,用来存储本地字符 串,选中以后即可输入用户定义的本地版本号。如下可以输入: 
   
 string  后面的 “ Local version - append to U-Boot release ” 就是这个配置项在图形界面上的显示出来的标题。  
 
 第  18  行, help  表示帮助信息,告诉我们配置项的含义,当我们按下“ h ”或“ ? ”弹出来的帮助界面就是  help  的内容。 
 
 
 
 
 
2. source
 source  用于读取另一个  Kconfig ,例如顶层 Kconfig 文件中 :  
 
 
source "arch/Kconfig"  顶层 Kconfig 读取 uboot根目录下的 arch/目录下的 Kconfig。
3. choice/endchoice
 在  arch/Kconfig  文件中有如下代码: 
 
 
choiceprompt "Architecture select"default SANDBOX
config ARCbool "ARC architecture"
.................config ARMbool "ARM architecture"
.................
config X86bool "x86 architecture"
.................
endchoice  
 choice/endchoice  代码段定义了一组可选择项,将多个类似的配置项组合在一起,供用户单  
  选或者多选。 
 
 就是选择处理器架构,可以从  ARC 、 ARM 、 AVR32  等这些架构 中选择,这里是单选。 
 
 在  uboot  图形配置界面上选择“ Architecture select ”,进入以后,如下图所示: 
 
 
 

 可以在图 中通过移动光标来选择所使用的  CPU  架构。 
 
 第  2  行的  prompt , 给出这个  choice/endchoice  段的提示信息为“ Architecture select ”。  
 
 
 
4. depends on 和 select
 打开  arch/Kconfig  文件,在里面有这如下代码:  
 
 
config HAVE_GENERIC_BOARDboolconfig SYS_GENERIC_BOARDbooldepends on HAVE_GENERIC_BOARDchoiceprompt "Architecture select"default SANDBOXconfig ARCbool "ARC architecture"select HAVE_PRIVATE_LIBGCCselect HAVE_GENERIC_BOARDselect SYS_GENERIC_BOARDselect SUPPORT_OF_CONTROL 
 
 第  6  行,“ depends on ” 说明 “ SYS_GENERIC_BOARD ” 项依赖于 “ HAVE_GENERIC_BOARD ”,  
 
 也就是说 “ HAVE_GENERIC_BOARD ” 被选中以后,“ SYS_GENERIC_BOARD ” 才能被选中。  
 
 
 
 第  14~17  行,“ select ” 表示反向依赖,当选中 “ ARC ” 以后,“ HAVE_PRIVATE_LIBGCC ”、  
 
 “ HAVE_GENERIC_BOARD ”、“ SYS_GENERIC_BOARD ”和“ SUPPORT_OF_CONTROL ”这四个也会被选中。  
 
 
 
 
5. comment
 comment  用 于 注 释 , 也 就 是 在 图 形 化 界 面 中 显 示 一 行 注 释 , 打 开 文 件 
 
 drivers/mtd/nand/Kconfig ,有如下所示代码:  
 
 
config NAND_ARASANbool "Configure Arasan Nand"helpThis enables Nand driver support for Arasan nand flashcontroller. This uses the hardware ECC for read andwrite operations.comment "Generic NAND options" 
 
 第  8  行,使用  comment  标注了一行注释,注释内容为:“ Generic NAND options ”,这行注释在配置项  NAND_ARASAN  的下面。在图形化配置界面中按照如下路径打开: 
 
 
-> Device Drivers-> NAND Device Support
如下图所示:

 从上图中可以看出,在配置项“ Configure Arasan Nand ”下面有一行注释,注释内容为  
 
 “ *** Generic NAND options *** ”。 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
