On 04/16/2018 03:32 PM, Sam Protsenko 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)

Could we instead expand the bootloader partition and just remove this
hole partition?

>  - rename "reserved" to "uenv" (because it hold U-Boot environment)

This is fine.

>  - rename "environment" to "dtb" (because it actually holds .dtb file)


We are working to move to FIT with our Android releases, so the
"boot.img" image will now be a FIT image that contains kernel, dtb,
dtbo, op-tee, ipu, ipu2, etc...

The end result is all these custom partitions we had before all just get
folded into the one boot partition.

Andrew


>  - 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.protse...@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}; " \
> 
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to