• menuconfig 图形化配置原理说明三


    一.  简介

    本文继续简单了解一下,uboot的图形化配置原理。具体了解 Kconfig语法。

    之前文章了解了几个 Kconfig语法。地址如下:

    menuconfig 图形化配置原理说明二-CSDN博客

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

    1.  config 条目

    顶层 Kconfig 中的 “General setup” 子菜单内容如下:

    1. menu "General setup"
    2. config LOCALVERSION
    3. string "Local version - append to U-Boot release"
    4. ...................
    5. config LOCALVERSION_AUTO
    6. bool "Automatically append version information to the version string"
    7. default y
    8. ...................
    9. config SYS_MALLOC_F_LEN
    10. hex "Size of malloc() pool before relocation"
    11. ...................
    12. endif
    13. 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 文件中有如下代码:
    1. choice
    2. prompt "Architecture select"
    3. default SANDBOX
    4. config ARC
    5. bool "ARC architecture"
    6. .................
    7. config ARM
    8. bool "ARM architecture"
    9. .................
    10. config X86
    11. bool "x86 architecture"
    12. .................
    13. endchoice

    choice/endchoice 代码段定义了一组可选择项,将多个类似的配置项组合在一起,供用户单
    选或者多选。
    就是选择处理器架构,可以从 ARC ARM AVR32 等这些架构 中选择,这里是单选。
    uboot 图形配置界面上选择“ Architecture select ”,进入以后,如下图所示:

    可以在图 中通过移动光标来选择所使用的 CPU 架构。
    2 行的 prompt , 给出这个 choice/endchoice 段的提示信息为“ Architecture select ”。

    4. depends on 和 select

    打开 arch/Kconfig 文件,在里面有这如下代码:
    1. config HAVE_GENERIC_BOARD
    2. bool
    3. config SYS_GENERIC_BOARD
    4. bool
    5. depends on HAVE_GENERIC_BOARD
    6. choice
    7. prompt "Architecture select"
    8. default SANDBOX
    9. config ARC
    10. bool "ARC architecture"
    11. select HAVE_PRIVATE_LIBGCC
    12. select HAVE_GENERIC_BOARD
    13. select SYS_GENERIC_BOARD
    14. select 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 ,有如下所示代码:
    1. config NAND_ARASAN
    2. bool "Configure Arasan Nand"
    3. help
    4. This enables Nand driver support for Arasan nand flash
    5. controller. This uses the hardware ECC for read and
    6. write operations.
    7. comment "Generic NAND options"

    8 行,使用 comment 标注了一行注释,注释内容为:“ Generic NAND options ”,这行注释在配置项 NAND_ARASAN 的下面。在图形化配置界面中按照如下路径打开:
    -> Device Drivers
            -> NAND Device Support

    如下图所示:

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

  • 相关阅读:
    Springboot-aop的使用
    kvm虚拟机压缩qcow2镜像空间
    python基于django的校园公寓宿舍报修管理系统设计与实现
    25期代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
    ERROR: [Synth 8-439] module ‘xxx‘ not found not found 错误解决办法
    实现一个博客系统(前端页面设计)
    手机app测试用例怎么写?手机app测试点有哪些?
    Docker的安装
    关于ASPICE 4.0评估师资质更新的说明-亚远景科技
    计算机组成与设计-第五章 memory hierarchy(一)
  • 原文地址:https://blog.csdn.net/wojiaxiaohuang2014/article/details/134059678