mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-18 02:38:56 +00:00
014315b2d8
With the current configuration provided in mxsimage{-spl}.mx28.cfg the size of SPL binary has been constrained to 32 KiB, due to "LOAD IVT" command with 0x8000 offset. The problem was that, the imx28 ROM takes the u-boot.sb and then extracts from it the IVT header and places it on the 0x8000 OCRAM offset overwriting any valid (i.e. loaded from eMMC or SPI-NOR) SPL code. This bug was unnoticed as the overwrite size was just 32 bytes, so the probability that some important code is altered was low. However, in the XEA board (where the SPL size is ~39KiB), the overwritten data was `(struct dm_spi_ops *) 0x800c <mxs_spi_ops>`, which is used during the boot process. As a result the SPL execution code hanged with "undefined instruction" abort as callbacks (with wrong addresses) from it were called. The fix is to change the OCRAM's offset where IVT is loaded to 0xE000, so the SPL can grow up to ~57KiB (the maximal size of OCRAM memory available is 0xE3FC). Signed-off-by: Lukasz Majewski <lukma@denx.de> |
||
---|---|---|
.. | ||
clock.c | ||
iomux.c | ||
Makefile | ||
mxs.c | ||
mxs_init.h | ||
mxsimage-signed.cfg | ||
mxsimage-spl.mx23.cfg | ||
mxsimage-spl.mx28.cfg | ||
mxsimage.mx23.cfg | ||
mxsimage.mx28.cfg | ||
spl_boot.c | ||
spl_lradc_init.c | ||
spl_mem_init.c | ||
spl_power_init.c | ||
start.S | ||
timer.c | ||
u-boot-imx23.bd | ||
u-boot-imx28.bd | ||
u-boot-spl.lds |