[U-Boot] [PATCH 5/5] arm: ti: boot: Implement Android boot using DT image format
Sam Protsenko
semen.protsenko at linaro.org
Thu Apr 19 20:36:13 UTC 2018
On 16 April 2018 at 23:32, Sam Protsenko <semen.protsenko at linaro.org> wrote:
> Make sure we can boot Android on TI boards using scheme described in
> Android documentation [1]. For this do next:
> 1. Enable "dtimg" command. We will need it to boot the Android using
> new DTB/DTBO image format.
> 2. Add fdt overlay support. We will need that to be able to apply fdt
> overlays to dtb file.
> 3. Provide new Android boot commands. In case we don't know what board
> it is, let's provide fallback mechanism:
> - use just dtb[0] from dtb.img
> - don't apply any dtbo files on top of it
> - but still that dtb file must be packed into Android DT image
>
> To use new boot scheme, user has to do next:
>
> 1. Prepare dtb.img and dtbo.img images, generated with mkdtimg tool (can
> be found in Android sources, see prebuilts/misc/linux-x86/libufdt).
> Example:
>
> $ ./mkdtimg create dtb.img \
> am57xx-beagle-x15.dtb --id=0 \
> am57xx-beagle-x15-revc.dtb --id=1
>
> $ ./mkdtimg create dtbo.img \
> am57xx-evm-common.dtbo --id=0 \
> mt9t111.dtbo --id=1 \
> ov10635.dtbo --id=2 \
> am57xx-evm.dtbo --id=3 \
> am57xx-evm-reva3.dtbo --id=4
>
> Current boot commands rely on that specific order of dtb/dtbo files.
> Also, be sure to compile .dtb files with -@ dtc flag, so that
> overlays can be applied to dtb files.
>
> 2. Flash new U-Boot, set new environment and format eMMC:
>
> $ fastboot flash xloader MLO
> $ fastboot flash bootloader u-boot.img
>
> => env default -f -a
> => setenv partitions $partitions_android
> => env save
> => fastboot 1
>
> $ fastboot oem format
>
> 3. Flash dtb.img, dtbo.img:
>
> $ fastboot flash dtb dtb.img
> $ fastboot flash dtbo dtbo.img
>
> 4. Flash Android images:
>
> $ fastboot flash boot boot.img
> $ fastboot flash cache cache.img
> $ fastboot flash recovery recovery.img
> $ fastboot flash system system.img
> $ fastboot flash userdata userdata.img
> $ fastboot flash vendor vendor.img
>
> For more detailed instructions, see [2].
>
> [1] https://source.android.com/devices/architecture/dto/partitions
> [2] https://wiki.linaro.org/Boards/BeagleBoard-X15
>
> Signed-off-by: Sam Protsenko <semen.protsenko at linaro.org>
> ---
> board/ti/common/Kconfig | 1 +
> configs/am57xx_evm_defconfig | 1 +
> configs/am57xx_hs_evm_defconfig | 1 +
> configs/dra7xx_evm_defconfig | 1 +
> configs/dra7xx_hs_evm_defconfig | 1 +
> include/configs/ti_armv7_common.h | 1 +
> include/environment/ti/boot.h | 40 +++++++++++++++++++++++++------
> 7 files changed, 39 insertions(+), 7 deletions(-)
>
> diff --git a/board/ti/common/Kconfig b/board/ti/common/Kconfig
> index c21eb8c2d2..f5bd9160b3 100644
> --- a/board/ti/common/Kconfig
> +++ b/board/ti/common/Kconfig
> @@ -21,6 +21,7 @@ config TI_COMMON_CMD_OPTIONS
> imply CRC32_VERIFY if ARCH_KEYSTONE
> imply CMD_DFU if USB_GADGET_DOWNLOAD
> imply CMD_DHCP
> + imply CMD_DTIMG
> imply CMD_EEPROM
> imply CMD_EXT2
> imply CMD_EXT4
> diff --git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig
> index 6b11b3476c..7198542d9e 100644
> --- a/configs/am57xx_evm_defconfig
> +++ b/configs/am57xx_evm_defconfig
> @@ -78,3 +78,4 @@ CONFIG_USB_GADGET=y
> CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments"
> CONFIG_USB_GADGET_VENDOR_NUM=0x0451
> CONFIG_USB_GADGET_PRODUCT_NUM=0xd022
> +CONFIG_OF_LIBFDT_OVERLAY=y
> diff --git a/configs/am57xx_hs_evm_defconfig b/configs/am57xx_hs_evm_defconfig
> index ca9742f118..e4948d549b 100644
> --- a/configs/am57xx_hs_evm_defconfig
> +++ b/configs/am57xx_hs_evm_defconfig
> @@ -81,3 +81,4 @@ CONFIG_USB_GADGET=y
> CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments"
> CONFIG_USB_GADGET_VENDOR_NUM=0x0451
> CONFIG_USB_GADGET_PRODUCT_NUM=0xd022
> +CONFIG_OF_LIBFDT_OVERLAY=y
> diff --git a/configs/dra7xx_evm_defconfig b/configs/dra7xx_evm_defconfig
> index e17135c8f6..4ce687fbda 100644
> --- a/configs/dra7xx_evm_defconfig
> +++ b/configs/dra7xx_evm_defconfig
> @@ -96,3 +96,4 @@ CONFIG_USB_GADGET=y
> CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments"
> CONFIG_USB_GADGET_VENDOR_NUM=0x0451
> CONFIG_USB_GADGET_PRODUCT_NUM=0xd022
> +CONFIG_OF_LIBFDT_OVERLAY=y
> diff --git a/configs/dra7xx_hs_evm_defconfig b/configs/dra7xx_hs_evm_defconfig
> index 606f99938c..6546daa080 100644
> --- a/configs/dra7xx_hs_evm_defconfig
> +++ b/configs/dra7xx_hs_evm_defconfig
> @@ -95,3 +95,4 @@ CONFIG_USB_GADGET=y
> CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments"
> CONFIG_USB_GADGET_VENDOR_NUM=0x0451
> CONFIG_USB_GADGET_PRODUCT_NUM=0xd022
> +CONFIG_OF_LIBFDT_OVERLAY=y
> diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h
> index 4771e74940..4340b5188f 100644
> --- a/include/configs/ti_armv7_common.h
> +++ b/include/configs/ti_armv7_common.h
> @@ -43,6 +43,7 @@
> "loadaddr=0x82000000\0" \
> "kernel_addr_r=0x82000000\0" \
> "fdtaddr=0x88000000\0" \
> + "dtboaddr=0x89000000\0" \
> "fdt_addr_r=0x88000000\0" \
> "rdaddr=0x88080000\0" \
> "ramdisk_addr_r=0x88080000\0" \
> diff --git a/include/environment/ti/boot.h b/include/environment/ti/boot.h
> index f2d91f5298..52c9f129ed 100644
> --- a/include/environment/ti/boot.h
> +++ b/include/environment/ti/boot.h
> @@ -65,15 +65,41 @@
> "run eval_bootargs; " \
> "setenv mmcdev 1; " \
> "setenv machid fe6; " \
> + "setenv dtbaddr $fdtaddr; " \
> + "setenv dtb_size 0x100000; " \
> "mmc dev $mmcdev; " \
> "mmc rescan; " \
> - "part start mmc ${mmcdev} dtb fdt_start; " \
> - "part size mmc ${mmcdev} dtb fdt_size; " \
> - "part start mmc ${mmcdev} boot boot_start; " \
> - "part size mmc ${mmcdev} boot boot_size; " \
> - "mmc read ${fdtaddr} ${fdt_start} ${fdt_size}; " \
> - "mmc read ${loadaddr} ${boot_start} ${boot_size}; " \
> - "bootm $loadaddr $loadaddr $fdtaddr;\0"
> + "part start mmc ${mmcdev} dtb p_dtb_start; " \
> + "part size mmc ${mmcdev} dtb p_dtb_size; " \
> + "part start mmc ${mmcdev} dtbo p_dtbo_start; " \
> + "part size mmc ${mmcdev} dtbo p_dtbo_size; " \
> + "part start mmc ${mmcdev} boot p_boot_start; " \
> + "part size mmc ${mmcdev} boot p_boot_size; " \
> + "mmc read ${dtbaddr} ${p_dtb_start} ${p_dtb_size}; " \
> + "mmc read ${dtboaddr} ${p_dtbo_start} ${p_dtbo_size}; " \
> + "mmc read ${loadaddr} ${p_boot_start} ${p_boot_size}; " \
> + "if test $board_name = am57xx_evm; then " \
> + "dtimg start ${dtbaddr} 0 dtb_addr; " \
> + "fdt addr $dtb_addr $dtb_size; " \
> + "dtimg start ${dtboaddr} 0 dtbo_addr; " \
> + "fdt apply $dtbo_addr; " \
> + "dtimg start ${dtboaddr} 3 dtbo_addr; " \
> + "fdt apply $dtbo_addr; " \
> + "elif test $board_name = am57xx_evm_reva3; then " \
> + "dtimg start ${dtbaddr} 1 dtb_addr; " \
> + "fdt addr $dtb_addr $dtb_size; " \
> + "dtimg start ${dtboaddr} 0 dtbo_addr; " \
> + "fdt apply $dtbo_addr; " \
> + "dtimg start ${dtboaddr} 4 dtbo_addr; " \
> + "fdt apply $dtbo_addr; " \
> + "elif test $board_name = beagle_x15; then " \
> + "dtimg start ${dtbaddr} 0 dtb_addr; " \
> + "elif test $board_name = beagle_x15_revc; then " \
> + "dtimg start ${dtbaddr} 1 dtb_addr; " \
> + "else " \
> + "dtimg start ${dtbaddr} 0 dtb_addr; " \
> + "fi; " \
> + "bootm $loadaddr $loadaddr $dtb_addr;\0"
>
> #ifdef CONFIG_OMAP54XX
>
> --
> 2.17.0
>
Abandon this patch. I'm gonna send v2 soon.
More information about the U-Boot
mailing list