[U-Boot] Debugging why my kernel won't start

Rogan Dawes
2010-08-18T14:42:00Z

On 2010/08/18 12:54 PM, Wolfgang Denk wrote:
> Dear Rogan Dawes,
>
> In message <4C6BAC5A.6060206@dawes.za.net> you wrote:
>>
>> Thanks for the suggestion. It did make a slight difference in the boot
>> logs. bootcmd uses the default (in flash) location for the ramdisk,
>
> Actually it's a pretty significant difference, as for the first time
> you actually see the kernel trying to access the ramdisk.

Good point! :-)

>>> RAMDISK: Compressed image found at block 0
>>> invalid compressed format (err=1)
>>
>> So it seems that the ramdisk is getting corrupted somehow. And yet, it
>> is fine using the vendor u-boot. It must be something that I am doing wrong.
>
> Try copying the raw ramdisk image (i. e. without the U-Boot header) to
> RAM, and try that one, i. e. something like
>
> => cp.b ff9a0040 01600000 ...size...
> ...
> => bootm ff820000 1600000

Unfortunately, U-boot is expecting the second parameter to point to a
uImage-wrapped ramdisk, not just raw bytes:

DNS323B1> cp.b ff9a0040 1600000 4ff718
DNS323B1> bootm ff820000 1600000
## Booting kernel from Legacy Image at ff820000 ...
Image Name: Linux-2.6.12.6-arm1
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1490204 Bytes = 1.4 MiB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
Wrong Ramdisk Image Format
Ramdisk image is corrupt or invalid
DNS323B1>

Why does it make a difference if it is in RAM vs in flash? I have 8MB of
flash located at ff800000, so that reaches all the way to 0xffffffff.
Surely that should be Ok? Besides, U-boot is supposed to copy the data
in the image to the specified destination address, isn't it?

Rogan