uboot实现了传递dtb的功能,#define CONFIG_OF_LIBFDT使能设备树
i.mx6ul实现方式:
#if defined(CONFIG_SYS_BOOT_NAND)
#define CONFIG_EXTRA_ENV_SETTINGS \
CONFIG_MFG_ENV_SETTINGS \
"panel=TFT43AB\0" \
"fdt_addr=0x83000000\0" \
"fdt_high=0xffffffff\0" \
"console=ttymxc0\0" \
"bootargs=console=ttymxc0,115200 " \
"root=ubi0:rootfs rootfstype=ubifs " \
"ubi.mtd=5 mtdparts=gpmi-nand:4m(u-boot),2m(u-boot-env),4m(logo),10m(kernel),2m(dtb),-(rootfs) rootwait rw\0"\
"bootcmd=nand read ${loadaddr} 0xa00000 0xa00000;"\
"nand read ${fdt_addr} 0x1400000 0x200000;"\
"bootz ${loadaddr} - ${fdt_addr}\0"
#else
(1)将kernel载入内存
nand read ${loadaddr} 0xa00000 0xa00000
(2)然后用fdt addr ${fdtaddr}命令将dtb载入内存
nand read ${fdt_addr} 0x1400000 0x200000
(3)使用bootz ${loadaddr} ${initrdaddr} ${fdtaddr}来引导内核
initrd是临时文件系统,实际使用时用“-”代替:bootz ${loadaddr} - ${fdtaddr}
bootz ${loadaddr} - ${fdt_addr}