[PATCH v3 15/17] tools: imx8image: add i.MX95 support

Marek Vasut marex at denx.de
Sun Jan 5 22:59:15 CET 2025


On 1/3/25 7:45 AM, Alice Guo wrote:
> From: Alice Guo <alice.guo at nxp.com>
> 
> i.MX95 uses binman to invoke mkimage to create image container. 2 image
> containers are needed currently. The first one is composed of
> ahab-container.img, LPDDR firmware images, OEI images, System Manager
> image and u-boot-spl.bin. The second one is comsisted of ARM Trusted
> firmware and u-boot.bin.
> 
> Because DDR OEI image and LPDDR firmware images have to be packaged
> together and named as m33-oei-ddrfw.bin by binman, so imx9_image.sh does
> not check if m33-oei-ddrfw.bin exists.
> 
> When using "make imx95_19x19_evk_defconfig; make", imx9_image.sh will
> delete the line for u-boot.bin in container.cfg. In fact, binman is
> always called after the u-boot.bin is built, so imx9_image.sh does not
> check if u-boot.bin exists.
> 
> Signed-off-by: Alice Guo <alice.guo at nxp.com>

[...]

> @@ -227,12 +234,16 @@ typedef struct {
>   #define CORE_CA35       4
>   #define CORE_CA72       5
>   #define CORE_SECO       6
> +#define CORE_M33        7
>   
>   #define CORE_ULP_CM33		0x1
>   #define CORE_ULP_CA35		0x2
>   #define CORE_ULP_UPOWER 	0x4
>   #define CORE_ULP_SENTINEL 	0x6
>   
> +#define CORE_IMX95_M33P        0U
> +#define CORE_IMX95_A55C0       2U

Drop the trailing U from the constant.

>   #define SC_R_OTP	357U
>   #define SC_R_DEBUG	354U
>   #define SC_R_ROM_0	236U

[...]

> @@ -586,8 +639,10 @@ static void set_image_array_entry(flash_header_v3_t *container,
>   			meta = IMAGE_A53_DEFAULT_META(custom_partition);
>   		} else if (soc == QM && core == CORE_CA72) {
>   			meta = IMAGE_A72_DEFAULT_META(custom_partition);
> -		} else if (((soc == ULP) || (soc == IMX9)) && core == CORE_CA35) {
> +		} else if ((soc == ULP) && core == CORE_CA35) {
>   			meta = 0;
> +		} else if ((soc == IMX9) && core == CORE_CA35) {

Should this be CORE_CA55 ?

> +			meta = CORE_IMX95_A55C0;
>   		} else {
>   			fprintf(stderr,
>   				"Error: invalid AP core id: %" PRIu64 "\n",

[...]

> -static int get_container_image_start_pos(image_t *image_stack, uint32_t align)
> +static int get_container_image_start_pos(image_t *image_stack, uint32_t align, uint32_t *v2x)
>   {
>   	image_t *img_sp = image_stack;
>   	/*8K total container header*/
>   	int file_off = CONTAINER_IMAGE_ARRAY_START_OFFSET;
>   	FILE *fd = NULL;
> -	flash_header_v3_t header;
> +	flash_header_v3_t *header;
> +	flash_header_v3_t *header2;
> +	void *p;
>   	int ret;
>   
> +	p = calloc(1, SZ_4K);

Can this be simply reserved on stack ?

[...]

> diff --git a/tools/imx9_image.sh b/tools/imx9_image.sh
> index ca78a57a19a06ade4792da6d2435cbc4fa07de62..6523d1a0ad109db2da29bae122a20b084c2522ed 100755
> --- a/tools/imx9_image.sh
> +++ b/tools/imx9_image.sh
> @@ -18,6 +18,14 @@ for f in $blobs; do
>   		continue
>   	fi
>   
> +	if [ $f = "m33-oei-ddrfw.bin" ]; then
> +		continue
> +	fi
Can this be wired into binman somehow instead ?


More information about the U-Boot mailing list