如何在buildroot中正确使用自定义设备树源?

jug*_*ler 6 buildroot u-boot

我制作了 dts 的副本,<linux>/board/arch/arm/boot/dts/imx28-evk.dts以便与我的自定义板一起使用。我的自定义设备树已命名并在 Buildroot 配置中的树外自定义 DTS菜单条目 ( )imx28-custom.dts中指向。BR2_LINUX_KERNEL_CUSTOM_DTS_PATH

然而,u-boot 配置为使用现有的 MX28 板配置。构建内核后,我在文件夹中有imx28-custom.dtb和。zImage<buildroot>/output/images

当系统启动时,u-boot 告诉imx28-evk.dtb没有找到。为什么imx28-custom.dtb构建了但u-boot找不到?为什么 u-boot 找不到自己的设备树 ( imx28-evk.dtb) 和我为内核定制的设备树?我认为这只BR2_LINUX_KERNEL_CUSTOM_DTS_PATH与内核有关。imx28-evk.dtb如果 u-boot 尝试使用自己的设备树来实现此目的,如何将我的自定义设备树传递到内核?

Sim*_*ler 4

U-Boot 抱怨找不到设备树与 Linux 内核有关:启动时,U-Boot 将设备树和内核映像从存储器加载到内存中的指定地址,然后将控制权传递给内核。i.MX28-EVK 板的默认配置是传递文件imx28-evk.dtb

唯一BR2_LINUX_KERNEL_CUSTOM_DTS_PATH的作用是在要构建和安装的文件中包含自定义设备树,但不会配置 U-Boot 来使用它。

U-Boot 传递给内核的设备树由 U-Boot 的选项定义CONFIG_DEFAULT_FDT_FILE(您可以通过键入make uboot-menuconfig(请参阅最后的注释)然后在Boot下设置默认 fdt 文件来编辑它)。该选项应设置为类似 的值imx28-custom.dtb

此处和此处描述了如何从 Buildroot 配置 U-Boot,以使它们永久化


对于 i.MX28-EVK,Buildroot 使用旧版构建系统(将使用到 u-boot 2015.04,但配置使用 2020.04),该系统不允许使用该make uboot-menuconfig命令。您应该能够安全地改变这一点。您需要将Build system设置为Kconfig并将Board defconfig设置为mx28evk