
On 8 Jan 2015, stefan@agner.ch wrote:
Boot from SD-card (and probably also from NAND) was broken since commit d6d07a9bec ("arm: vf610: add NAND support for vf610twr").
It was broke before that when fsl_qspi was added? Or at least that also added a lot of code. It maybe dependant on the compiler (and hence binary size).
It looks like the increased size of U-Boot lead to a situation where the boot ROM overwrote its own stack/heap while loading U-Boot from the SD-card to the SRAM.
I didn't think of this. That is a possibility.
However, U-Boot worked fine when loaded through USB serial loader directly into SRAM. It looks like loading from SD-card uses other stack/heap location then the serial loader (or maybe no stack or heap at all).
I have tried various u-boot images with git-bisect. For instance when the QSPI was added, I had issues. It seems that an image near 220k was a threshold. The offset in the On-chip SRAM is 0x8000 (from the 'ld' file) and the imximage prints '3f008000'. So, I think that the offset takes the breaking point to where we cross from OC-SRAM0 to OC-SRAM1; I guess a stack maybe located here but it must be fairly small. I thought that maybe the HAB has a mapping of device memory start/size and didn't like it when we crossed the boundary.
This fix moves U-Boot to gfxRAM, which is 512kB in size and is not used by the boot ROM nor the SD-card loader of it.
Whatever the issue is, this fixes it for me as well. I would guess that NAND boot is also not possible or probably anything but serial-download modes.
Thanks, Bill Pringlemeir.