This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] SK-AM62:AM62XX-EVM:09.02.01.09:在 eMMC 的 MMCSD_MODE_RAW 启动模式下、它无法启动

Guru**** 1624225 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1364986/sk-am62-am62xx-evm-09-02-01-09-in-the-mmcsd_mode_raw-startup-mode-of-emmc-it-cannot-start

器件型号:SK-AM62

尊敬的所有:

在将 SDK 升级到09.02.01.09的过程中、发现 eMMC 无法在 RAW 模式下启动。 MMC_LOAD_IMAGE_RAW_SECTOR:MMC 块读取错误。

U-Boot SPL 2023.04-gd198909e26-dirty (May 22 2024 - 16:16:28 +0800)
SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
SPL initial stack usage: 13408 bytes
Trying to boot from MMC1
------BOOT_DEVICE_EMMC
------boot_mode: 1
------spl_mmc_load  4
------spl_mmc_load  5
------spl_mmc_load  7
hdr read sector 400, count=1
------mmc_load_image_raw_sector 1, image_get_magic: 0x0
------mmc_load_image_raw_sector 1-3
mmc_load_image_raw_sector: mmc block read error
------spl_mmc_load  8
spl_load_image_fat: error reading image tispl.bin, err - -2
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

通过比较08.06.00.42、image_get_magic (header)== FDT_magic、可通过 spl_load_simple_fit ()接口获取图像。 但在09.02.01.09 magic 等于0、image_get_magic (报头)! = FDT_MAGIC。

static __maybe_unused
int mmc_load_image_raw_sector(struct spl_image_info *spl_image,
                              struct mmc *mmc, unsigned long sector)
{
        unsigned long count;
        struct image_header *header;
        struct blk_desc *bd = mmc_get_blk_desc(mmc);
        int ret = 0;

        header = spl_get_load_buffer(-sizeof(*header), bd->blksz);

        /* read image header to find the image size & load address */
        count = blk_dread(bd, sector, 1, header);
        printk("hdr read sector %lx, count=%lu\n", sector, count);
        if (count == 0) {
                ret = -EIO;
                goto end;
        }

        printk("------mmc_load_image_raw_sector 1\n");
        if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
            image_get_magic(header) == FDT_MAGIC) {
                printk("------mmc_load_image_raw_sector 1-1\n");
                struct spl_load_info load;

                debug("Found FIT\n");
                load.dev = mmc;
                load.priv = NULL;
                load.filename = NULL;
                load.bl_len = mmc->read_bl_len;
                load.read = h_spl_load_read;
                ret = spl_load_simple_fit(spl_image, &load, sector, header);
        } else if (IS_ENABLED(CONFIG_SPL_LOAD_IMX_CONTAINER)) {
                printk("------mmc_load_image_raw_sector 1-2\n");
                struct spl_load_info load;

                load.dev = mmc;
                load.priv = NULL;
                load.filename = NULL;
                load.bl_len = mmc->read_bl_len;
                load.read = h_spl_load_read;

                ret = spl_load_imx_container(spl_image, &load, sector);
        } else {
                printk("------mmc_load_image_raw_sector 1-3\n");
                ret = mmc_load_legacy(spl_image, mmc, sector, header);
        }

end:
        if (ret) {
#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
                puts("mmc_load_image_raw_sector: mmc block read error\n");
#endif
                return -1;                                                                                                                                                                                                                                                                                                            
        }

        return 0;
}

如果要在 SDK 中支持09.02.01.09 eMMC 原始启动模式、如何调整它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Zhang:

    我假设您已经在块偏移地址0x400处正确刷写了 tispl.bin。 如果是这种情况、您能否检查在标头结构中读取了什么内容?

    此致、

    普拉桑特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Prashant:

    非常感谢。

    幸运的是、问题已经解决。 发现是硬件问题