Kconfig语法

一、kconfig简介

        当我们在使用MTK平台进行驱动开发时,很多的外设是需要进行Kconfig配置的。那么Kconfig配置在驱动中有什么用呢?

        首先我来回答一下Kconfig,Kconfig在u-boot和Linux kernel中会被经常使用到,他是和图像化配置界面有关的。它会匹配顶层Makefile的一些变量,最终生成可执行程序,这里我们主要是讨论Kconfig语法,对生成可执行程序的过程不做过多解释。

 二、kconfig语法

1、mainmenu

   mainmenu:根据字面意思可知,mainmenu就是图型化配置界面主菜单的意思。

        例如:mainmenu "U-Boot 2023.7.24 Configuration",那么它生成的图形化配置界面的主菜单名称就为   U-Boot 2023.7.24 Configuration。

 2、source

        source 的主要作用就是调用其它目录下的kconfig文件,和makefile一样,Kconfig 也可以调用其他子目录中的 Kconfig 文件,调用方法如下: source "xxx/Kconfig" //xxx 为具体的目录名,相对路径。

        例如:source "arch/Kconfig"

                    source "fs/Kconfig"

 3、menu/endmenu

         menu 用于生成菜单,endmenu 就是菜单结束标志,这两个一般是成对出现的。一般用于在一个界面中生成子菜单。

        例如:

        menu "General setup"

        config LOCALVERSION 17

string "Local version - append to U-Boot release"

 help

         Append an extra string to the end of your U-Boot version.

        This will show up on your boot log, for example.

        The string you set here will be appended after the contents of

        any files with a filename matching localversion* in your

        object and source tree, in that order. Your total string can

         be a maximum of 64 characters.

.......

endmenu # Boot images

4、config条目  

        先看如下代码:

     menu "General setup"

     config LOCALVERSION

      string "Local version - append to U-Boot release"

        help

                Append an extra string to the end of your U-Boot version.

                This will show up on your boot log, for example.

                The string you set here will be appended after the contents of

                any files with a filename matching localversion* in your

                object and source tree, in that order. Your total string can

                be a maximum of 64 characters.              

       config LOCALVERSION_AUTO

               bool "Automatically append version information to the version

  string"

               default y

                help

                ......

endmenu # General setup

        可以看出,在 menu/endmenu 代码块中有大量的“config xxxx”的代码块,也就是 config 条 目。config 条目就是“General setup”菜单的具体配置项。 “config LOCALVERSION”对应着第一个配置项,“config LOCALVERSION_AUTO”对应 着 第 二 个 配 置 项 , 以 此 类 推 。 我 们 以 “ config LOCALVERSION ” 和 “ config LOCALVERSION_AUTO”这两个为例来分析一下 config 配置项的语法:

        以 config 关键字开头,后面跟着 LOCALVERSION 和 LOCALVERSION_AUTO,这两个就是配置项名字。假如我们使能了 LOCALVERSION_AUTO 这个功能,那么就会下.config 文件中生成 CONFIG_LOCALVERSION_AUTO。

        除config_xxxx以外就是配置项的属性。属性里面描述了配置项的类型、输入提示、依赖关系、帮 助信息和默认值等。

        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 是个字符串变量,用来存储本地字符 串,选中以后即可输入用户定义的本地版本号。

        help 表示帮助信息,告诉我们配置项的含义,当我们按下“h”或“?”弹出来的 帮助界面就是 help 的内容。

        “CONFIG_LOCALVERSION_AUTO”是个 bool 类型,可以通过按下 Y 或 N 键来使能或者禁止 CONFIG_LOCALVERSION_AUTO。

        “default y”表示 CONFIG_LOCALVERSION_AUTO 的默认值就是 y,所以这一 行默认会被选中。                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值