[U-Boot] [PATCH 1/2] parse the second area of android image

Kever Yang kever.yang at rock-chips.com
Tue Feb 6 04:34:01 UTC 2018



On 01/27/2018 01:59 PM, Bin Chen wrote:
> The second area of android image was intended to put a 2nd stage
> bootloader but in practice were rarely used (in my knowledge).
>
> An proposal was made to the AOSP to (re)use the second area as the dtb[1],
> This patch itself doesn't depend on that proposal being accepted but it won't
> be that helpful as well if that proposal won't be accepted. But don't do
> any harm as well.
>
> [1] https://android-review.googlesource.com/#/c/417447/
> Signed-off-by: Bin Chen <bin.chen at linaro.org>
> Reviewed-by: Tom Rini <trini at konsulko.com>

Looks good to me,

Reviewed-by: Kever Yang <kever.yang at rock-chips.com>

Thanks,
- Kever
> ---
>  common/image-android.c | 19 +++++++++++++++++++
>  include/image.h        |  2 ++
>  2 files changed, 21 insertions(+)
>
> diff --git a/common/image-android.c b/common/image-android.c
> index e74d0aafca..5ad3a1fa38 100644
> --- a/common/image-android.c
> +++ b/common/image-android.c
> @@ -146,6 +146,25 @@ int android_image_get_ramdisk(const struct andr_img_hdr *hdr,
>  	return 0;
>  }
>  
> +int android_image_get_second(const struct andr_img_hdr *hdr,
> +			      ulong *second_data, ulong *second_len)
> +{
> +	if (!hdr->second_size) {
> +		*second_data = *second_len = 0;
> +		return -1;
> +	}
> +
> +	*second_data = (unsigned long)hdr;
> +	*second_data += hdr->page_size;
> +	*second_data += ALIGN(hdr->kernel_size, hdr->page_size);
> +	*second_data += ALIGN(hdr->ramdisk_size, hdr->page_size);
> +
> +	printf("second address is 0x%lx\n",*second_data);
> +
> +	*second_len = hdr->second_size;
> +	return 0;
> +}
> +
>  #if !defined(CONFIG_SPL_BUILD)
>  /**
>   * android_print_contents - prints out the contents of the Android format image
> diff --git a/include/image.h b/include/image.h
> index b2b23a96f1..c8ce4da901 100644
> --- a/include/image.h
> +++ b/include/image.h
> @@ -1263,6 +1263,8 @@ int android_image_get_kernel(const struct andr_img_hdr *hdr, int verify,
>  			     ulong *os_data, ulong *os_len);
>  int android_image_get_ramdisk(const struct andr_img_hdr *hdr,
>  			      ulong *rd_data, ulong *rd_len);
> +int android_image_get_second(const struct andr_img_hdr *hdr,
> +			      ulong *second_data, ulong *second_len);
>  ulong android_image_get_end(const struct andr_img_hdr *hdr);
>  ulong android_image_get_kload(const struct andr_img_hdr *hdr);
>  void android_print_contents(const struct andr_img_hdr *hdr);




More information about the U-Boot mailing list