Dear Experts :
Recently, when debugging EMMC on our own hardware, I encountered a problem and wanted to consult you.The same image file can be started normally on the SD card, then burn the program in SD into EMMC, and then switch to EMMC (boot0) startup mode. When starting from EMMC, sometimes it can be started from EMMC, but it can not be started normally from EMMC most of the time (see the serial port print log, it should not be running to uboot stage). With the same method of formatting EMMC, there is no problem with EMMC on the development board and it can run normally, but there are having problems on our own hardware board The error information is as follows :
U-Boot SPL 2021.01 (Oct 14 2021 - 16:40:12 +0800)
Model: Texas Instruments K3 J721E SoC
checkboard--hhw
do_board_detect
ep->header=0xadead12c
hhw-CONFIG_EEPROM_BUS_ADDRESS=0x00
hhw-ret=0x01
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed 1
Board: J721EX-PM1-SOM rev E2
SYSFW ABI: 3.1 (firmware rev 0x0015 '21.5.0--v2021.05 (Terrific Llam')
do_board_detect
ep->header=0xadead12c
hhw-CONFIG_EEPROM_BUS_ADDRESS=0x00
hhw-ret=0x01
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed 1
LPDDR4_Prob--------hhw
k3_lpddr4_init: hhw
k3_ddrss_init_freq----hhw
k3_lpddr4_start-----hhw
k3_lpddr4_freq_update---hhw
ddrss->ddrss_ctrl_mmr=0x114000
CTRLMMR_DDR4_FSP_CLKCHNG_REQ_OFFS=0x80
ddrss->ddr_fhs_cnt=0xa
k3_lpddr4_freq_update: received freq change req: req type = 1, req no. = 0
k3_lpddr4_freq_update: ddrss->ddr_freq1 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq2 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq0 = 15000000
k3_lpddr4_freq_update: ddrss->ddr_clk = 1103650356
writel(0x1):ddrss->ddrss_ctrl_mmr=0x114000
writel(0x0):ddrss->ddrss_ctrl_mmr=0x114000
k3_lpddr4_freq_update: received freq change req: req type = 0, req no. = 1
k3_lpddr4_freq_update: ddrss->ddr_freq1 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq2 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq0 = 15000000
k3_lpddr4_freq_update: ddrss->ddr_clk = 1103650356
writel(0x1):ddrss->ddrss_ctrl_mmr=0x114000
writel(0x0):ddrss->ddrss_ctrl_mmr=0x114000
k3_lpddr4_freq_update: received freq change req: req type = 1, req no. = 2
k3_lpddr4_freq_update: ddrss->ddr_freq1 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq2 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq0 = 15000000
k3_lpddr4_freq_update: ddrss->ddr_clk = 1103650356
writel(0x1):ddrss->ddrss_ctrl_mmr=0x114000
writel(0x0):ddrss->ddrss_ctrl_mmr=0x114000
k3_lpddr4_freq_update: received freq change req: req type = 0, req no. = 3
k3_lpddr4_freq_update: ddrss->ddr_freq1 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq2 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq0 = 15000000
k3_lpddr4_freq_update: ddrss->ddr_clk = 1103650356
writel(0x1):ddrss->ddrss_ctrl_mmr=0x114000
writel(0x0):ddrss->ddrss_ctrl_mmr=0x114000
k3_lpddr4_freq_update: received freq change req: req type = 1, req no. = 4
k3_lpddr4_freq_update: ddrss->ddr_freq1 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq2 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq0 = 15000000
k3_lpddr4_freq_update: ddrss->ddr_clk = 1103650356
writel(0x1):ddrss->ddrss_ctrl_mmr=0x114000
writel(0x0):ddrss->ddrss_ctrl_mmr=0x114000
k3_lpddr4_freq_update: received freq change req: req type = 2, req no. = 5
k3_lpddr4_freq_update: ddrss->ddr_freq1 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq2 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq0 = 15000000
k3_lpddr4_freq_update: ddrss->ddr_clk = 1103650356
writel(0x1):ddrss->ddrss_ctrl_mmr=0x114000
writel(0x0):ddrss->ddrss_ctrl_mmr=0x114000
k3_lpddr4_freq_update: received freq change req: req type = 1, req no. = 6
k3_lpddr4_freq_update: ddrss->ddr_freq1 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq2 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq0 = 15000000
k3_lpddr4_freq_update: ddrss->ddr_clk = 1103650356
writel(0x1):ddrss->ddrss_ctrl_mmr=0x114000
writel(0x0):ddrss->ddrss_ctrl_mmr=0x114000
k3_lpddr4_freq_update: received freq change req: req type = 2, req no. = 7
k3_lpddr4_freq_update: ddrss->ddr_freq1 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq2 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq0 = 15000000
k3_lpddr4_freq_update: ddrss->ddr_clk = 1103650356
writel(0x1):ddrss->ddrss_ctrl_mmr=0x114000
writel(0x0):ddrss->ddrss_ctrl_mmr=0x114000
k3_lpddr4_freq_update: received freq change req: req type = 1, req no. = 8
k3_lpddr4_freq_update: ddrss->ddr_freq1 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq2 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq0 = 15000000
k3_lpddr4_freq_update: ddrss->ddr_clk = 1103650356
writel(0x1):ddrss->ddrss_ctrl_mmr=0x114000
writel(0x0):ddrss->ddrss_ctrl_mmr=0x114000
k3_lpddr4_freq_update: received freq change req: req type = 2, req no. = 9
k3_lpddr4_freq_update: ddrss->ddr_freq1 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq2 = 450000000
k3_lpddr4_freq_update: ddrss->ddr_freq0 = 15000000
k3_lpddr4_freq_update: ddrss->ddr_clk = 1103650356
writel(0x1):ddrss->ddrss_ctrl_mmr=0x114000
writel(0x0):ddrss->ddrss_ctrl_mmr=0x114000
spl_board_init--HHW
boot_from_devices------hhw
Trying to boot from MMC1
mmc_load_image_raw_sector: mmc block read error
** Partition 1 not valid on device 0 **
spl_register_fat_device: fat register err - -1
spl_load_image_fat: error reading image tispl.bin, err - -1
spl: no partition table found
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###
We use the following method to burn the image file from SD card to EMMC:
The boot method of 'emmc (boot0)' is adopted. The boot0 partition uses the methods of 'fatload' and 'mmc write' to burn the boot file from the SD card to EMMC. The root file system uses the file system copy method (the error should not reach the uboot stage).