Problem on imx: add rom api support on imx8mn

Michael Nazzareno Trimarchi michael at amarulasolutions.com
Thu Jul 15 08:52:28 CEST 2021


Hi

On Thu, Jul 15, 2021 at 8:47 AM Peng Fan (OSS) <peng.fan at 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 at 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
> >>>
> >
> >
> >



-- 
Michael Nazzareno Trimarchi
Co-Founder & Chief Executive Officer
M. +39 347 913 2170
michael at amarulasolutions.com
__________________________________

Amarula Solutions BV
Joop Geesinkweg 125, 1114 AB, Amsterdam, NL
T. +31 (0)85 111 9172
info at amarulasolutions.com
www.amarulasolutions.com


More information about the U-Boot mailing list