Kconfig 配置
本节介绍 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 > 配置定义。
配置方式也同开源工程,唯一的差异是相应配置文件位置不同。