public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH V2] imx: imx93_11x11_evk: using binman to pack images
@ 2022-06-13  6:13 Peng Fan (OSS)
  2022-06-21 20:57 ` Alper Nebi Yasak
  0 siblings, 1 reply; 3+ messages in thread
From: Peng Fan (OSS) @ 2022-06-13  6:13 UTC (permalink / raw)
  To: sbabic, festevam, NXP i.MX U-Boot Team, Peng Fan; +Cc: u-boot

From: Peng Fan <peng.fan@nxp.com>

Use BINMAN to generate flash.bin

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---

Based on
https://patchwork.ozlabs.org/project/uboot/cover/20220611132035.32698-1-peng.fan@oss.nxp.com/

 V2:
  Typo correct

 arch/arm/dts/imx93-11x11-evk-u-boot.dtsi |  2 +
 arch/arm/dts/imx93-u-boot.dtsi           | 84 ++++++++++++++++++++++++
 arch/arm/mach-imx/Makefile               | 24 +++++++
 arch/arm/mach-imx/imx9/Kconfig           |  1 +
 arch/arm/mach-imx/imx9/container.cfg     | 11 ++++
 arch/arm/mach-imx/imx9/imximage.cfg      | 15 +++++
 board/freescale/imx93_evk/Kconfig        |  6 ++
 7 files changed, 143 insertions(+)
 create mode 100644 arch/arm/dts/imx93-u-boot.dtsi
 create mode 100644 arch/arm/mach-imx/imx9/container.cfg
 create mode 100644 arch/arm/mach-imx/imx9/imximage.cfg

diff --git a/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi b/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi
index 6f02b389893..e5912a85ca2 100644
--- a/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi
+++ b/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi
@@ -3,6 +3,8 @@
  * Copyright 2022 NXP
  */
 
+#include "imx93-u-boot.dtsi"
+
 / {
 	wdt-reboot {
 		compatible = "wdt-reboot";
diff --git a/arch/arm/dts/imx93-u-boot.dtsi b/arch/arm/dts/imx93-u-boot.dtsi
new file mode 100644
index 00000000000..2b6bfd0cb44
--- /dev/null
+++ b/arch/arm/dts/imx93-u-boot.dtsi
@@ -0,0 +1,84 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright 2022 NXP
+ * Peng Fan <peng.fan@nxp.com>
+ */
+
+/ {
+	binman: binman {
+		multiple-images;
+	};
+};
+
+&binman {
+	 u-boot-spl-ddr {
+		filename = "u-boot-spl-ddr.bin";
+		pad-byte = <0xff>;
+		align-size = <4>;
+		align = <4>;
+
+		u-boot-spl {
+			align-end = <4>;
+		};
+
+		blob_1: blob-ext@1 {
+			filename = "lpddr4_imem_1d_v202201.bin";
+			size = <0x8000>;
+		};
+
+		blob_2: blob-ext@2 {
+			filename = "lpddr4_dmem_1d_v202201.bin";
+			size = <0x4000>;
+		};
+
+		blob_3: blob-ext@3 {
+			filename = "lpddr4_imem_2d_v202201.bin";
+			size = <0x8000>;
+		};
+
+		blob_4: blob-ext@4 {
+			filename = "lpddr4_dmem_2d_v202201.bin";
+			size = <0x4000>;
+		};
+	};
+
+	spl {
+		filename = "spl.bin";
+
+		mkimage {
+			args = "-n spl/u-boot-spl.cfgout -T imx8image -e 0x2049a000";
+
+			blob {
+				filename = "u-boot-spl-ddr.bin";
+			};
+		};
+	};
+
+	u-boot-container {
+		filename = "u-boot-container.bin";
+
+		mkimage {
+			args = "-n u-boot-container.cfgout -T imx8image -e 0x0";
+
+			blob {
+				filename = "u-boot.bin";
+			};
+		};
+	};
+
+	imx-boot {
+		filename = "flash.bin";
+		pad-byte = <0x00>;
+
+		spl: blob-ext@1 {
+			filename = "spl.bin";
+			offset = <0x0>;
+			align-size = <0x400>;
+			align = <0x400>;
+		};
+
+		uboot: blob-ext@2 {
+			filename = "u-boot-container.bin";
+		};
+	};
+};
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index 71ac8e6ffde..2f51226e0d9 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -120,6 +120,9 @@ DEPFILE_EXISTS := $(shell $(CPP) $(cpp_flags) -x c -o u-boot-dtb.cfgout $(srctre
 else ifeq ($(CONFIG_ARCH_IMX8M), y)
 IMAGE_TYPE := imx8mimage
 DEPFILE_EXISTS := 0
+else ifeq ($(CONFIG_ARCH_IMX9), y)
+IMAGE_TYPE := imx8image
+DEPFILE_EXISTS := 0
 else
 IMAGE_TYPE := imximage
 DEPFILE_EXISTS := 0
@@ -171,6 +174,27 @@ flash.bin: spl/u-boot-spl-ddr.bin u-boot.itb FORCE
 	$(call if_changed,mkimage)
 endif
 
+ifeq ($(CONFIG_ARCH_IMX9), y)
+
+SPL: spl/u-boot-spl.bin spl/u-boot-spl.cfgout u-boot-container.cfgout FORCE
+
+MKIMAGEFLAGS_flash.bin = -n spl/u-boot-spl.cfgout -T $(IMAGE_TYPE) -e $(CONFIG_SPL_TEXT_BASE)
+flash.bin: MKIMAGEOUTPUT = flash.log
+
+spl/u-boot-spl.cfgout: $(IMX_CONFIG) FORCE
+	$(Q)mkdir -p $(dir $@)
+	$(call if_changed_dep,cpp_cfg)
+
+spl/u-boot-spl-ddr.bin: spl/u-boot-spl.bin spl/u-boot-spl.cfgout FORCE
+
+u-boot-container.cfgout: $(IMX_CONTAINER_CFG) FORCE
+	$(Q)mkdir -p $(dir $@)
+	$(call if_changed_dep,cpp_cfg)
+
+flash.bin: spl/u-boot-spl-ddr.bin container.cfgout FORCE
+	$(call if_changed,mkimage)
+endif
+
 ifeq ($(CONFIG_ARCH_IMX8), y)
 SPL:
 
diff --git a/arch/arm/mach-imx/imx9/Kconfig b/arch/arm/mach-imx/imx9/Kconfig
index c06102bae07..0b965376987 100644
--- a/arch/arm/mach-imx/imx9/Kconfig
+++ b/arch/arm/mach-imx/imx9/Kconfig
@@ -25,6 +25,7 @@ choice
 config TARGET_IMX93_11X11_EVK
 	bool "imx93_11x11_evk"
 	select IMX93
+	select BINMAN
 
 endchoice
 
diff --git a/arch/arm/mach-imx/imx9/container.cfg b/arch/arm/mach-imx/imx9/container.cfg
new file mode 100644
index 00000000000..baaa17748ff
--- /dev/null
+++ b/arch/arm/mach-imx/imx9/container.cfg
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2022 NXP
+ */
+
+/* This file is to create a container image could be loaded by SPL */
+BOOT_FROM SD 0x400
+SOC_TYPE IMX9
+CONTAINER
+IMAGE A55 bl31.bin	0x204E0000
+IMAGE A55 u-boot.bin	CONFIG_SYS_TEXT_BASE
diff --git a/arch/arm/mach-imx/imx9/imximage.cfg b/arch/arm/mach-imx/imx9/imximage.cfg
new file mode 100644
index 00000000000..fae0c64245f
--- /dev/null
+++ b/arch/arm/mach-imx/imx9/imximage.cfg
@@ -0,0 +1,15 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2022 NXP
+ */
+
+/* Boot from SD, sector size 0x400 */
+BOOT_FROM SD 0x400
+/* SoC type IMX9 */
+SOC_TYPE IMX9
+/* Append sentinel container image */
+APPEND mx93a0-ahab-container.img
+/* Create the 2nd container */
+CONTAINER
+/* Add spl with exec attribute */
+IMAGE A55 u-boot-spl-ddr.bin 0x2049A000
diff --git a/board/freescale/imx93_evk/Kconfig b/board/freescale/imx93_evk/Kconfig
index 032e523198d..17209d939d2 100644
--- a/board/freescale/imx93_evk/Kconfig
+++ b/board/freescale/imx93_evk/Kconfig
@@ -16,6 +16,12 @@ config IMX93_EVK_LPDDR4X
 	help
 	  Select the LPDDR4X timing and 0.6V VDDQ
 
+config IMX_CONFIG
+	default "arch/arm/mach-imx/imx9/imximage.cfg"
+
+config IMX_CONTAINER_CFG
+	default "arch/arm/mach-imx/imx9/container.cfg"
+
 source "board/freescale/common/Kconfig"
 
 endif
-- 
2.36.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH V2] imx: imx93_11x11_evk: using binman to pack images
  2022-06-13  6:13 [PATCH V2] imx: imx93_11x11_evk: using binman to pack images Peng Fan (OSS)
@ 2022-06-21 20:57 ` Alper Nebi Yasak
  2022-06-29  7:16   ` Peng Fan (OSS)
  0 siblings, 1 reply; 3+ messages in thread
From: Alper Nebi Yasak @ 2022-06-21 20:57 UTC (permalink / raw)
  To: Peng Fan (OSS); +Cc: u-boot, sbabic, festevam, NXP i.MX U-Boot Team, Peng Fan

On 13/06/2022 09:13, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> Use BINMAN to generate flash.bin
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
> 
> Based on
> https://patchwork.ozlabs.org/project/uboot/cover/20220611132035.32698-1-peng.fan@oss.nxp.com/
> 
>  V2:
>   Typo correct
> 
>  arch/arm/dts/imx93-11x11-evk-u-boot.dtsi |  2 +
>  arch/arm/dts/imx93-u-boot.dtsi           | 84 ++++++++++++++++++++++++
>  arch/arm/mach-imx/Makefile               | 24 +++++++
>  arch/arm/mach-imx/imx9/Kconfig           |  1 +
>  arch/arm/mach-imx/imx9/container.cfg     | 11 ++++
>  arch/arm/mach-imx/imx9/imximage.cfg      | 15 +++++
>  board/freescale/imx93_evk/Kconfig        |  6 ++
>  7 files changed, 143 insertions(+)
>  create mode 100644 arch/arm/dts/imx93-u-boot.dtsi
>  create mode 100644 arch/arm/mach-imx/imx9/container.cfg
>  create mode 100644 arch/arm/mach-imx/imx9/imximage.cfg
> 
> diff --git a/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi b/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi
> index 6f02b389893..e5912a85ca2 100644
> --- a/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi
> +++ b/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi
> @@ -3,6 +3,8 @@
>   * Copyright 2022 NXP
>   */
>  
> +#include "imx93-u-boot.dtsi"
> +
>  / {
>  	wdt-reboot {
>  		compatible = "wdt-reboot";
> diff --git a/arch/arm/dts/imx93-u-boot.dtsi b/arch/arm/dts/imx93-u-boot.dtsi
> new file mode 100644
> index 00000000000..2b6bfd0cb44
> --- /dev/null
> +++ b/arch/arm/dts/imx93-u-boot.dtsi
> @@ -0,0 +1,84 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright 2022 NXP
> + * Peng Fan <peng.fan@nxp.com>
> + */
> +
> +/ {
> +	binman: binman {
> +		multiple-images;
> +	};
> +};
> +
> +&binman {
> +	 u-boot-spl-ddr {
> +		filename = "u-boot-spl-ddr.bin";
> +		pad-byte = <0xff>;
> +		align-size = <4>;
> +		align = <4>;
> +
> +		u-boot-spl {
> +			align-end = <4>;
> +		};
> +
> +		blob_1: blob-ext@1 {
> +			filename = "lpddr4_imem_1d_v202201.bin";
> +			size = <0x8000>;
> +		};
> +
> +		blob_2: blob-ext@2 {
> +			filename = "lpddr4_dmem_1d_v202201.bin";
> +			size = <0x4000>;
> +		};
> +
> +		blob_3: blob-ext@3 {
> +			filename = "lpddr4_imem_2d_v202201.bin";
> +			size = <0x8000>;
> +		};
> +
> +		blob_4: blob-ext@4 {
> +			filename = "lpddr4_dmem_2d_v202201.bin";
> +			size = <0x4000>;
> +		};

These look like the same kind of files as those in your i.MX8M binman
symbols series. So I suggest these can be named like 'ddr-1d-imem-fw' as
well.

> +	};
> +
> +	spl {
> +		filename = "spl.bin";
> +
> +		mkimage {
> +			args = "-n spl/u-boot-spl.cfgout -T imx8image -e 0x2049a000";
> +
> +			blob {
> +				filename = "u-boot-spl-ddr.bin";
> +			};
> +		};
> +	};
> +
> +	u-boot-container {
> +		filename = "u-boot-container.bin";
> +
> +		mkimage {
> +			args = "-n u-boot-container.cfgout -T imx8image -e 0x0";
> +
> +			blob {
> +				filename = "u-boot.bin";
> +			};
> +		};
> +	};

The entire thing looks similar to i.MX8M, except for this custom
container. Why not a FIT image here?

> +
> +	imx-boot {
> +		filename = "flash.bin";
> +		pad-byte = <0x00>;
> +
> +		spl: blob-ext@1 {
> +			filename = "spl.bin";
> +			offset = <0x0>;
> +			align-size = <0x400>;
> +			align = <0x400>;
> +		};
> +
> +		uboot: blob-ext@2 {
> +			filename = "u-boot-container.bin";
> +		};
> +	};
> +};
> diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
> index 71ac8e6ffde..2f51226e0d9 100644
> --- a/arch/arm/mach-imx/Makefile
> +++ b/arch/arm/mach-imx/Makefile
> @@ -120,6 +120,9 @@ DEPFILE_EXISTS := $(shell $(CPP) $(cpp_flags) -x c -o u-boot-dtb.cfgout $(srctre
>  else ifeq ($(CONFIG_ARCH_IMX8M), y)
>  IMAGE_TYPE := imx8mimage
>  DEPFILE_EXISTS := 0
> +else ifeq ($(CONFIG_ARCH_IMX9), y)
> +IMAGE_TYPE := imx8image
> +DEPFILE_EXISTS := 0
>  else
>  IMAGE_TYPE := imximage
>  DEPFILE_EXISTS := 0
> @@ -171,6 +174,27 @@ flash.bin: spl/u-boot-spl-ddr.bin u-boot.itb FORCE
>  	$(call if_changed,mkimage)
>  endif
>  
> +ifeq ($(CONFIG_ARCH_IMX9), y)
> +
> +SPL: spl/u-boot-spl.bin spl/u-boot-spl.cfgout u-boot-container.cfgout FORCE
> +
> +MKIMAGEFLAGS_flash.bin = -n spl/u-boot-spl.cfgout -T $(IMAGE_TYPE) -e $(CONFIG_SPL_TEXT_BASE)
> +flash.bin: MKIMAGEOUTPUT = flash.log
> +
> +spl/u-boot-spl.cfgout: $(IMX_CONFIG) FORCE
> +	$(Q)mkdir -p $(dir $@)
> +	$(call if_changed_dep,cpp_cfg)
> +
> +spl/u-boot-spl-ddr.bin: spl/u-boot-spl.bin spl/u-boot-spl.cfgout FORCE
> +
> +u-boot-container.cfgout: $(IMX_CONTAINER_CFG) FORCE
> +	$(Q)mkdir -p $(dir $@)
> +	$(call if_changed_dep,cpp_cfg)
> +
> +flash.bin: spl/u-boot-spl-ddr.bin container.cfgout FORCE
> +	$(call if_changed,mkimage)
> +endif
> +

I have a feeling these rules shouldn't be here when using binman, at
least those for the files binman builds. I see similar rules for IMX8
and IMX8M too. Maybe all should check for CONFIG_BINMAN?

>  ifeq ($(CONFIG_ARCH_IMX8), y)
>  SPL:
>  
> diff --git a/arch/arm/mach-imx/imx9/Kconfig b/arch/arm/mach-imx/imx9/Kconfig
> index c06102bae07..0b965376987 100644
> --- a/arch/arm/mach-imx/imx9/Kconfig
> +++ b/arch/arm/mach-imx/imx9/Kconfig
> @@ -25,6 +25,7 @@ choice
>  config TARGET_IMX93_11X11_EVK
>  	bool "imx93_11x11_evk"
>  	select IMX93
> +	select BINMAN
>  
>  endchoice
>  
> diff --git a/arch/arm/mach-imx/imx9/container.cfg b/arch/arm/mach-imx/imx9/container.cfg
> new file mode 100644
> index 00000000000..baaa17748ff
> --- /dev/null
> +++ b/arch/arm/mach-imx/imx9/container.cfg
> @@ -0,0 +1,11 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + * Copyright 2022 NXP
> + */
> +
> +/* This file is to create a container image could be loaded by SPL */
> +BOOT_FROM SD 0x400
> +SOC_TYPE IMX9
> +CONTAINER
> +IMAGE A55 bl31.bin	0x204E0000
> +IMAGE A55 u-boot.bin	CONFIG_SYS_TEXT_BASE
> diff --git a/arch/arm/mach-imx/imx9/imximage.cfg b/arch/arm/mach-imx/imx9/imximage.cfg
> new file mode 100644
> index 00000000000..fae0c64245f
> --- /dev/null
> +++ b/arch/arm/mach-imx/imx9/imximage.cfg
> @@ -0,0 +1,15 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + * Copyright 2022 NXP
> + */
> +
> +/* Boot from SD, sector size 0x400 */
> +BOOT_FROM SD 0x400
> +/* SoC type IMX9 */
> +SOC_TYPE IMX9
> +/* Append sentinel container image */
> +APPEND mx93a0-ahab-container.img

I tried building for imx93_11x11_evk, but it fails because I don't have
this file:

  ValueError: Error 1 running 'mkimage -d ./mkimage.spl.mkimage \
    -n spl/u-boot-spl.cfgout -T imx8image -e 0x2049a000 \
    ./mkimage-out.spl.mkimage': \
    Fail open first container file mx93a0-ahab-container.img

This is hard to handle because binman doesn't know that you use this
file (it's only mentioned in the cfg), and can't create a 'fake' file
when it's missing. Even if it did, it looks like mkimage parses this
file for a header, so a fake file doesn't work...

I don't know how best to solve this, I have to think more. Is the file
optional? Because I see similar ahab-container.img used for some i.MX8
(only Q?) but not for i.MX8M.

An imx-image binman entry type would make it easier. For example you
could put the file as a blob-ext inside the imx-image entry, then
imx-image could know when the blob is missing and do something else.

> +/* Create the 2nd container */
> +CONTAINER
> +/* Add spl with exec attribute */
> +IMAGE A55 u-boot-spl-ddr.bin 0x2049A000
> diff --git a/board/freescale/imx93_evk/Kconfig b/board/freescale/imx93_evk/Kconfig
> index 032e523198d..17209d939d2 100644
> --- a/board/freescale/imx93_evk/Kconfig
> +++ b/board/freescale/imx93_evk/Kconfig
> @@ -16,6 +16,12 @@ config IMX93_EVK_LPDDR4X
>  	help
>  	  Select the LPDDR4X timing and 0.6V VDDQ
>  
> +config IMX_CONFIG
> +	default "arch/arm/mach-imx/imx9/imximage.cfg"
> +
> +config IMX_CONTAINER_CFG
> +	default "arch/arm/mach-imx/imx9/container.cfg"
> +
>  source "board/freescale/common/Kconfig"
>  
>  endif

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH V2] imx: imx93_11x11_evk: using binman to pack images
  2022-06-21 20:57 ` Alper Nebi Yasak
@ 2022-06-29  7:16   ` Peng Fan (OSS)
  0 siblings, 0 replies; 3+ messages in thread
From: Peng Fan (OSS) @ 2022-06-29  7:16 UTC (permalink / raw)
  To: Alper Nebi Yasak; +Cc: u-boot, sbabic, festevam, NXP i.MX U-Boot Team, Peng Fan



在 2022/6/22 4:57, Alper Nebi Yasak 写道:
> On 13/06/2022 09:13, Peng Fan (OSS) wrote:
>> From: Peng Fan <peng.fan@nxp.com>
>>
>> Use BINMAN to generate flash.bin
>>
>> Signed-off-by: Peng Fan <peng.fan@nxp.com>
>> ---
>>
>> Based on
>> https://patchwork.ozlabs.org/project/uboot/cover/20220611132035.32698-1-peng.fan@oss.nxp.com/
>>
>>   V2:
>>    Typo correct
>>
>>   arch/arm/dts/imx93-11x11-evk-u-boot.dtsi |  2 +
>>   arch/arm/dts/imx93-u-boot.dtsi           | 84 ++++++++++++++++++++++++
>>   arch/arm/mach-imx/Makefile               | 24 +++++++
>>   arch/arm/mach-imx/imx9/Kconfig           |  1 +
>>   arch/arm/mach-imx/imx9/container.cfg     | 11 ++++
>>   arch/arm/mach-imx/imx9/imximage.cfg      | 15 +++++
>>   board/freescale/imx93_evk/Kconfig        |  6 ++
>>   7 files changed, 143 insertions(+)
>>   create mode 100644 arch/arm/dts/imx93-u-boot.dtsi
>>   create mode 100644 arch/arm/mach-imx/imx9/container.cfg
>>   create mode 100644 arch/arm/mach-imx/imx9/imximage.cfg
>>
>> diff --git a/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi b/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi
>> index 6f02b389893..e5912a85ca2 100644
>> --- a/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi
>> +++ b/arch/arm/dts/imx93-11x11-evk-u-boot.dtsi
>> @@ -3,6 +3,8 @@
>>    * Copyright 2022 NXP
>>    */
>>   
>> +#include "imx93-u-boot.dtsi"
>> +
>>   / {
>>   	wdt-reboot {
>>   		compatible = "wdt-reboot";
>> diff --git a/arch/arm/dts/imx93-u-boot.dtsi b/arch/arm/dts/imx93-u-boot.dtsi
>> new file mode 100644
>> index 00000000000..2b6bfd0cb44
>> --- /dev/null
>> +++ b/arch/arm/dts/imx93-u-boot.dtsi
>> @@ -0,0 +1,84 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> +/*
>> + * Copyright 2022 NXP
>> + * Peng Fan <peng.fan@nxp.com>
>> + */
>> +
>> +/ {
>> +	binman: binman {
>> +		multiple-images;
>> +	};
>> +};
>> +
>> +&binman {
>> +	 u-boot-spl-ddr {
>> +		filename = "u-boot-spl-ddr.bin";
>> +		pad-byte = <0xff>;
>> +		align-size = <4>;
>> +		align = <4>;
>> +
>> +		u-boot-spl {
>> +			align-end = <4>;
>> +		};
>> +
>> +		blob_1: blob-ext@1 {
>> +			filename = "lpddr4_imem_1d_v202201.bin";
>> +			size = <0x8000>;
>> +		};
>> +
>> +		blob_2: blob-ext@2 {
>> +			filename = "lpddr4_dmem_1d_v202201.bin";
>> +			size = <0x4000>;
>> +		};
>> +
>> +		blob_3: blob-ext@3 {
>> +			filename = "lpddr4_imem_2d_v202201.bin";
>> +			size = <0x8000>;
>> +		};
>> +
>> +		blob_4: blob-ext@4 {
>> +			filename = "lpddr4_dmem_2d_v202201.bin";
>> +			size = <0x4000>;
>> +		};
> These look like the same kind of files as those in your i.MX8M binman
> symbols series. So I suggest these can be named like 'ddr-1d-imem-fw' as
> well.

Yes, waiting for the i.MX8M binman series land in upstream, i.MX93 
changes will follow up.
  There is a large patchset pending for i.MX93 support:)

>
>> +	};
>> +
>> +	spl {
>> +		filename = "spl.bin";
>> +
>> +		mkimage {
>> +			args = "-n spl/u-boot-spl.cfgout -T imx8image -e 0x2049a000";
>> +
>> +			blob {
>> +				filename = "u-boot-spl-ddr.bin";
>> +			};
>> +		};
>> +	};
>> +
>> +	u-boot-container {
>> +		filename = "u-boot-container.bin";
>> +
>> +		mkimage {
>> +			args = "-n u-boot-container.cfgout -T imx8image -e 0x0";
>> +
>> +			blob {
>> +				filename = "u-boot.bin";
>> +			};
>> +		};
>> +	};
> The entire thing looks similar to i.MX8M, except for this custom
> container. Why not a FIT image here?

If wanna i.MX9 hardware secure boot feature, container format is 
required. Otherwise FIT could be used.
To i.MX9, SPL will invoke secure enclave API to authenticate U-Boot. The 
U-Boot must be packed with an i.MX container
format to let secure enlcave process the authentication.

>
>> +
>> +	imx-boot {
>> +		filename = "flash.bin";
>> +		pad-byte = <0x00>;
>> +
>> +		spl: blob-ext@1 {
>> +			filename = "spl.bin";
>> +			offset = <0x0>;
>> +			align-size = <0x400>;
>> +			align = <0x400>;
>> +		};
>> +
>> +		uboot: blob-ext@2 {
>> +			filename = "u-boot-container.bin";
>> +		};
>> +	};
>> +};
>> diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
>> index 71ac8e6ffde..2f51226e0d9 100644
>> --- a/arch/arm/mach-imx/Makefile
>> +++ b/arch/arm/mach-imx/Makefile
>> @@ -120,6 +120,9 @@ DEPFILE_EXISTS := $(shell $(CPP) $(cpp_flags) -x c -o u-boot-dtb.cfgout $(srctre
>>   else ifeq ($(CONFIG_ARCH_IMX8M), y)
>>   IMAGE_TYPE := imx8mimage
>>   DEPFILE_EXISTS := 0
>> +else ifeq ($(CONFIG_ARCH_IMX9), y)
>> +IMAGE_TYPE := imx8image
>> +DEPFILE_EXISTS := 0
>>   else
>>   IMAGE_TYPE := imximage
>>   DEPFILE_EXISTS := 0
>> @@ -171,6 +174,27 @@ flash.bin: spl/u-boot-spl-ddr.bin u-boot.itb FORCE
>>   	$(call if_changed,mkimage)
>>   endif
>>   
>> +ifeq ($(CONFIG_ARCH_IMX9), y)
>> +
>> +SPL: spl/u-boot-spl.bin spl/u-boot-spl.cfgout u-boot-container.cfgout FORCE
>> +
>> +MKIMAGEFLAGS_flash.bin = -n spl/u-boot-spl.cfgout -T $(IMAGE_TYPE) -e $(CONFIG_SPL_TEXT_BASE)
>> +flash.bin: MKIMAGEOUTPUT = flash.log
>> +
>> +spl/u-boot-spl.cfgout: $(IMX_CONFIG) FORCE
>> +	$(Q)mkdir -p $(dir $@)
>> +	$(call if_changed_dep,cpp_cfg)
>> +
>> +spl/u-boot-spl-ddr.bin: spl/u-boot-spl.bin spl/u-boot-spl.cfgout FORCE
>> +
>> +u-boot-container.cfgout: $(IMX_CONTAINER_CFG) FORCE
>> +	$(Q)mkdir -p $(dir $@)
>> +	$(call if_changed_dep,cpp_cfg)
>> +
>> +flash.bin: spl/u-boot-spl-ddr.bin container.cfgout FORCE
>> +	$(call if_changed,mkimage)
>> +endif
>> +
> I have a feeling these rules shouldn't be here when using binman, at
> least those for the files binman builds. I see similar rules for IMX8
> and IMX8M too. Maybe all should check for CONFIG_BINMAN?

Only part could be dropped, such as flash.bin, I think. Anyway will try 
to clean up these.

>
>>   ifeq ($(CONFIG_ARCH_IMX8), y)
>>   SPL:
>>   
>> diff --git a/arch/arm/mach-imx/imx9/Kconfig b/arch/arm/mach-imx/imx9/Kconfig
>> index c06102bae07..0b965376987 100644
>> --- a/arch/arm/mach-imx/imx9/Kconfig
>> +++ b/arch/arm/mach-imx/imx9/Kconfig
>> @@ -25,6 +25,7 @@ choice
>>   config TARGET_IMX93_11X11_EVK
>>   	bool "imx93_11x11_evk"
>>   	select IMX93
>> +	select BINMAN
>>   
>>   endchoice
>>   
>> diff --git a/arch/arm/mach-imx/imx9/container.cfg b/arch/arm/mach-imx/imx9/container.cfg
>> new file mode 100644
>> index 00000000000..baaa17748ff
>> --- /dev/null
>> +++ b/arch/arm/mach-imx/imx9/container.cfg
>> @@ -0,0 +1,11 @@
>> +/* SPDX-License-Identifier: GPL-2.0+ */
>> +/*
>> + * Copyright 2022 NXP
>> + */
>> +
>> +/* This file is to create a container image could be loaded by SPL */
>> +BOOT_FROM SD 0x400
>> +SOC_TYPE IMX9
>> +CONTAINER
>> +IMAGE A55 bl31.bin	0x204E0000
>> +IMAGE A55 u-boot.bin	CONFIG_SYS_TEXT_BASE
>> diff --git a/arch/arm/mach-imx/imx9/imximage.cfg b/arch/arm/mach-imx/imx9/imximage.cfg
>> new file mode 100644
>> index 00000000000..fae0c64245f
>> --- /dev/null
>> +++ b/arch/arm/mach-imx/imx9/imximage.cfg
>> @@ -0,0 +1,15 @@
>> +/* SPDX-License-Identifier: GPL-2.0+ */
>> +/*
>> + * Copyright 2022 NXP
>> + */
>> +
>> +/* Boot from SD, sector size 0x400 */
>> +BOOT_FROM SD 0x400
>> +/* SoC type IMX9 */
>> +SOC_TYPE IMX9
>> +/* Append sentinel container image */
>> +APPEND mx93a0-ahab-container.img
> I tried building for imx93_11x11_evk, but it fails because I don't have
> this file:
>
>    ValueError: Error 1 running 'mkimage -d ./mkimage.spl.mkimage \
>      -n spl/u-boot-spl.cfgout -T imx8image -e 0x2049a000 \
>      ./mkimage-out.spl.mkimage': \
>      Fail open first container file mx93a0-ahab-container.img
>
> This is hard to handle because binman doesn't know that you use this
> file (it's only mentioned in the cfg), and can't create a 'fake' file
> when it's missing. Even if it did, it looks like mkimage parses this
> file for a header, so a fake file doesn't work...
>
> I don't know how best to solve this, I have to think more. Is the file
> optional? Because I see similar ahab-container.img used for some i.MX8
> (only Q?) but not for i.MX8M.
>
> An imx-image binman entry type would make it easier. For example you
> could put the file as a blob-ext inside the imx-image entry, then
> imx-image could know when the blob is missing and do something else.


New patchset: 
https://source.denx.de/u-boot/custodians/u-boot-fsl-qoriq/-/commits/peng-ci 
has passed CI

i.MX8M not need the container image.

To i.MX8, we check the file existed or not, then continue packing images 
or not.

BInman is good, that's why I ask to use binman to replace mkimage for 
i.MX container generation.

Thanks,
Peng.

>
>> +/* Create the 2nd container */
>> +CONTAINER
>> +/* Add spl with exec attribute */
>> +IMAGE A55 u-boot-spl-ddr.bin 0x2049A000
>> diff --git a/board/freescale/imx93_evk/Kconfig b/board/freescale/imx93_evk/Kconfig
>> index 032e523198d..17209d939d2 100644
>> --- a/board/freescale/imx93_evk/Kconfig
>> +++ b/board/freescale/imx93_evk/Kconfig
>> @@ -16,6 +16,12 @@ config IMX93_EVK_LPDDR4X
>>   	help
>>   	  Select the LPDDR4X timing and 0.6V VDDQ
>>   
>> +config IMX_CONFIG
>> +	default "arch/arm/mach-imx/imx9/imximage.cfg"
>> +
>> +config IMX_CONTAINER_CFG
>> +	default "arch/arm/mach-imx/imx9/container.cfg"
>> +
>>   source "board/freescale/common/Kconfig"
>>   
>>   endif


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-06-29  7:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-13  6:13 [PATCH V2] imx: imx93_11x11_evk: using binman to pack images Peng Fan (OSS)
2022-06-21 20:57 ` Alper Nebi Yasak
2022-06-29  7:16   ` Peng Fan (OSS)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox