Uboot是如何发现Devicetree并将它传递给Linux的

时间:2024-10-25 07:20:09

首先我们要知道Uboot对于Devicetree的处理有两种不同的方式:

  1. CONFIG_OF_EMBED: 此配置将设备树嵌入到Uboot的镜像中,因此Uboot也能够很轻松的发现设备树并将其加载到内存中。
  2. CONFIG_OF_SEPARATE: 此配置意味着设备树单独保存在存储中,例如在 flash memory, eMMC存储的boot分区(/boot 目录)中,Uboot在启动的时候会搜索boot分区然后找到设备树并加载到内存中。

对于CONFIG_OF_SEPARATE配置,我们看看Uboot使用的命令:

# Load the DTB from storage to a memory address (0x83000000 is an example)
load mmc 0:1 0x83000000 /boot/my_device_tree.dtb

# Boot the kernel with the initrd and DTB
bootz $kernel_addr $initrd_addr 0x83000000