Stm32 Yocto变量未定义,但使用u运算符设置

Stm32 Yocto变量未定义,但使用u运算符设置,stm32,yocto,bitbake,Stm32,Yocto,Bitbake,我正在努力解决一些我不确定是否正确解决的问题 在Yocto环境中(顺便说一下,对于STM32MP1),我必须配置一个新的目标。 因此,我在meta-st/meta-st-stm32mp/conf/machine/include/st-machine-extlinux-config-stm32mp.inc这一节中添加了另一个类似于已经可用的部分: EXTLINUX_BOOTDEVICE_EMMC = "mmc1" EXTLINUX_BOOTDEVICE_SDCARD = "mmc0

我正在努力解决一些我不确定是否正确解决的问题

在Yocto环境中(顺便说一下,对于STM32MP1),我必须配置一个新的目标。 因此,我在
meta-st/meta-st-stm32mp/conf/machine/include/st-machine-extlinux-config-stm32mp.inc
这一节中添加了另一个类似于已经可用的部分:

EXTLINUX_BOOTDEVICE_EMMC      = "mmc1"
EXTLINUX_BOOTDEVICE_SDCARD    = "mmc0"

EXTLINUX_ROOT_EMMC         = "${@bb.utils.contains('ST_VENDORFS','1','root=/dev/mmcblk1p4','root=/dev/mmcblk1p3',d)}"
EXTLINUX_ROOT_NAND         = "ubi.mtd=UBI rootfstype=ubifs root=ubi0:rootfs"

# Define available targets to use
UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp151a_sdcard"
UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp151a_emmc"

# Define bootprefix for each target
UBOOT_EXTLINUX_BOOTPREFIXES_mp151a_sdcard       = "${EXTLINUX_BOOTDEVICE_SDCARD}_stm32mp151a_"
UBOOT_EXTLINUX_BOOTPREFIXES_mp151a_emcc       = "${EXTLINUX_BOOTDEVICE_EMCC}_stm32mp151a_"

# Define labels for each target
UBOOT_EXTLINUX_LABELS_mp151a_sdcard       = "stm32mp151a-sdcard"
UBOOT_EXTLINUX_LABELS_mp151a_emcc       = "stm32mp151a-emcc"

# Define default boot config for each target
UBOOT_EXTLINUX_DEFAULT_LABEL_mp151a_sdcard       ?= "stm32mp151a-sdcard"
UBOOT_EXTLINUX_DEFAULT_LABEL_mp151a_emcc       ?= "stm32mp151a-emcc"

# Define FDT overrides for all labels
UBOOT_EXTLINUX_FDT_stm32mp151a-sdcard       = "/stm32mp151a.dtb"
UBOOT_EXTLINUX_FDT_stm32mp151a-emcc       = "/stm32mp151a.dtb"

# Define ROOT overrides for all labels
UBOOT_EXTLINUX_ROOT_stm32mp151a-sdcard       = "${EXTLINUX_ROOT_SDCARD}"
UBOOT_EXTLINUX_ROOT_stm32mp151a-emcc       = "${EXTLINUX_ROOT_EMCC}"
但是当我
bitbake
(包括上面的文件)时,我得到以下输出:

DEBUG: Executing python function update_extlinuxconf_targets
NOTE: UBOOT_EXTLINUX_CONFIGURED_TARGETS:  mp157a-dk1_sdcard mp157a-dk1_sdcard-optee mp157c-dk2_sdcard mp157c-dk2_sdcard-optee mp157c-ed1_emmc mp157c-ed1_emmc-optee mp157c-ed1_sdcard mp157c-ed1_sdcard-optee mp157c-ev1_emmc mp157c-ev1_emmc-optee mp157c-ev1_nand mp157c-ev1_nor-sdcard mp157c-ev1_nor-emmc mp157c-ev1_sdcard mp157c-ev1_sdcard-optee mp151a_sdcard mp151a_emmc
NOTE: UBOOT_EXTLINUX_CONFIG_FLAGS:  emmc    sdcard
NOTE: *** Loop for config_label: emmc
NOTE: *** Loop for devicetree: stm32mp151a
NOTE: >>> New target label: mp151a_emmc
NOTE: >>> Append mp151a_emmc to UBOOT_EXTLINUX_TARGETS
NOTE: *** Loop for config_label: sdcard
NOTE: *** Loop for devicetree: stm32mp151a
NOTE: >>> New target label: mp151a_sdcard
NOTE: >>> Append mp151a_sdcard to UBOOT_EXTLINUX_TARGETS
NOTE: >>> UBOOT_EXTLINUX_TARGETS (updated):  mp151a_emmc mp151a_sdcard
DEBUG: Python function update_extlinuxconf_targets finished
DEBUG: Executing python function do_create_multiextlinux_config
ERROR: UBOOT_EXTLINUX_ROOT not defined
DEBUG: Python function do_create_multiextlinux_config finished
ERROR: Function failed: do_create_multiextlinux_config
如您所见,该文件实际上已被处理,因为它添加了我定义的目标。 但是它找不到
UBOOT\u EXTLINUX\u ROOT
,即使它是用
\u
操作符“设置”的:

UBOOT_EXTLINUX_ROOT_stm32mp151a-sdcard       = "${EXTLINUX_ROOT_SDCARD}"
UBOOT_EXTLINUX_ROOT_stm32mp151a-emcc       = "${EXTLINUX_ROOT_EMCC}"
我还尝试将主变量设置为:

UBOOT_EXTLINUX_ROOT = ""

看看这是否是问题所在,但它不会改变任何事情。 这是与Yocto本身有关(我的意思是,我的语法有问题)还是与SDK非常相关(
meta-st

上述错误应通过文件引发:

更新 我检查了
bitbake-e
的(巨大)输出,以及我看到的其他目标:

# $UBOOT_EXTLINUX_ROOT [41 operations]
[...]
#     "${EXTLINUX_ROOT_NOREMMC}"
#   override[stm32mp157c-ev1-m4-examples-sdcard]:set /local/STM32MP15-Ecosystem-v1.1.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-10-09/layers/meta-st/meta-st-stm32mp/conf/machine/include/st-machine-extlinux-config-stm32mp.inc:274
#     "${EXTLINUX_ROOT_SDCARD}"
#   override[stm32mp157c-ev1-m4-examples-sdcard-optee]:set /local/STM32MP15-Ecosystem-v1.1.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-10-09/layers/meta-st/meta-st-stm32mp/conf/machine/include/st-machine-extlinux-config-stm32mp.inc:275
#     "${EXTLINUX_ROOT_SDCARD_OPTEE}"
#   override[stm32mp151a-sdcard]:set /local/STM32MP15-Ecosystem-v1.1.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-10-09/layers/meta-st/meta-st-stm32mp/conf/machine/include/st-machine-extlinux-config-stm32mp.inc:296
#     "${EXTLINUX_ROOT_SDCARD}"
#   override[stm32mp151a-emcc]:set /local/STM32MP15-Ecosystem-v1.1.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-10-09/layers/meta-st/meta-st-stm32mp/conf/machine/include/st-machine-extlinux-config-stm32mp.inc:297
[...]
# pre-expansion value:
#   ""
UBOOT_EXTLINUX_ROOT=""

# $UBOOT_EXTLINUX_ROOT_cubemx-nor-sdcard
UBOOT_EXTLINUX_ROOT_cubemx-nor-sdcard="root=/dev/mmcblk0p3"
# $UBOOT_EXTLINUX_ROOT_cubemx-sdcard
UBOOT_EXTLINUX_ROOT_cubemx-sdcard="root=/dev/mmcblk0p6"
# $UBOOT_EXTLINUX_ROOT_stm32mp151a-emcc
UBOOT_EXTLINUX_ROOT_stm32mp151a-emcc="\${EXTLINUX_ROOT_EMCC}"
# $UBOOT_EXTLINUX_ROOT_stm32mp151a-sdcard
UBOOT_EXTLINUX_ROOT_stm32mp151a-sdcard="root=/dev/mmcblk0p6"
到目前为止,如果我理解正确,覆盖值是正确分配的(但不是
${EXTLINUX\u ROOT\u EMCC}
-我不知道
\
来自哪里),但主变量仍然是空的


在上述文件的开头添加
UBOOT\u EXTLINUX\u ROOT=“ROOT=/dev/mmcblk1p4”
似乎可以奏效(即使在我写相反的东西之前,也许我忘记清除缓存了?),但我认为这不是正确的方法。

关于emmc,我发现了一个打字错误:
${EXTLINUX\u ROOT\u EMCC}
vs
${EXTLINUX\u ROOT\u emmc
你的问题解决了吗?当然没有。唯一解决的部分是问题中删掉的部分——顺便说一句,是边缘部分。谢谢,您的
覆盖
(例如来自
机器覆盖
)必须包含
stm32mp151a SD卡
stm32mp151a emmc
@mrvulcan中的一个,谢谢,但我不明白需要将它们附加到
覆盖
的位置。我在
layers
目录中为该关键字添加了
grep
,但我找不到其他图像(即
cubemx sdcard
cubemx emmc
)的附加位置。
root = localdata.getVar('UBOOT_EXTLINUX_ROOT')
if not root:
    bb.fatal('UBOOT_EXTLINUX_ROOT not defined')
# $UBOOT_EXTLINUX_ROOT [41 operations]
[...]
#     "${EXTLINUX_ROOT_NOREMMC}"
#   override[stm32mp157c-ev1-m4-examples-sdcard]:set /local/STM32MP15-Ecosystem-v1.1.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-10-09/layers/meta-st/meta-st-stm32mp/conf/machine/include/st-machine-extlinux-config-stm32mp.inc:274
#     "${EXTLINUX_ROOT_SDCARD}"
#   override[stm32mp157c-ev1-m4-examples-sdcard-optee]:set /local/STM32MP15-Ecosystem-v1.1.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-10-09/layers/meta-st/meta-st-stm32mp/conf/machine/include/st-machine-extlinux-config-stm32mp.inc:275
#     "${EXTLINUX_ROOT_SDCARD_OPTEE}"
#   override[stm32mp151a-sdcard]:set /local/STM32MP15-Ecosystem-v1.1.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-10-09/layers/meta-st/meta-st-stm32mp/conf/machine/include/st-machine-extlinux-config-stm32mp.inc:296
#     "${EXTLINUX_ROOT_SDCARD}"
#   override[stm32mp151a-emcc]:set /local/STM32MP15-Ecosystem-v1.1.0/Distribution-Package/openstlinux-4.19-thud-mp1-19-10-09/layers/meta-st/meta-st-stm32mp/conf/machine/include/st-machine-extlinux-config-stm32mp.inc:297
[...]
# pre-expansion value:
#   ""
UBOOT_EXTLINUX_ROOT=""

# $UBOOT_EXTLINUX_ROOT_cubemx-nor-sdcard
UBOOT_EXTLINUX_ROOT_cubemx-nor-sdcard="root=/dev/mmcblk0p3"
# $UBOOT_EXTLINUX_ROOT_cubemx-sdcard
UBOOT_EXTLINUX_ROOT_cubemx-sdcard="root=/dev/mmcblk0p6"
# $UBOOT_EXTLINUX_ROOT_stm32mp151a-emcc
UBOOT_EXTLINUX_ROOT_stm32mp151a-emcc="\${EXTLINUX_ROOT_EMCC}"
# $UBOOT_EXTLINUX_ROOT_stm32mp151a-sdcard
UBOOT_EXTLINUX_ROOT_stm32mp151a-sdcard="root=/dev/mmcblk0p6"