首先我们要知道Uboot对于Devicetree的处理有两种不同的方式:
- CONFIG_OF_EMBED: 此配置将设备树嵌入到Uboot的镜像中,因此Uboot也能够很轻松的发现设备树并将其加载到内存中。
- 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