[PATCH u-boot-mvebu 17/31] tools: kwbimage: Use -a parameter (load address) for v1 images

Stefan Roese sr at denx.de
Thu Jul 15 10:41:55 CEST 2021


On 08.07.21 19:30, Marek Behún wrote:
> From: Pali Rohár <pali at kernel.org>
> 
> The data part of v1 kwbimage currently contains U-Boot binary prepended
> by 64 bytes long Legacy U-Boot image header. This means that the load
> address is currently substracted by 64 bytes to ensure that U-Boot's
> entry point is at specified execution address.
> 
> As mkimage has already separate arguments for load (-a) and execution
> (-e) address, there is no need to derive fixed load address from
> execution address.
> 
> Therefore remove this load address hack from the kwbimage tool and
> support generating v1 kwbimage with arbitrary addresses for load and
> execution.
> 
> Finally, calculate correct load address by caller for mkimage tool in
> Makefile. File u-boot-spl.kwb is always a v1 kwbimage and it is the only
> v1 kwbimage which U-Boot's build system generates.
> 
> Remove also useless overwriting of destaddr for /binary.0 to the value
> which is already set on previous lines.
> 
> Signed-off-by: Pali Rohár <pali at kernel.org>
> Reviewed-by: Marek Behún <marek.behun at nic.cz>

Reviewed-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan

> ---
>   Makefile         |  2 +-
>   tools/kwbimage.c | 10 +---------
>   2 files changed, 2 insertions(+), 10 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 0d3192ceba..85bd8fc12d 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1398,7 +1398,7 @@ MKIMAGEFLAGS_u-boot.kwb = -n $(KWD_CONFIG_FILE) \
>   	-T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE)
>   
>   MKIMAGEFLAGS_u-boot-spl.kwb = -n $(KWD_CONFIG_FILE) \
> -	-T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) \
> +	-T kwbimage -a $(shell printf "0x%x" $$(($(CONFIG_SYS_TEXT_BASE)-64))) -e $(CONFIG_SYS_TEXT_BASE) \
>   	$(if $(KEYDIR),-k $(KEYDIR))
>   
>   MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
> diff --git a/tools/kwbimage.c b/tools/kwbimage.c
> index d8a14cb093..acd57267f4 100644
> --- a/tools/kwbimage.c
> +++ b/tools/kwbimage.c
> @@ -1252,8 +1252,7 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
>   		cpu_to_le32(payloadsz - headersz);
>   	main_hdr->headersz_lsb = cpu_to_le16(headersz & 0xFFFF);
>   	main_hdr->headersz_msb = (headersz & 0xFFFF0000) >> 16;
> -	main_hdr->destaddr     = cpu_to_le32(params->addr)
> -				 - sizeof(image_header_t);
> +	main_hdr->destaddr     = cpu_to_le32(params->addr);
>   	main_hdr->execaddr     = cpu_to_le32(params->ep);
>   	main_hdr->srcaddr      = cpu_to_le32(headersz);
>   	main_hdr->ext          = hasext;
> @@ -1273,13 +1272,6 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
>   	e = image_find_option(IMAGE_CFG_DEBUG);
>   	if (e)
>   		main_hdr->flags = e->debug ? 0x1 : 0;
> -	e = image_find_option(IMAGE_CFG_BINARY);
> -	if (e) {
> -		char *s = strrchr(e->binary.file, '/');
> -
> -		if (s && strcmp(s, "/binary.0") == 0)
> -			main_hdr->destaddr = cpu_to_le32(params->addr);
> -	}
>   
>   	/*
>   	 * For SATA srcaddr is specified in number of sectors starting from
> 


Viele Grüße,
Stefan

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list