
On 23.02.2012 14:10, Stefano Babic wrote:
On 23/02/2012 09:50, Dirk Behme wrote:
The flash header supports different flash offsets for different boot devices. E.g. parallel NOR or OneNAND use a different offset than FLASH_OFFSET_STANDARD (== 0x400).
The flash offset is correctly read from the configuration in parse_cfg_cmd(). But is then overwritten wrongly in set_imx_hdr_v1/2().
Fix this by removing this overwriting. Use the flash offset correctly read from the configuration, instead.
If there is no flash_offset read from the configuration file, i.e. the BOOT_FROM tag is missing, exit with an error message.
Signed-off-by: Dirk Behme dirk.behme@de.bosch.com CC: Jason Liu liu.h.jason@gmail.com CC: Stefano Babic sbabic@denx.de
Tested on ima-mx53 with MX53 (header V2), booting from NOR.
Tested-by: Stefano Babic sbabic@denx.de
Dirk,
apart this patch that fixes in any case a wrong offset in header, I have investigated in more detail this issue. The bug sets a wrong value in the boot_data.start field that inform the processor which is the start address of the image to be copied into the RAM. All other fields are still correct.
However, if we boot from NOR we have a XIP device and we do not need this first copy into the RAM. We could skip it if we set CONFIG_SYS_TEXT_BASE to point to a region in the NOR flash, as it is usually done when booting from NOR (see for example PowerPc boards). I understand that this is the reason why my board has always booted, while yours not. Is it right ?
Ah, XIP. Yes, this does make sense! :)
Where do you set CONFIG_SYS_TEXT_BASE ?
To main memory, i.e. no XIP.
We just took the configuration as it is in mainline and normally is used to start from SD card: Initialize the main memory using the DCD data. And then copy the image to main memory, e.g. 0x17800000, and jump to it. And this jump fails if boot_data.start is wrong.
Many thanks for this update!
Best regards
Dirk