请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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 原始启动模式、如何调整它?