From: Mehmet Fide <[email protected]>

Hello Francesco,

> Stefan: do you remember any of this? any comment?
>
> Unless Stefan says anything against this change, I am ok with it. But I
> really have no idea about it, I trust your analysis Mehmet.

Some more background that may make this less scary.

The value this restores is not a new invention: 0x3f408000 is what
mainline used until 2017 and what the Toradex 2015.04 fork has been
shipping since, including on our seven Colibri VF products in the
field, so it is the most field-proven number this board has.

As for why the low base fails, the reference manual gives a hint. For
NAND boot the ROM first stages the 4 KiB "initial load region" of the
image in internal RAM, parses the IVT at offset 0x400 inside it, and
only then copies the whole image to the address the IVT names (VFxxx
RM, table 7-51). Where that staging buffer lives is not documented,
but the imx_usb_loader Vybrid configuration points its scratch/DCD
address at 0x3f400000, the very bottom of the gfxRAM. An image linked
at 0x3f401000 asks the ROM to copy the image right over that region,
which would corrupt the staged source header mid-copy, and it matches
what I observe: the ROM never jumps, it falls straight back to the
serial downloader. With 0x3f408000 the copy target starts at
0x3f4074e8 and the bottom of the SRAM is never touched.

That said, this is my best reading of it; what the commit message
relies on is the A/B measurement only. If Stefan remembers the actual
constraint I am happy to spell it out in the commit message.

Thanks for the ack!

Mehmet

Reply via email to