You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在U-Boot新板卡defconfig中继承通用配置避免重复?

如何在Yocto中复用板卡defconfig配置,避免重复?

我明白你在Yocto中添加新板卡时想复用已有defconfig配置的痛点——像设备树那样通过引入通用配置来减少重复代码确实很高效。正如@Xypron提到的,defconfig文件本身不支持#include语法直接引入其他defconfig,不过我们有几种更优雅的方案可以解决这个问题:

方案1:优化使用merge_config.sh(当前思路的进阶版)

Yocto的内核构建流程可以顺畅集成scripts/kconfig/merge_config.sh,不需要在do_configure_append里写复杂逻辑。你可以在板卡的内核配方(比如linux-<vendor>.bbappend)中这样配置:

# 添加通用配置和板卡专属配置到源码路径
SRC_URI += "file://common_defconfig \
            file://<new_board>_defconfig"

# 在配置阶段自动合并两个defconfig
do_configure_prepend() {
    ${S}/scripts/kconfig/merge_config.sh -O ${B} ${WORKDIR}/common_defconfig ${WORKDIR}/<new_board>_defconfig
}

这样Yocto会在配置内核前自动合并通用配置与板卡专属配置,板卡专属配置里的选项会覆盖通用配置中的重复项,完美解决ARM这类choice选项的问题——merge_config.sh会正确处理choice类型的配置优先级。

方案2:利用Kconfig的source指令重构配置

虽然defconfig不支持直接引入,但你可以把通用配置抽象成Kconfig片段,再在板卡Kconfig中引入,最后通过defconfig选择板卡配置:

  1. 创建common/Kconfig文件,用Kconfig语法定义通用配置:
config ARM
    bool
    default y

config SPL
    bool
    default y

config CMD_I2C
    bool
    default y
  1. 在板卡的Kconfig(比如board/hw2/Kconfig)中引入通用Kconfig:
source "../common/Kconfig"

choice
    prompt "Target board"
    default TARGET_BOARD_HW2

config TARGET_BOARD_HW2
    bool "Support HW2 board"
endchoice
  1. 板卡的board_hw2_defconfig只需一行:
CONFIG_TARGET_BOARD_HW2=y

这种方式更符合Kconfig的设计逻辑,能完美处理choice类型配置——选择板卡时会自动继承通用配置里的ARM等选项,无需在defconfig中重复编写。

方案3:Yocto层级配置继承

如果多个板卡属于同一系列,还可以通过Yocto层的变量来复用配置。在系列通用的conf/machine/include/<series>-common.inc中定义:

# 通用内核配置
KERNEL_DEFCONFIG_base = "common_defconfig"
# 板卡专属配置追加到通用配置后
KERNEL_DEFCONFIG = "${KERNEL_DEFCONFIG_base} <new_board>_defconfig"

然后在板卡的conf/machine/<new_board>.conf中继承通用inc文件:

require include/<series>-common.inc

这种方式贴合Yocto的层管理机制,适合批量维护同系列板卡的配置。

总结

  • 简单复用需求:方案1的merge_config.sh优化版最直接高效;
  • 长期维护清晰结构:方案2的Kconfig重构更推荐;
  • 同系列多板卡场景:方案3的Yocto层继承最省心。

内容的提问来源于stack exchange,提问作者garlix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:49:02