Linux doesn not boot from u-boot on ML403

Miroslaw Dach miroslaw.dach at
Wed Aug 29 18:41:33 EST 2007

Hi Grant,

	My zImage.elf has 1.1 MB and uImage 968 KB.
Could you tell me please how to hook up GDB to debug u-boot?

I have examined the file in u-boot which does the bootelf:
cat common/cmd_elf.c:

int do_bootelf (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
        addr = load_elf_image (addr);

        printf ("## Starting application at 0x%08lx ...\n", addr);

         * QNX images require the data cache is disabled.
         * Data cache is already flushed, so just turn it off.
        if (dcache_status ())
                dcache_disable ();
         * pass address parameter as argv[0] (aka command name),
         * and all remaining args
        rc = ((ulong (*)(int, char *[])) addr) (--argc, &argv[1]);

and I have determined that the system hangs just after the command:
rc = ((ulong (*)(int, char *[])) addr) (--argc, &argv[1]);

This command starts executing the linux image from the location:

On the console it is printed the following stuff:
loaded at:     00400000 004F3138
board data at: 004F1120 004F1138
relocated to:  004040B4 004040CC
zimage at:     00404E59 004F003D
avail ram:     004F4000 01FFFFFF

Linux/PPC load: console=ttyUL0,9600 root=/dev/nfs rw 
ip=::::virtex4-mirek:eth0:dhcp panic=1
Uncompressing Linux...

It seems to be that it is the Linux kernel which does the uncompression 
and it hangs. The question remain why?

Maybe it is not enough space in RAM or the address in RAM where the
uncompression is done is wrong.

When I load the u-boot to ram via jtag it is placed under the address:
0x800000 as follows:

        section, .text: 0x00800000-0x0081513c
        section, .resetvec: 0x0081513c-0x00815140
        section, .rodata: 0x00815140-0x00817ce0
        section, .reloc: 0x00817d00-0x00818674
        section, .data: 0x00818674-0x00818b08
        section, .data.rel: 0x00818b08-0x00818b34
        section, .data.rel.local: 0x00818b34-0x00818f6c
        section, .u_boot_cmd: 0x00818f6c-0x008191dc
        section, .bss: 0x00819200-0x0081dd04

Than I load the zImage.elf via tftp to the memory location

When I issue the command bootelf 0xf00000  the zImage.elf is placed in the 

0x400000 as follows:

        section, .text: 0x00400000-0x004036cc
        section, .data: 0x00404000-0x004f7000
        section, .bss: 0x004f7000-0x004f9138

After that uncompression of zImage.elf starts. I am just wandering which 
memory location is involved for that?

My evaluation board has 32 MB of SDRAM address range:
  (0x00000000-0x01ffffff) DDR_SDRAM_1   plb  

Any Idea?

Best Regards


On Tue, 28 Aug 2007, Grant Likely wrote:

> On 8/28/07, Miroslaw Dach <miroslaw.dach at> wrote:
> > This buffer refers to the kernel which I boot straight from jtag but not
> > u-boot.
> /me remembers something....
> How big is your kernel image?  Seems to me I've had problems with
> kernel images that were too large not being uncompressed properly.
> Can you hook up GDB and debug u-boot?  Find out where it is hanging?
> g.

          Miroslaw Dach (Miroslaw.Dach at - SLS/Controls Group 
                PSI - Paul Scherrer Institut CH-5232 Villigen

More information about the Linuxppc-embedded mailing list