[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