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

如何在Yocto中同时为sama5d4-xplained-sd与自定义机型构建镜像?

问题:Yocto中同时为sama5d4-xplained-sd和sama5d4-custom-sd构建镜像的优化方案

我正在使用Yocto的meta-atmel层,已创建新机型sama5d4-custom-sd,其配置文件sama5d4-custom-sd.conf复制自sama5d4-xplained-sd.conf,内容如下:

#@TYPE: Machine
#@Name: SAMA5D4 Custom SD
#@DESCRIPTION: Machine configuration for SAMA5D4 Custom board

require include/sama5d4.inc

MACHINE_FEATURES = "apm alsa ext2 ext3 usbhost usbgadget screen touchscreen"
KERNEL_DEVICETREE = " \
        at91-sama5d4_xplained.dtb \
        "

IMAGE_FSTYPES += " tar.gz wic"

do_image_wic[depends] += "u-boot-at91:do_deploy"
WKS_FILE = "sdimage-bootpart.wks"
IMAGE_BOOT_FILES = "BOOT.BIN u-boot.bin uboot.env sama5d4_xplained.itb"

UBOOT_MACHINE ?= "sama5d4_xplained_mmc_defconfig"
UBOOT_ENTRYPOINT = "0x20008000"
UBOOT_LOADADDRESS = "0x20008000"
UBOOT_ENV_SIZE = "0x4000"

AT91BOOTSTRAP_MACHINE ?= "sama5d4_xplained"

# Needed for FIT
MACHINE_ESSENTIAL_EXTRA_RDEPENDS = " dt-overlay-at91"

MACHINEOVERRIDES .= "sama5d4-xplained-sd:"

其中最后一行的MACHINEOVERRIDES用于适配内核配方中的COMPATIBLE_MACHINE规则(内核配方内容如下),否则BitBake会执行失败:

COMPATIBLE_MACHINE = "(sama5d2-xplained|sama5d2-xplained-sd|sama5d2-xplained-emmc|sama5d2-ptc-ek|sama5d2-ptc-ek-sd|sama5d27-som1-ek|sama5d27-som1-ek-sd|sama5d4-xplained|sama5d4-xplained-sd|sama5d4ek|sama5d3-xplained|sama5d3-xplained-sd|sama5d3xek|at91sam9x5ek|at91sam9m10g45ek|at91sam9rlek|sama5d2-icp-sd|sam9x60ek|sam9x60ek-sd|sama5d27-wlsom1-ek-sd)"

现需实现可选择性地同时为sama5d4-xplained-sd和sama5d4-custom-sd构建镜像,已知可修改各配方的COMPATIBLE_MACHINE字段,但希望找到更优方案。


优化方案

方案1:利用BitBake多MACHINE构建特性(快速实现)

无需修改任何配方的COMPATIBLE_MACHINE,直接借助Yocto原生的多机型构建能力:

  • 保持自定义机型配置不变:现有sama5d4-custom-sd.conf中的MACHINEOVERRIDES已经确保它能复用sama5d4-xplained-sd的所有配方兼容性,无需额外调整。
  • 命令行指定多机型构建:执行构建时直接同时指定两个机型,BitBake会分别生成对应镜像:
    MACHINE="sama5d4-xplained-sd sama5d4-custom-sd" bitbake <镜像配方名>
    
    将<镜像配方名>替换为实际要构建的镜像(如core-image-minimal)。
  • 可选:配置默认多机型:如果需要默认同时构建这两个机型,可在build/conf/local.conf中添加:
    MACHINE = "sama5d4-xplained-sd sama5d4-custom-sd"
    
    之后直接执行bitbake <镜像配方名>即可自动同时构建。

方案2:创建机型继承组(适合长期维护)

如果后续可能新增更多同系列自定义机型,可通过基础配置继承的方式统一管理:

  1. 创建基础机型配置文件:比如sama5d4-sd-base.conf,存放两个机型的通用配置:

    #@TYPE: Machine
    #@Name: SAMA5D4 SD Base
    #@DESCRIPTION: Base machine configuration for SAMA5D4 SD-based boards
    
    require include/sama5d4.inc
    
    MACHINE_FEATURES = "apm alsa ext2 ext3 usbhost usbgadget screen touchscreen"
    IMAGE_FSTYPES += " tar.gz wic"
    do_image_wic[depends] += "u-boot-at91:do_deploy"
    WKS_FILE = "sdimage-bootpart.wks"
    UBOOT_ENTRYPOINT = "0x20008000"
    UBOOT_LOADADDRESS = "0x20008000"
    UBOOT_ENV_SIZE = "0x4000"
    # Needed for FIT
    MACHINE_ESSENTIAL_EXTRA_RDEPENDS = " dt-overlay-at91"
    
  2. 修改原有机型配置:让sama5d4-xplained-sd.conf继承基础配置,只保留专属设置:

    #@TYPE: Machine
    #@Name: SAMA5D4 Xplained SD
    #@DESCRIPTION: Machine configuration for SAMA5D4 Xplained SD board
    
    require sama5d4-sd-base.conf
    
    KERNEL_DEVICETREE = " \
            at91-sama5d4_xplained.dtb \
            "
    IMAGE_BOOT_FILES = "BOOT.BIN u-boot.bin uboot.env sama5d4_xplained.itb"
    UBOOT_MACHINE ?= "sama5d4_xplained_mmc_defconfig"
    AT91BOOTSTRAP_MACHINE ?= "sama5d4_xplained"
    
    MACHINEOVERRIDES .= "sama5d4-xplained-sd:"
    
  3. 调整自定义机型配置:同样让sama5d4-custom-sd.conf继承基础配置,按需覆盖专属设置:

    #@TYPE: Machine
    #@Name: SAMA5D4 Custom SD
    #@DESCRIPTION: Machine configuration for SAMA5D4 Custom board
    
    require sama5d4-sd-base.conf
    
    # 自定义机型的专属配置(如设备树、UBOOT配置等)在这里覆盖
    KERNEL_DEVICETREE = " \
            at91-sama5d4_xplained.dtb \
            "
    IMAGE_BOOT_FILES = "BOOT.BIN u-boot.bin uboot.env sama5d4_xplained.itb"
    UBOOT_MACHINE ?= "sama5d4_xplained_mmc_defconfig"
    AT91BOOTSTRAP_MACHINE ?= "sama5d4_xplained"
    
    MACHINEOVERRIDES .= "sama5d4-xplained-sd:"
    
  4. 多机型构建方式同方案1:使用命令行指定或local.conf配置默认多机型即可同时构建。

这种方式的优势是:后续新增同系列SD机型时,只需继承基础配置,无需重复编写通用字段,同时依然复用原有sama5d4-xplained-sd的兼容性规则,避免修改大量配方。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:03:12