[U-Boot] [PATCH 4/5] arm: ti: boot: Add dtbo partition for Android boot

Sam Protsenko semen.protsenko at linaro.org
Thu Apr 19 20:34:37 UTC 2018


On 16 April 2018 at 23:32, Sam Protsenko <semen.protsenko at linaro.org> wrote:
> New Android boot scheme looks like this [1], and it involves adding new
> partition for storing Device Tree Overlays. This patch adds dtbo
> partition. While at it, let's revise Android partition table a bit.
>
> List of changes:
>  - rename "misc" to "hole" (not used for anything, just a guard hole)
>  - rename "reserved" to "uenv" (because it hold U-Boot environment)
>  - rename "environment" to "dtb" (because it actually holds .dtb file)
>  - move "dtb" after "uenv" (so that changes of dtb size won't affect
>    "uenv" offset)
>  - make "hole" size twice as bigger (to keep "uenv" offset the same,
>    because "dtb" was moved after "uenv")
>  - add "dtbo" partition (after "dtb", to not affect "uenv" offset)
>  - while at it, increase "boot" partition size up to 20 MiB; that's
>    needed because while playing with some additional drivers built-in
>    and different compression techniques, and also for HS signing, we
>    have seen the boot partition size reach close to border and
>    sometimes reach over the limit of 10 MiB
>
> Now eMMC layout looks like this:
>
>     offset           content             size          partition
>     (KiB)                                (KiB)
>
>     ===============================================================
>
>     0       +------------------------+
>             | MBR/GPT header         |   128           -
>     128     +------------------------+
>             | MLO                    |   256           xloader
>     384     +------------------------+
>             | u-boot.img             |   1792          bootloader
>     2176    +------------------------+
>             | //////// hole //////// |   256           hole
>     2432    +------------------------+
>             | U-Boot environment     |   256           uenv
>             | (+ redundant)          |
>     2688    +------------------------+
>             | dtb files              |   1024          dtb
>     3712    +------------------------+
>             | dtbo files             |   1024          dtbo
>     4736    +------------------------+
>               Android partitions         remaining     *
>
>     ===============================================================
>
> "hole" partition is needed just to keep U-Boot environment at 2432 KiB
> offset, because:
>  - this offset is used in DFU_ALT_INFO_EMMC:
>
>        "u-env.raw raw 0x1300 0x200;"
>        0x1300 = 4864 sectors = 2432 KiB
>
>  - which in turn relies on CONFIG_ENV_OFFSET:
>
>        CONFIG_ENV_OFFSET = 0x260000 = 2432 KiB
>
> We are using "hole" partition instead of specifying "start" property to
> "uenv" partition, because this way it's easier to maintain change of
> preceding partitions.
>
> Also fix Android boot commands appropriately.
>
> [1] https://source.android.com/devices/architecture/dto/partitions
>
> Signed-off-by: Sam Protsenko <semen.protsenko at linaro.org>
> ---
>  include/environment/ti/boot.h | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/include/environment/ti/boot.h b/include/environment/ti/boot.h
> index 4f3d748b5c..f2d91f5298 100644
> --- a/include/environment/ti/boot.h
> +++ b/include/environment/ti/boot.h
> @@ -26,13 +26,14 @@
>         "uuid_disk=${uuid_gpt_disk};" \
>         "name=xloader,start=128K,size=256K,uuid=${uuid_gpt_xloader};" \
>         "name=bootloader,size=1792K,uuid=${uuid_gpt_bootloader};" \
> -       "name=environment,size=128K,uuid=${uuid_gpt_environment};" \
> -       "name=misc,size=128K,uuid=${uuid_gpt_misc};" \
> -       "name=reserved,size=256K,uuid=${uuid_gpt_reserved};" \
> +       "name=hole,size=256K,uuid=${uuid_gpt_hole};" \
> +       "name=uenv,size=256K,uuid=${uuid_gpt_uenv};" \
> +       "name=dtb,size=1M,uuid=${uuid_gpt_dtb};" \
> +       "name=dtbo,size=1M,uuid=${uuid_gpt_dtbo};" \
>         "name=efs,size=16M,uuid=${uuid_gpt_efs};" \
>         "name=crypto,size=16K,uuid=${uuid_gpt_crypto};" \
>         "name=recovery,size=40M,uuid=${uuid_gpt_recovery};" \
> -       "name=boot,size=10M,uuid=${uuid_gpt_boot};" \
> +       "name=boot,size=20M,uuid=${uuid_gpt_boot};" \
>         "name=system,size=768M,uuid=${uuid_gpt_system};" \
>         "name=vendor,size=256M,uuid=${uuid_gpt_vendor};" \
>         "name=cache,size=256M,uuid=${uuid_gpt_cache};" \
> @@ -66,8 +67,8 @@
>                 "setenv machid fe6; " \
>                 "mmc dev $mmcdev; " \
>                 "mmc rescan; " \
> -               "part start mmc ${mmcdev} environment fdt_start; " \
> -               "part size mmc ${mmcdev} environment fdt_size; " \
> +               "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}; " \
> --
> 2.17.0
>

Abandon this patch. I'm gonna send v2 soon.


More information about the U-Boot mailing list