Kconfig 配置

[English]

本节介绍 Armino Kconfig 使用过程中常见问题。关于 Kconfig 配置示例可参考 Kconfig 配置示例

Kconfig 配置文件

Armino Kconfig 组织如下图所示:

- armino/
    - components/
        - c1/
            - Kconfig
    - middleware/
        - soc/
            - bk7236/
                - bk7236.defconfig
            - bk7258/
                - bk7258.defconfig
    - projects/
        - my_project/
            - config/
                - common/
                    - config
                - bk7236/
                    - config
                - bk7258/
                    - config
            - Kconfig.projbuild
            - main/
                - Kconfig
            - components/
                - c2/
                    - Kconfig

可以将这些文件归为两类:

  • 配置定义文件:

    • Kconfig - 通常定义在组件中。

    • Kconfig.projbuild - 定义在组件或者工程目录下。

  • 配置修改文件:

    • middleware/soc/bk7236.defconfig - Armino 提供的 BK7236 默认配置。

    • my_projects/config/common/config - 工程中不同 BK72xx 共享的配置。

    • my_projects/config/bk7236/config - 工程中 BK7236 专有配置。

重要

配置项只有在 Kconfig 或 Kconfig.projbuild 中定义之后,才能通过配置修改文件去修改该配置, 如果偿试修改一个未定义的配置,则不会在 sdkconfig.h 中生成任何定义。

备注

Kconfig.projbuild 是针对 menuconfig 来设计的,当向 Kconfig.projbuild 中增加一项时, 会在 menuconfig 顶层菜单中显示该配置项。BK7236 不支持 menuconfig,因此 Kconfig.projbuild 与 Kconfig 作用相同。

在 Armino 工程中,Kconfig 配置优先级为:

my_projects/config/bk7236/config > my_projects/config/common/config > bk7236.defconfig > 配置定义文件

配置依赖

相互依赖的配置项自动更改成正确的值,仅发生在使用 menuconfig 配置时, Armino 不支持 menuconfig 配置,因此,当通过配置修改文件更改某项配置时, 与该项配置相互依赖的配置不会自动更改。

重要

在 Armino 中所有配置项均需显式指定,或者使用默认值。

CMakeLists.txt 中使用 Kconfig

在 CMakeLists.txt 中可直接使用 Kconfig 中定义的配置项,唯一要注意的问题不要将 armino_component_register() 放在任何配置条件中,可参考 通过 Kconfig 禁用组件

闭源组件配置

重要

本节仅针对 Armino 闭源库开发者! 普通 Armino 用户无需关注本节。

闭源组件主要是指 Properties 下的组件,其配置构建也是以工程为单元进行。

下面以 properties_lib 工程为例说明。

Kconfig 文件组织如下:

- armino/
    - projects/
        - my_project/
            - properties_lib
                - common.config
                - bk7236.config
    - properties/
        - modules
            - c1/
                - Kconfig
        - soc/
            - bk7236/
                - bk7236.defconfig

闭源工程配置文件优先级与开源工程相似:bk7236.config > common.config > bk7236.defconfig > 配置定义。

配置方式也同开源工程,唯一的差异是相应配置文件位置不同。