Skip to contentSkip to conversation

Cannot boot from a uImage on the lite5200

U-Boot-Users Grant Likely 2 participants 8 messages Apr 19, 2005 – Apr 21, 2005 1 message not in the archive

lore
Share & tools
lore
#1 lore raw
In reply to a message not in the archive

I'm having problems getting u-boot to boot linux from a uImage on my lite5200 eval board. I can load a zImage into ram (@ 0x200000) and use the go command to boot it with no problems. When I load a uImage I get the bootup debug banners from the linux kernel and then the board resets before the "Linux version ..." banner (and then my bdi2000 halts the board). I've included the console logs for both cases below.

I noticed that the uImage has the load address set to 0x00000000 instead of the 0x00800000 that the zImage uses. Is this correct? I did try a uImage with load address set to 0x00800000, but I saw no difference.

BTW, ignore the "unable to mount root filesystem" kernel panic in the zImage case; I know how to fix that.

Has anybody had similar problems? I'm digging deeper into it now, but any suggestions would be appreciated.

Thanks,
g.

U-Boot: 1.1.2 (I don't have easy access to CVS due to firewall) Linux kernel: stock 2.6.11 (I also don't have easy access to bk trees, otherwise I'd use Sylvain's tree)
Toolchain: gcc 3.4.1 built from crosstool 0.30

Loaded zImage and jumped to 0x200000:
--------------------

U-Boot 1.1.2 (Apr 18 2005 - 14:20:37)

CPU: MPC5200 v1.2 at 396 MHz

       Bus 132 MHz, IPB 66 MHz, PCI 33 MHz
Board: Motorola MPC5200 (IceCube)
I2C:   85 kHz, ready
DRAM:  64 MB
FLASH: 16 MB
PCI:   Bus Dev VenId DevId Class Int
        00  1a  1057  5803  0680  00
In:    serial
Out:   serial
Err:   serial
Net:   FEC ETHERNET
IDE:   Bus 0: not available

Type "run flash_nfs" to mount root filesystem over NFS

Hit any key to stop autoboot: 0
=>
=>
=> tftpboot 200000 lite5200/zImage.lite5200

U-Boot 1.1.2 (Apr 18 2005 - 14:20:37)

CPU: MPC5200 v1.2 at 396 MHz

       Bus 132 MHz, IPB 66 MHz, PCI 33 MHz
Board: Motorola MPC5200 (IceCube)
I2C:   85 kHz, ready
DRAM:  64 MB
FLASH: 16 MB
PCI:   Bus Dev VenId DevId Class Int
        00  1a  1057  5803  0680  00
In:    serial
Out:   serial
Err:   serial
Net:   FEC ETHERNET
IDE:   Bus 0: not available

Type "run flash_nfs" to mount root filesystem over NFS

Hit any key to stop autoboot: 0
=> tftpboot 200000 lite5200/zImage.lite5200
Using FEC ETHERNET device
TFTP from server 192.168.100.1; our IP address is 192.168.100.10 Filename 'lite5200/zImage.lite5200'.
Load address: 0x200000
Loading: #################################################################

         #################################################################
         #####
done
Bytes transferred = 688691 (a8233 hex)
=> loaded at:     00200000 0029A130
relocated to:  00800000 0089A130
zimage at:     008057B9 00897E50
avail ram:     00400000 00800000

Linux/PPC load: console=ttyS0 root=/dev/ram0 rw
Uncompressing Linux...done.
Now booting the kernel
id mach(): done
MMU:enter
MMU:hw init
MMU:mapin
MMU:setio
MMU:exit
setup_arch: enter
setup_arch: bootmem
ocp: exit
arch: exit
Linux version 2.6.11 (glikely at trillian) (gcc version 3.4.1) #1 Mon Apr 18 14:35:
36 MDT 2005
Built 1 zonelists
Kernel command line: console=ttyS0 root=/dev/ram0 rw
PID hash table entries: 512 (order: 9, 8192 bytes)
Console: colour dummy device 80x25
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 63520k available (904k kernel code, 300k data, 84k init, 0k highmem) Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Linux NoNET1.0 for Linux 2.6

PCI: Probing PCI hardware
Serial: MPC52xx PSC driver
ttyS0 at MMIO 0xf0002000 (irq = 39) is a MPC52xx PSC
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
mice: PS/2 mouse device common for all mice

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
 <0>Rebooting in 180 seconds..

Loaded uImage and booted at 0x200000:
--------------------

U-Boot 1.1.2 (Apr 18 2005 - 14:20:37)

CPU: MPC5200 v1.2 at 396 MHz

       Bus 132 MHz, IPB 66 MHz, PCI 33 MHz
Board: Motorola MPC5200 (IceCube)
I2C:   85 kHz, ready
DRAM:  64 MB
FLASH: 16 MB
PCI:   Bus Dev VenId DevId Class Int
        00  1a  1057  5803  0680  00
In:    serial
Out:   serial
Err:   serial
Net:   FEC ETHERNET
IDE:   Bus 0: not available

Type "run flash_nfs" to mount root filesystem over NFS

Hit any key to stop autoboot: 0
=>
=>
=> tftpboot 200000 /tftpboot/lite5200/uImage
Using FEC ETHERNET device
TFTP from server 192.168.100.1; our IP address is 192.168.100.10 Filename '/tftpboot/lite5200/uImage'.
Load address: 0x200000
Loading: #################################################################

         #####################################################

done
Bytes transferred = 599767 (926d7 hex)
=> bootm 200000
## Booting image at 00200000 ...

   Image Name:   Linux-2.6.11
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    599703 Bytes = 585.6 kB

Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
id mach(): done
MMU:enter
MMU:hw init
MMU:mapin
MMU:setio
MMU:exit
setup_arch: enter
setup_arch: bootmem
ocp: exit
arch: exit

#2 lore raw
Quoted 3 lines · In message <[email protected]> you wrote:

I'm having problems getting u-boot to boot linux from a uImage on my lite5200 eval board. I can load a zImage into ram (@ 0x200000) and use the go command to boot it with no problems. When I load a uImage

This means that your kernel is probably ok in general...

Quoted 2 lines

I get the bootup debug banners from the linux kernel and then the board resets before the "Linux version ..." banner (and then my

...and this means that most preobably it is not ported and/or configured for booting with U-Boot.

Quoted 2 lines

I noticed that the uImage has the load address set to 0x00000000 instead of the 0x00800000 that the zImage uses. Is this correct? I

Yes, this is correct.

Best regards,

Wolfgang Denk

Signature · 4 lines
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"If that makes any sense to you, you have a big problem."
                                  -- C. Durance, Computer Science 234
#3 lore raw
Quoted 5 lines · Wolfgang Denk
Quoted 3 lines · In message <[email protected]> you wrote:

I'm having problems getting u-boot to boot linux from a uImage on my lite5200 eval board. I can load a zImage into ram (@ 0x200000) and use the go command to boot it with no problems. When I load a uImage

Quoted 7 lines

This means that your kernel is probably ok in general...

Quoted 2 lines

I get the bootup debug banners from the linux kernel and then the board resets before the "Linux version ..." banner (and then my

...and this means that most preobably it is not ported and/or configured for booting with U-Boot.

What specifically needs to be done to configure a kernel for use with u-boot? From the documentation I could only find references to using mkimage to prepare an image (which I've done).

The kernel I was using contains the mpc5200 patches from Sylvain, so it should be "u-boot ready". I've since moved up to stock linux kernel 2.6.12rc2 which includes the lastest patches for the mpc5200, but it made no difference. I could not find anything in the kernel config file related to u-boot for this port. The file Documentation/powerpc/mpc52xx.txt in the kernel tree states that a 'make uImage' should build an image bootable by u-boot. (The Makefile simply calls mkimage for the uImage target)

I've also updated to CVS u-boot, but again no change (but solved my FEC problems nicely)

BTW, I do get some output from the kernel. The pre-boot debug messages (from "id mach(): done" to "arch: exit") from arch/ppc/kernel/setup.c get displayed just like with the zImage. So the jump into inital setup code seems to be working.

Thanks in advance,
g.

#4 lore raw
Quoted 4 lines · In message <[email protected]> you wrote:

What specifically needs to be done to configure a kernel for use with u-boot? From the documentation I could only find references to using mkimage to prepare an image (which I've done).

You must use the raw kernel image, without the kernel bootstrap stuff. And you must make sure to pass the parameters correctly (struct bd_info). See also the FAQ at
http://www.denx.de/twiki/bin/view/DULG/LinuxHangsAfterUncompressingKernel

Quoted 2 lines

but it made no difference. I could not find anything in the kernel config file related to u-boot for this port. The file

This is probably the problem.

Quoted 3 lines

Documentation/powerpc/mpc52xx.txt in the kernel tree states that a 'make uImage' should build an image bootable by u-boot. (The Makefile simply calls mkimage for the uImage target)

This is probably not enough. At least you must make sure not to include any bootstrap stuff.

Best regards,

Wolfgang Denk

Signature · 3 lines
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"I didn't know it was impossible when I did it."
#5 lore raw
Quoted 10 lines · Wolfgang Denk
Quoted 4 lines · In message <[email protected]> you wrote:

What specifically needs to be done to configure a kernel for use with u-boot? From the documentation I could only find references to using mkimage to prepare an image (which I've done).

You must use the raw kernel image, without the kernel bootstrap stuff. And you must make sure to pass the parameters correctly (struct bd_info). See also the FAQ at
http://www.denx.de/twiki/bin/view/DULG/LinuxHangsAfterUncompressingKernel

Do you mean the bootstrap stuff that's wrapped around a vmlinux.gz to create a zImage, or do you mean arch/ppc/kernel/setup.c and others? I'm building the uImage directly from the vmlinux.gz, so I don't have any of the zImage stuff.

Quoted 4 lines
Quoted 3 lines

but it made no difference. I could not find anything in the kernel config file related to u-boot for this port. The file

Quoted 8 lines

This is probably the problem.

Quoted 3 lines

Documentation/powerpc/mpc52xx.txt in the kernel tree states that a 'make uImage' should build an image bootable by u-boot. (The Makefile simply calls mkimage for the uImage target)

This is probably not enough. At least you must make sure not to include any bootstrap stuff.

I've got weird stuff happening here now. With the same uImage I've now seen three different behavious:
1. (most frequently) get initial setup banners ("id arch", et all). Crashes w/ board reset before kernel version banner
2. locks up before printing anything
3. kernel boots fine.

It's looking more like I've got a problem with the hardware configuration on the Linux side now. Time to step through init code....

g.

#6 lore raw
Quoted 2 lines · In message <[email protected]> you wrote:

Do you mean the bootstrap stuff that's wrapped around a vmlinux.gz to

right.

Quoted 3 lines

create a zImage, or do you mean arch/ppc/kernel/setup.c and others?=20 I'm building the uImage directly from the vmlinux.gz, so I don't have any of the zImage stuff.

OK.

Quoted 3 lines

It's looking more like I've got a problem with the hardware configuration on the Linux side now. Time to step through init code....

Can you try the same image on different hardware? Is this an original lite5200? [If yes, feel free to send me your kernel image and I will run it on our systems [not to the list, please]].

Best regards,

Wolfgang Denk

Signature · 4 lines
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The number you have dialed is imaginary. Please divide by 0  and  try
again.
#7 lore raw
Quoted 10 lines · Wolfgang Denk
Quoted 5 lines · In message <[email protected]> you wrote:

It's looking more like I've got a problem with the hardware configuration on the Linux side now. Time to step through init code....

Can you try the same image on different hardware? Is this an original lite5200? [If yes, feel free to send me your kernel image and I will run it on our systems [not to the list, please]].

Yes, it is an original lite5200. I've got another board that I haven't unpacked yet. I'll try that one and also send you my kernel image once I get into the office this afternoon. Thanks!

I was mulling over the problem last night, and I *think* that when I got my 2.6 kernel to boot it was immediately after briefly trying a 2.4 kernel based on the denx linuxppc_2_4 tree (I was compairing the boot sequences between the two kernels). After that the 2.6 kernel started booting correctly. I did not power cycle the board after trying the 2.4 kernel, I used my bdi2k to reset it. After I power cycled the board the 2.6 kernel stopped working again. I'm going to try to recreate the sequence of events once I'm in the office.

#8 lore raw
Quoted 8 lines · Grant Likely
Quoted 7 lines · Wolfgang Denk
Quoted 5 lines · In message <[email protected]> you wrote:

It's looking more like I've got a problem with the hardware configuration on the Linux side now. Time to step through init code....

Quoted 7 lines
Quoted 3 lines

Can you try the same image on different hardware? Is this an original lite5200? [If yes, feel free to send me your kernel image and I will run it on our systems [not to the list, please]].

Yes, it is an original lite5200. I've got another board that I haven't unpacked yet. I'll try that one and also send you my kernel image once I get into the office this afternoon. Thanks!

BAH! The problem was between my keyboard and my chair.

The zImage used the kernel command line from .config. The uImage got passed the command line from u-boot. The bootargs environment variable did not specify a console. Add "console=ttyS0,115200" and everything works.... I should know better.

Thank you very much for the help.
g.