iMX8MP + DDR4 bringup : SPL: failed to boot from all boot devices

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

iMX8MP + DDR4 bringup : SPL: failed to boot from all boot devices

Jump to solution
3,101 Views
khang_letruong
Senior Contributor III

Hi Community,

After successful DDR  training for our custom board, I am now facing with new problem :

 

U-Boot SPL 2021.04-lf_v2021.04+gd1528947bd (Sep 06 2021 - 08:48:23 +0000)
pca9450_bind: 'pca9450@25' - found regulators subnode
pmic_bind_children for 'pca9450@25' at node offset: 5064
Bound: 0 children for PMIC: 'pca9450@25'
pca9450_bind: pca9450@25 - no child found
pmic_reg_write: reg=c, value=29 priv->trans_len:1, ret=0
pmic_reg_write: reg=10, value=59 priv->trans_len:1, ret=0
pmic_reg_write: reg=1e, value=18 priv->trans_len:1, ret=0
pmic_reg_write: reg=8, value=a1 priv->trans_len:1, ret=0
DDRINFO: start DRAM init
DDRINFO: cfg clk
DDRINFO: DRAM rate 3200MTS
DDRINFO: ddrc config start
DDRINFO: ddrc config done
DDRINFO:ddrphy config start
DRAM PHY training for 3200MTS
check ddr_pmu_train_imem code
check ddr_pmu_train_imem code pass
check ddr4_pmu_train_dmem code
check ddr_pmu_train_dmem code pass
[PMU Major message = 0x00000000]
[PMU Major message = 0x00000002]
[PMU Major message = 0x00000001]
[PMU Major message = 0x0000000a]
[PMU Major message = 0x000000fd]
[PMU Major message = 0x000000fe]
[PMU Major message = 0x00000004]
[PMU Major message = 0x00000003]
[PMU Major message = 0x00000009]
[PMU Major message = 0x00000007]
Training PASS
DRAM PHY training for 3200MTS
check ddr_pmu_train_imem code
check ddr_pmu_train_imem code pass
check ddr4_pmu_train_dmem code
check ddr_pmu_train_dmem code pass
[PMU Major message = 0x00000000]
[PMU Major message = 0x00000006]
[PMU Major message = 0x00000005]
[PMU Major message = 0x00000007]
Training PASS
DDRINFO: ddrphy config done
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
SEC0:  RNG instantiated
Normal Boot
WDT:   Not found!
Trying to boot from BOOTROM
image offset 0x8000, pagesize 0x200, ivt offset 0x0
Can't support legacy image
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

 

Compared to a running image on EVK, it looks like that BL31 image is not found :

 

U-Boot SPL 2021.04-lf_v2021.04+g1c0116f3da (Sep 06 2021 - 08:48:23 +0000)
DDRINFO: start DRAM init
DDRINFO: DRAM rate 4000MTS
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
SEC0:  RNG instantiated
Normal Boot
WDT:   Not found!
Trying to boot from BOOTROM
image offset 0x8000, pagesize 0x200, ivt offset 0x0
NOTICE:  BL31: v2.4(release):lf-5.10.52-2.1.0-rc1-39-gbb4957067
NOTICE:  BL31: Built : 04:45:39, Sep  8 2021


U-Boot 2021.04-lf_v2021.04+g1c0116f3da (Sep 06 2021 - 08:48:23 +0000)

CPU:   i.MX8MP[8] rev1.0 1800 MHz (running at 1200 MHz)
CPU:   Commercial temperature grade (0C to 95C) at 30C
Reset cause: POR
Model: NXP i.MX8MPlus LPDDR4 EVK board
DRAM:  6 GiB

 

Knowing that there's no eMMC but only micro SD card available in our custom design, similar to the 8MPLUSDR4-CPU design.

Could you help to guide us to go further, please ?

Thanks in advance and best regards,
Khang

0 Kudos
1 Solution
3,012 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

Dear @khang_letruong ,

I and joan we are on the Spring holidays leave, so sorry about it. Here if your question is urgent recommend you to go to create one case https://www.nxp.com/ go to Support Tickets  https://support.nxp.com/s/?language=en_US, there are global engineer support here.

Wish you have a nice day

Best Regards

Rita

View solution in original post

0 Kudos
8 Replies
3,068 Views
khang_letruong
Senior Contributor III

Hi again,

To update, I modified the BSP of imx8mp-ddr4-evk (especially the DDR4 capacity and timing) and ran the bitbaked firmware on our custom board but still have the same problem :

U-Boot SPL 2021.04-lf_v2021.04+g1c0116f3da (Sep 06 2021 - 08:48:23 +0000)
spl_early_init
pca9450_bind: 'pca9450@25' - found regulators subnode
pmic_bind_children for 'pca9450@25' at node offset: 5040
Bound: 0 children for PMIC: 'pca9450@25'
pca9450_bind: pca9450@25 - no child found
pmic_reg_write: reg=c, value=29 priv->trans_len:1, ret=0
pmic_reg_write: reg=10, value=59 priv->trans_len:1, ret=0
pmic_reg_write: reg=1e, value=18 priv->trans_len:1, ret=0
pmic_reg_write: reg=8, value=a1 priv->trans_len:1, ret=0
DDRINFO: start DRAM init
DDRINFO: cfg clk
DDRINFO: DRAM rate 3200MTS
DDRINFO: ddrc config start
DDRINFO: ddrc config done
DDRINFO:ddrphy config start
DRAM PHY training for 3200MTS
check ddr_pmu_train_imem code
check ddr_pmu_train_imem code pass
check ddr4_pmu_train_dmem code
check ddr_pmu_train_dmem code pass
[PMU Major message = 0x00000000]
[PMU Major message = 0x00000002]
[PMU Major message = 0x00000001]
[PMU Major message = 0x0000000a]
[PMU Major message = 0x000000fd]
[PMU Major message = 0x000000fe]
[PMU Major message = 0x00000004]
[PMU Major message = 0x00000003]
[PMU Major message = 0x00000009]
[PMU Major message = 0x00000007]
Training PASS
DRAM PHY training for 3200MTS
check ddr_pmu_train_imem code
check ddr_pmu_train_imem code pass
check ddr4_pmu_train_dmem code
check ddr_pmu_train_dmem code pass
[PMU Major message = 0x00000000]
[PMU Major message = 0x00000006]
[PMU Major message = 0x00000005]
[PMU Major message = 0x00000007]
Training PASS
DDRINFO: ddrphy config done
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
>>SPL: board_init_r()
spl_init
SEC0: RNG instantiated
Normal Boot
WDT: Not found!
Trying to boot from BOOTROM
image offset 0x8000, pagesize 0x200, ivt offset 0x0
Can't support legacy image
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

I can share the schematic design and the patches of u-Boot (for DDR4 adaptation from imx8mp-ddr4-evk to our custom board) in private if necessary.

Thanks in advance,

Khang

0 Kudos
3,051 Views
khang_letruong
Senior Contributor III

Hi again,

As per suggestion of @weidong_sun for similar issue, I tried to flash the u-boot in serial downloader mode using uuu :

 

$ lsusb 
Bus 003 Device 008: ID 1fc9:0146 NXP Semiconductors SE Blank 865  

 

But failed :

 

$ sudo uuu -v -b sd ./imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.4.138-0-g051a8fe

Build in config:
	Pctl	 Chip		 Vid	 Pid	 BcdVersion
	==================================================
	SDPS:	 MX8QXP		 0x1fc9	 0x012f	 [0x0002..0xffff]
	SDPS:	 MX8QM		 0x1fc9	 0x0129	 [0x0002..0xffff]
	SDPS:	 MX8DXL		 0x1fc9	 0x0147
	SDPS:	 MX28		 0x15a2	 0x004f
	SDPS:	 MX815		 0x1fc9	 0x013e
	SDPS:	 MX865		 0x1fc9	 0x0146
	SDPS:	 MX8ULP		 0x1fc9	 0x014a
	SDPS:	 MX8ULP		 0x1fc9	 0x014b
	SDP:	 MX7D		 0x15a2	 0x0076
	SDP:	 MX6Q		 0x15a2	 0x0054
	SDP:	 MX6D		 0x15a2	 0x0061
	SDP:	 MX6SL		 0x15a2	 0x0063
	SDP:	 MX6SX		 0x15a2	 0x0071
	SDP:	 MX6UL		 0x15a2	 0x007d
	SDP:	 MX6ULL		 0x15a2	 0x0080
	SDP:	 MX6SLL		 0x1fc9	 0x0128
	SDP:	 MX7ULP		 0x1fc9	 0x0126
	SDP:	 MXRT106X	 0x1fc9	 0x0135
	SDP:	 MX8MM		 0x1fc9	 0x0134
	SDP:	 MX8MQ		 0x1fc9	 0x012b
	SDPU:	 SPL		 0x0525	 0xb4a4	 [0x0000..0x04ff]
	SDPV:	 SPL1		 0x0525	 0xb4a4	 [0x0500..0x9998]
	SDPU:	 SPL		 0x0525	 0xb4a4	 [0x9999..0x9999]
	SDPU:	 SPL		 0x3016	 0x1001	 [0x0000..0x04ff]
	SDPV:	 SPL1		 0x3016	 0x1001	 [0x0500..0x9998]
	FBK:	 		 0x066f	 0x9afe
	FBK:	 		 0x066f	 0x9bff
	FB:	 		 0x0525	 0xa4a5
	FB:	 		 0x18d1	 0x0d02
	FB:	 		 0x3016	 0x0001

Run built-in script:
 
uuu_version 1.2.39

# @./imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk            | bootloader
# @./imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk   [./imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk] | image burn to emmc, default is the same as bootloader

# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ
SDP: boot -f ./imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk

# This command will be run when ROM support stream mode
# i.MX8QXP, i.MX8QM
SDPS: boot -f ./imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk

# These commands will be run when use SPL and will be skipped if no spl
# SDPU will be deprecated. please use SDPV instead of SDPU
# {
SDPU: delay 1000
SDPU: write -f ./imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk -offset 0x57c00
SDPU: jump
# }

# These commands will be run when use SPL and will be skipped if no spl
# if (SPL support SDPV)
# {
SDPV: delay 1000
SDPV: write -f ./imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk -skipspl
SDPV: jump
# }

FB: ucmd setenv fastboot_dev mmc
FB: ucmd setenv mmcdev ${sd_dev}
FB: ucmd mmc dev ${sd_dev}
FB: flash bootloader ./imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk
FB: Done


Wait for Known USB Device Appear...

Error: fail open file: >./imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk

 

Meanwhile the imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk was there in the working directory :

 

$ ls -l
total 4329820
-rw-r--r-- 1 developer developer    3697328 Jan 15 21:26 imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk
-rw-r--r-- 1 developer developer 3718427648 Jan 15 21:32 imx-image-multimedia-imx8mp-ddr4-evk-20230116022605.rootfs.wic

 

Could you share your idea ? Could there be something abnormal in the imx-boot-imx8mp-ddr4-evk-sd.bin-flash_ddr4_evk make itself impossible to be read by uuu?

Could the problem come from the micro SD card? Personally I don't think so as the training was done with the first stage of u-Boot from that medium anyway.

Best Regards,
Khang

 

0 Kudos
3,049 Views
khang_letruong
Senior Contributor III

[Update]

The error "Can't support legacy image" led to following code in arch/arm/mach-imx/spl_imx_romapi.c:

static int spl_romapi_load_image_seekable(struct spl_image_info *spl_image,
                                          struct spl_boot_device *bootdev,
                                          u32 rom_bt_dev)
{
        ...

        if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
            image_get_magic(header) == FDT_MAGIC) {
                struct spl_load_info load;

                memset(&load, 0, sizeof(load));
                load.bl_len = pagesize;
                load.read = spl_romapi_read_seekable;
                load.priv = &pagesize;
                return spl_load_simple_fit(spl_image, &load,
                                           offset / pagesize, header);
        } else if (IS_ENABLED(CONFIG_SPL_LOAD_IMX_CONTAINER)) {
                struct spl_load_info load;

                memset(&load, 0, sizeof(load));
                load.bl_len = pagesize;
                load.read = spl_romapi_read_seekable;
                load.priv = &pagesize;

                ret = spl_load_imx_container(spl_image, &load, offset / pagesize);
        } else {
                /* TODO */
                puts("Can't support legacy image\n");
                return -1;
        }
        ...
}

 

Looks like FDT_MAGIC is not found for some reason as CONFIG_SPL_LOAD_FIT=y but not CONFIG_SPL_LOAD_IMX_CONTAINER in relevant defconfig :

$ ag CONFIG_SPL_LOAD_FIT | grep imx8mp
board/freescale/imx8mp_evk/spl.c:144:#ifdef CONFIG_SPL_LOAD_FIT
configs/imx8mp_evk_android_trusty_dual_defconfig:30:CONFIG_SPL_LOAD_FIT=y
configs/phycore-imx8mp_defconfig:22:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_evk_android_trusty_powersave_defconfig:30:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_evk_inline_ecc_defconfig:30:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_evk_android_trusty_secure_unlock_defconfig:30:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_evk_android_trusty_defconfig:30:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_evk_android_powersave_defconfig:30:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_evk_defconfig:29:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_ddr4_evk_defconfig:30:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_ddr4_evk_nand_defconfig:29:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_ddr4_evk_inline_ecc_defconfig:30:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_evk_ndm_defconfig:30:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_evk_android_defconfig:30:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_evk_android_dual_defconfig:30:CONFIG_SPL_LOAD_FIT=y
configs/imx8mp_evk_android_uuu_defconfig:30:CONFIG_SPL_LOAD_FIT=y

 

Regards,
K

0 Kudos
3,026 Views
khang_letruong
Senior Contributor III

Hi again,

I printed out the result of image_get_magic(header) but it is NOT 0xd00dfeed (FDT_MAGIC), it is 0xe6666262 :

 

Training PASS
DDRINFO: ddrphy config done
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
>>SPL: board_init_r()
spl_init
SEC0:  RNG instantiated
Normal Boot
WDT:   Not found!
Trying to boot from BOOTROM
image offset 0x8000, pagesize 0x200, ivt offset 0x0
ROMAPI: Header magic found 0xe6666262
Can't support legacy image
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

 

Could you please help @Rita_Wang@joanxie ? I am really stuck

Thanks in advance,

K.

0 Kudos
3,013 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

Dear @khang_letruong ,

I and joan we are on the Spring holidays leave, so sorry about it. Here if your question is urgent recommend you to go to create one case https://www.nxp.com/ go to Support Tickets  https://support.nxp.com/s/?language=en_US, there are global engineer support here.

Wish you have a nice day

Best Regards

Rita

0 Kudos
2,959 Views
khang_letruong
Senior Contributor III

Dear @Rita_Wang ,

Thanks for your suggestion. I already opened the case.

Best Regards,

Khang

0 Kudos
881 Views
Hgong2023
Contributor I

Hello, how did you solve this problem? I also encountered this problem

0 Kudos
865 Views
khang_letruong
Senior Contributor III

Hi @Hgong2023 ,

We found an error in the DDR RPA configuration and fixed it.

0 Kudos