[PATCH] board: st: stm32mp1: update load address for FIT examples

Patrice CHOTARD patrice.chotard at st.com
Wed Nov 25 14:24:13 CET 2020


Hi Patrick

On 11/25/20 12:28 PM, Patrick Delaunay wrote:
> Update kernel load address for FIT examples to avoid relocation:
> - Kernel example uses Image.gz with U-Boot gzip decompression
>   at final kernel location 0x0xC0008000.
> - Copro example loads zImage at a correct location (0xC4000000),
>   to avoid zImage relocation before decompression by kernel code.
>
> An other solution to avoid zImage relocation is to align
> the kernel load and entry address with the real location in FIT
> (the relocation of zImage is skipped in U-Boot bootm command for
> identical address) but it is less flexible because this offset
> depends on FIT content:
>
> For example:
>
> ## Loading kernel from FIT Image at c2000000 ...
>    Using 'ev1' configuration
>    Trying 'kernel' kernel subimage
>      Description:  Linux kernel
>      Created:      2020-10-22   9:08:32 UTC
>      Type:         Kernel Image
>      Compression:  uncompressed
>      Data Start:   0xc20000cc
>
> The kernel offset in FIT is 0xCC in FIT and zImage is decompressed at
> 0xC0008000 by kernel code:
>
> kernel {
> 	description = "Linux kernel";
> 	data = /incbin/("zImage");
> 	type = "kernel";
> 	arch = "arm";
> 	os = "linux";
> 	compression = "none";
> 	load = <0xC20000cc>;
> 	entry = <0xC20000cc>;
> 	hash-1 {
> 		algo = "sha1";
> 	};
> };
>
> Signed-off-by: Patrick Delaunay <patrick.delaunay at st.com>
> ---
>
>  board/st/stm32mp1/fit_copro_kernel_dtb.its | 18 ++++++++++++++++--
>  board/st/stm32mp1/fit_kernel_dtb.its       |  6 +++---
>  2 files changed, 19 insertions(+), 5 deletions(-)
>
> diff --git a/board/st/stm32mp1/fit_copro_kernel_dtb.its b/board/st/stm32mp1/fit_copro_kernel_dtb.its
> index 3e08fd943e..dc43639af4 100644
> --- a/board/st/stm32mp1/fit_copro_kernel_dtb.its
> +++ b/board/st/stm32mp1/fit_copro_kernel_dtb.its
> @@ -1,6 +1,20 @@
>  /*
>   * Compilation:
>   * mkimage -f fit_copro_kernel_dtb.its fit_copro_kernel_dtb.itb
> + *
> + * M4 firmware to load with remoteproc: rproc-m4-fw.elf
> + *
> + * Files in linux build dir:
> + * - arch/arm/boot/zImage
> + * - arch/arm/boot/dts/stm32mp157c-dk2.dtb
> + * - arch/arm/boot/dts/stm32mp157c-ev1.dtb
> + *
> + * load mmc 0:4 $kernel_addr_r fit_copro_kernel_dtb.itb
> + * bootm $kernel_addr_r
> + * bootm $kernel_addr_r#dk2
> + * bootm $kernel_addr_r#ev1
> + * bootm $kernel_addr_r#dk2-m4
> + * bootm $kernel_addr_r#ev1-m4
>   */
>  
>  /dts-v1/;
> @@ -29,8 +43,8 @@
>  			arch = "arm";
>  			os = "linux";
>  			compression = "none";
> -			load = <0xC0008000>;
> -			entry = <0xC0008000>;
> +			load = <0xC4000000>;
> +			entry = <0xC4000000>;
>  			hash-1 {
>  				algo = "sha1";
>  			};
> diff --git a/board/st/stm32mp1/fit_kernel_dtb.its b/board/st/stm32mp1/fit_kernel_dtb.its
> index 18d03ebf3c..8456a3c460 100644
> --- a/board/st/stm32mp1/fit_kernel_dtb.its
> +++ b/board/st/stm32mp1/fit_kernel_dtb.its
> @@ -3,7 +3,7 @@
>   * mkimage -f fit_kernel_dtb.its fit_kernel_dtb.itb
>   *
>   * Files in linux build dir:
> - * - arch/arm/boot/zImage
> + * - arch/arm/boot/Image (gzipped in Image.gz)
>   * - arch/arm/boot/dts/stm32mp157c-dk2.dtb
>   * - arch/arm/boot/dts/stm32mp157c-ev1.dtb
>   *
> @@ -23,11 +23,11 @@
>  	images {
>  		kernel {
>  			description = "Linux kernel";
> -			data = /incbin/("zImage");
> +			data = /incbin/("Image.gz");
>  			type = "kernel";
>  			arch = "arm";
>  			os = "linux";
> -			compression = "none";
> +			compression = "gzip";
>  			load = <0xC0008000>;
>  			entry = <0xC0008000>;
>  			hash-1 {


Reviewed-by: Patrice Chotard <patrice.chotard at st.com>

Thanks

Patrice


More information about the U-Boot mailing list