[U-Boot] Mips, U-Boot and ramdisk

Robert Hodaszi mouse1 at sch.bme.hu
Tue Jun 23 12:38:57 CEST 2009


Hi Matthew,

> Hi Robert.
>   
> Do you see U-Boot detecting and loading the ram disk image once you invoke your
> bootm command above? eg:
>
> ## Loading RAMDisk Image at 00500000 ...
>    Image Name:   uboot ext2 ramdisk rootfs
>    Created:      2009-06-15  14:39:13 UTC
>    Image Type:   M68K Linux RAMDisk Image (gzip compressed)
>    Data Size:    5219290 Bytes =  5 MB
>    Load Address: 00000000
>    Entry Point:  00000000
>    Verifying Checksum ... OK
>    Loading Ramdisk to 4fa79000, end 4ff733da ... OK
>
> I believe that for U-Boot to pass the ram disk image information to the kernel,
> it needs to be able to detect the ram disk image in the first place. You can use
> U-Boot's mkimage utility to add a header onto your ram disk image.
>   
I used the mkimage, the U-Boot successfully recognized the ramdisk 
image, and it set the ramdisk_start and ramdisk_end variables (I turned 
on the debug feature). See the followings:

*  kernel: cmdline image address = 0x81000000
## Booting kernel from Legacy Image at 81000000 ...
   Image Name:   Linux-2.6.30-dirty
   Created:      2009-06-23  10:11:33 UTC
   Image Type:   MIPS Linux Kernel Image (gzip compressed)
   Data Size:    1589415 Bytes =  1.5 MB
   Load Address: 80100000
   Entry Point:  80104530
   Verifying Checksum ... OK
   kernel data at 0x81000040, len = 0x001840a7 (1589415)
*  ramdisk: cmdline image address = 0x81ffffc0
## Loading init Ramdisk from Legacy Image at 81ffffc0 ...
   Image Name:   Simple Embedded Linux Framework
   Created:      2007-01-21  18:52:48 UTC
   Image Type:   MIPS Linux RAMDisk Image (gzip compressed)
   Data Size:    1642848 Bytes =  1.6 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   ramdisk start = 0x82000000, ramdisk end = 0x82191160
   Uncompressing Kernel Image ... OK
   kernel loaded at 0x80100000, end = 0x8044a200
## Transferring control to Linux (at address 80104530) ...
## Giving linux memsize in bytes, 134217728
> This is because you're explicitly telling the kernel where to find the ram disk
> image in memory. Take a look at drivers/block/brd.c in the kernel src.
>   
As I saw, the arch/mips/kernel/setup.c (rd_start_early and 
rd_size_early) set these informations.
> This is arch specific in U-Boot but I'd also check that your MIPS kernel has
> support for a) correctly parsing the U-Boot environment provided to it and b)
> providing the required data to other parts of the kernel for utilisation of the
> ram disk, eg initrd_start / initrd_end as an example.
>
> If you're struggling to pass other args to the kernel then it sounds like there
> is more of a fundamental issue somewhere, though. Maybe just double check
> Documentation/kernel-parameters.txt to make sure you're passing syntax in a form
> that the kernel will recognise?
>
> Hope that helps.
>
> Cheers,
> --  Matt
>   
I don't know yet, if it can or can't pass other arguments. I check only 
that one so far. But the command line parameters work well, I tried the 
kgdb, the ramdisk, etc. It's only a problem with this environment 
variable. But I'm just debugging...

Best regards,
Robert Hodaszi


More information about the U-Boot mailing list