• Home
  • Help
  • Search
  • Login
  • Register
Pages: [1]
Author Topic: uImage won't start  (Read 3278 times)
wstupar
Newbie
*

Karma: 0
Posts: 33


View Profile
« on: July 16, 2009, 12:31:23 PM »

I am compiling the kernel distributed by Marvell and trying to load it onto the Sheeva Plug from a USB memory stick. The plug is loading the kernel, but it goes into never-never land. Can you suggest a possible problem location?

Here is the tail of "make uImage":

Image Name:   Linux-2.6.22.18
Created:      Thu Jul 16 10:35:40 2009
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    2106700 Bytes = 2057.32 kB = 2.01 MB
Load Address: 0x00008000
Entry Point:  0x00008000
  Image arch/arm/boot/uImage is ready

Here is how it hangs:

(Re)start USB...
USB:   scanning bus for devices... 2 USB Device(s) found
       scanning bus for storage devices... 1 Storage Device(s) found
reading uImage
...

2106764 bytes read
## Booting image at 08000000 ...
   Image Name:   Linux-2.6.22.18
   Created:      2009-07-16  17:35:40 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2106700 Bytes =  2 MB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

Here is the boot environment:

Marvell>> echo $(bootcmd)
run bootcmd_usb; run bootcmd_nand
Marvell>> echo $(bootcmd_usb)
setenv bootargs $(bootargs_usb); usb start; fatload usb 0:1 0x0008000 uImage; bootm 0x8000000; reset
Marvell>> echo $(bootargs_usb)
console=ttyS0,115200 root=/dev/sda2 rootdelay=20 mtdparts=nand_mtd:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw


Logged

Rabeeh Khoury
Administrator
Full Member
*****

Karma: 5
Posts: 218


View Profile
« Reply #1 on: July 17, 2009, 12:12:03 PM »

you are loading the kernel into one address, and bootm into different ?

Code:
fatload usb 0:1 0x0008000 uImage; bootm 0x8000000;

I suggest to load into 0x00800000 (address 8MB) and then bootm from the same address.
Logged

wstupar
Newbie
*

Karma: 0
Posts: 33


View Profile
« Reply #2 on: July 18, 2009, 09:36:55 AM »

OK, we have to load and start at the same address. I think the kernel was built to load at 0x8000, so I changed the bootcmd as follows:

Marvell>> setenv bootcmd_usb 'setenv bootargs $(bootargs_usb); usb start; fatload usb 0:1 0x8000 uImage; bootm 0x8000; reset'
Marvell>> saveenv

Now I get the following--it appears that the uImage is bad at location 0x800c:

(Re)start USB...
USB:   scanning bus for devices... 2 USB Device(s) found
       scanning bus for storage devices... 1 Storage Device(s) found
reading uImage
...

2106764 bytes read
## Booting image at 00008000 ...
   Image Name:   Linux-2.6.22.18
   Created:      2009-07-16  17:35:40 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2106700 Bytes =  2 MB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
   XIP Kernel Image ... OK

Starting kernel ...

undefined instruction
pc : [<0000800c>]          lr : [<006453f8>]
sp : 005fe514  ip : 00000004     fp : 00000002
r10: 006540b0  r9 : 005ff1f0     r8 : 005fffcc
r7 : 00000000  r6 : 00000000     r5 : 00000154  r4 : 00000000
r3 : 00008000  r2 : 00000100     r1 : 00000831  r0 : 00000000
Flags: Nzcv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

Logged

ianjb
Jr. Member
**

Karma: 0
Posts: 65


View Profile
« Reply #3 on: July 18, 2009, 12:17:08 PM »

As Rabeeh said, you need to be at 0x00800000 (address 8MB) and then bootm from that same address.
Logged

wstupar
Newbie
*

Karma: 0
Posts: 33


View Profile
« Reply #4 on: July 18, 2009, 04:04:11 PM »

I did try 0x800000 for load address and entry point, but the kernel still did not start. When I build uImage it says this:

Image Name:   Linux-2.6.22.18
Created:      Sat Jul 18 16:02:57 2009
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    2106700 Bytes = 2057.32 kB = 2.01 MB
Load Address: 0x00008000
Entry Point:  0x00008000
  Image arch/arm/boot/uImage is ready

I think it is saying that the image was built for loading at 0x8000 and entry point of 0x8000. Is this not correct? Should I modify the make to build for 0x800000?
Logged

wstupar
Newbie
*

Karma: 0
Posts: 33


View Profile
« Reply #5 on: July 23, 2009, 06:06:24 PM »

I am now able to boot uImage as distributed. The load and start address of 0x800000 is OK. The distributed uImage is 2595208 bytes long. When I compile the uImage per SheevaPlug dev kit document "Procedure to Configure and Build the Linux kernel with 4.2.7 LSP", I get a uImage that is 2033276 bytes long. It hangs.

Wes
Logged

Pages: [1]
Print
Jump to: