[U-Boot] U-Boot hangs in start_armboot()

Roman Mashak romez777 at gmail.com
Thu Dec 11 12:01:00 CET 2008


Hello

I've just come across a problem. I have ARM-based board with its
originally shipped bootloader (not U-Boot, and having less
functionality) placed in NOR flash. However it initializes CPU, memory
controller, does remap.

Briefly about the memory map: before remap NOR flash is at 0x0 and
SDRAM 0x10000000, after remap  -- SDRAM is mapped at 0x0.  I've built
a U-Boot image linked to 0x0, as I want to load it in RAM, so I linked
it to 0x0.

Loading this image via JTAG into target RAM goes fine, but hangs at
'start_armboot()', right after:

gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t));
...
memset ((void*)gd, 0, sizeof (gd_t));

My investigations show that '_armboot_start' being equal to '_start'
is 0x0, CFG_MALLOC_LEN is defined in my board configuration:

#define CFG_ENV_SIZE            0x10000
#define CFG_MALLOC_LEN  (CFG_ENV_SIZE + 128*1024)

It turns out that "(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t))"
is negative and converted to 0xffffffff which is certainly wrong.

Where's the mistake -- link address or something else?

Thanks in advance.

-- 
Roman Mashak


More information about the U-Boot mailing list