
Hi
On Thu, Jul 15, 2021 at 8:47 AM Peng Fan (OSS) peng.fan@oss.nxp.com wrote:
On 2021/7/8 17:15, Michael Nazzareno Trimarchi wrote:
Hi Peng
On Thu, Jul 8, 2021 at 9:12 AM Peng Fan (OSS) peng.fan@oss.nxp.com wrote:
On 2021/7/4 1:24, Michael Nazzareno Trimarchi wrote:
Hi all
I have some problems that I have understood and fixed but I can not explain. Right now I have on imx8mn that can boot from boot0 or boot1 partition after remove a condition in the is_boot_from_stream_device
This is a boot from mmcblk0boot0 with some debug
U-Boot SPL 2020.04-5.4.70-2.3.2+gf3bcbdfc62 (Jul 03 2021 - 17:00:27 +0000) power_bd71837_init DDRINFO: start DRAM init DDRINFO: DRAM rate 1600MTS DDRINFO:ddrphy calibration done DDRINFO: ddrmix config done Normal Boot Trying to boot from BOOTROM ROM API interface 2 from boot 131073
Interface is 2 MMC and boot is 131073 and according to this
static int is_boot_from_stream_device(u32 boot) +{
u32 interface;
interface = boot >> 16;
if (interface >= BT_DEV_TYPE_USB)
return 1;
if (interface == BT_DEV_TYPE_MMC && (boot & 1))
return 1;
return 0;
+}
means a stream interface but it does not boot.
Boot from boot1 give 131072 that is boot1 this let device boot because
Who gives 131073? Boot from boot1, you mean emmc boot partition0?
is_boot_from_stream_device is 0 and romapi use spl_romapi_load_image_seekable
Remove boot & 1 condition let me boot from mmcblk0boot0 and mmcblk0boot1 without any problem
Have you enabled emmc fastboot in fuse?
boot & 1 is checking emmc fastboot. emmc fastboot mode is actually stream device. If fastboot mode enabled, you need burn your flash.bin into offset 0. Not 32KB offset.
The offset is correct and the spl is starting on boot0 but then it should load the rest from boot0 block and not from usb. And why in case of boot1 the 1 is not present. I flash both on offset 0. Anyway I sent a patch
I suspect you have eMMC fastboot enabled for boot0, but not for boot1.
I think that was fuse this way
# Alternative Boot ("Fast boot") # =>[BT_FUSE_SEL | eMMC boot | USDHC1 EMMC] FB: ucmd fuse prog -y 1 3 0x10002A00 # =>[Fast boot | 8-bit DDR | MMC High speed | 1.8V | eMMC reset enable] FB: ucmd fuse prog -y 2 1 0x000000E7 # =>[Fast Boot Ack enable] FB: ucmd fuse prog -y 2 2 0x00000001 # boot_bus_width: 2 (8-bit), reset_boot_bus_width: 0, boot_mode: 2 (use dual data rate (DDR)) FB: ucmd mmc bootbus 0 2 0 2 # boot_ack: 1, boot_partition: 1 (Boot partition 1), 7 (User area), partition_access: No access to boot partition (default) FB: ucmd mmc partconf 0 1 1 0
How is it supposed to work in this case?
Michael
Regards, Peng.
Michael
Regards, Peng.
mmc partconf 0 EXT_CSD[179], PARTITION_CONFIG: BOOT_ACK: 0x0 BOOT_PARTITION_ENABLE: 0x1 PARTITION_ACCESS: 0x0
and the board was fused already.
Any idea why?
Michael