`Depends on` 和 `Selected by` 在冲突时如何在 Kconfig 中工作

How does `Depends on` and `Selected by` work in Kconfig when they conflict

为了了解 SPL(二级引导加载程序),我尝试了(在 u-boot v2021.10 中)

make ARCH=arm CROSS_COMPILE=aarch64-none-elf- vexpress_ca9x4_defconfig

make ARCH=arm CROSS_COMPILE=aarch64-none-elf- vexpress_ca9x4_defconfig

我搜索了SPL_OS_BOOT,我需要测试SPL猎鹰模式。但似乎默认情况下未为此板启用它。

所以首先我需要设置CONFIG_SPL=y,但是当我搜索SPL时,它显示了这个。

这里没看明白。 Depends on: ARM [=y] && ARCH_STM32MP [=n] 是否意味着我应该设置 ARCH_STM32MP=y? 如果我加上一个Selected by条件,它是否还满足上面的Depends on条件? 我问它是因为 SPL 应该适用于许多板,但是 ARCH_STM32MP,——一个非常具体的架构条件——在 Depends on 列表中看起来很奇怪。

Kconfig 通常很难理解(我们在 U-Boot 中如何使用它的一些事情需要清理,因为它使事情更难理解)。通常最好直接查看 Kconfig 文件,以更好地理解事物。在这种情况下,如您所述,SPL_OS_BOOT 取决于 SPL,如果我们查看 common/spl/Kconfig,我们会看到:

config SPL
        bool
        depends on SUPPORT_SPL
        prompt "Enable SPL"
        help
          If you want to build SPL as well as the normal image, say Y.

这暗示了您面临的实际问题,vexpress_ca9x4 不支持 SPL。这就是您试图弄清楚的一长串事情所显示的内容,即设置 SUPPORT_SPL 的地方。