Atmel website | ARM Community | AVR freaks | Technical Support
Banner
 FAQ •  Search •  Register •  Login 

All times are UTC + 1 hour [ DST ]




Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject: Kernel not booting on AT91SAm9G20-EK
PostPosted: Sat Apr 30, 2011 4:07 pm 
Offline

Joined: Wed Apr 27, 2011 6:31 am
Posts: 25
I'm using AT91SAm9G20-EK.

I have downloaded the kernel binary from Linux4SAM-> Linux-2.6.30-at91-exp.3-at91sam9g20ek.bin .I kept in tftp server.

Then I downloaded form host to location 0x20008000.
then bootm 0x20008000, then it was showing the message.
like this and being like this
## Booting kernel from Legacy Image at 20008000 ...
Image Name: Angstrom/2.6.30/at91sam9g20ek
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1717508 Bytes = 1.6 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
XIP Kernel Image ... OK
OK

Starting kernel ...

Not going futher....

Please help me to proceed.

Thenral


Top
 Profile  
 
 Post subject: Re: Kernel not booting on AT91SAm9G20-EK
PostPosted: Mon May 02, 2011 2:47 am 
Offline

Joined: Thu Apr 19, 2007 10:15 pm
Posts: 204
Location: USA
Hi there

To be clear, you are using U-Boot (of unspecified version) to start the Linux kernel.

> Then I downloaded form host to location 0x20008000

> Load Address: 20008000

The kernel is failing to boot because these two addresses are the same!

The kernel image that you downloaded using tftp is in uImage form, which is the Linux kernel bundled with its own uncompression wrapper (similar to a DOS/Win .exe program that can unzip itself). U-Boot treats the image as "uncompressed" because U-Boot itself does not perform the uncompression. The uImage has to perform its own uncompression when execution is transferred from U-Boot to the wrapper code.

The Linux kernel that you're using has been built to execute at the fixed (physical) address of 0x20008000. This cannot be changed once the kernel has been built. It is also an address you don't have to specify for booting the kernel, since this address is stored in the wrapper.

The problem is that you have loaded the kernel iUmage starting at the same memory location where the (uncompressed) kernel needs to be written. The result is that the wrapper code that is performing the uncompression overwrites itself with the uncompressed kernel, which causes the executing program to silently hang.

The proper address to write the uImage is based on the load address of the kernel and the location of U-Boot. I recall that sometimes 0x23000000 is used.

FYI just to confuse matters more, U-Boot uses the environment variable "loadaddr" to hold the starting memory address of where to write the tftp file. This "loadaddr" should not be confused with the "Load Address" stored in the kernel image info.

Regards


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: