
Hi Mikhail,
I'm trying to load Linux from U-Boot. I'm pretty new at this so there may be some obvious things wrong with what I'm doing. I am using ELDK 4.2 and U-Boot 2009.03 on an EP88xC rev1.1 board (MPC885 cpu) and the linux kernel sources obtained from instructions at "http://www.denx.de/wiki/view/DULG/LinuxConfiguration#Section_6.1.".
Below is my output as it currently stands (with lots of debug output):
Please disable unneccessary debug output the next time - this makes it hard to see the salient things - thanks.
U-Boot 2009.03-svn8591 (Jun 24 2009 - 10:24:20)
CPU: MPC885ZPnn at 100 MHz [40.0...133.0 MHz]
[...]
=> setenv ethaddr 00-e0-86-0c-84-fd eth_set_enetaddr(num=0, addr=00-e0-86-0c-84-fd)
Wow, our parser groks '-' as delimiters? Didn't know that ;)
Setting new HW address on FEC ETHERNET New Address is 00:E0:86:0C:84:FD eth_set_enetaddr(num=0, addr=00-e0-86-0c-84-fd) Setting new HW address on FEC ETHERNET New Address is 00:E0:86:0C:84:FD => tftp 400000 ep88x_uimage Trying FEC ETHERNET Using FEC ETHERNET device TFTP from server 10.0.54.129; our IP address is 10.0.54.150 Filename 'ep88x_uimage'. Load address: 0x400000 Loading: ################################################################# ######## done Bytes transferred = 1057401 (102279 hex) => bootm 400000 ## Current stack ends at 0x03f70d60
- kernel: cmdline image address = 0x00400000
## Booting kernel from Legacy Image at 00400000 ... Image Name: Linux-2.6.30-rc2-01402-gd4e2f68 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1057337 Bytes = 1 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK kernel data at 0x00400040, len = 0x00102239 (1057337)
Ok, 2.6.30 so you definitely need a fdt for the kernel. Either pass it through U-Boot or use a cuImage wrapper in the Linux kernel.
## No init Ramdisk ramdisk start = 0x00000000, ramdisk end = 0x00000000 Uncompressing Kernel Image ... OK kernel loaded at 0x00000000, end = 0x0022421c ## cmdline at 0x007fff00 ... 0x007fff36 ## kernel board info at 0x007ffec0 bd address = 0x03F70FC4 memstart = 0x00000000 memsize = 0x00000000 flashstart = 0xFC000000 flashsize = 0x02000000 flashoffset = 0x00029000 sramstart = 0x00000000 sramsize = 0x00000000 immr_base = 0xF0000000 bootflags = 0x00000001 intfreq = 100 MHz busfreq = 50 MHz ethaddr = 00:E0:86:0C:84:FD IP addr = 10.0.54.150 baudrate = 9600 bps ## initrd_high = 0xffffffff, copy_to_ram = 1 ramdisk load start = 0x00000000, ramdisk load end = 0x00000000 ## Transferring control to Linux (at address 00000000) ... Booting using board info...
Nothing happens after this. I know I still have to make a ramdisk image to use as the root filesystem. My questions for now are:
- Should I be getting any more console output given what I have so far?
Or is something wrong?
You should see more output indeed - the missing rootfilesystem stops the process only after all of the kernel is initialized.
- I am concerned that "memsize = 0x00000000", is this normal?
Actually it looks suspicious - although I just checked on a tqm5200 and its zero there as well - so I'd postpone debugging this.
- I tried creating and using a FDT using instructions on
"http://www.denx.de/wiki/view/DULG/LinuxFDTBlob", loading it at 0x00650000 and using "bootm 400000 - 650000", but the resulting output was pretty much identical. Is that normal?
Judiging from include/configs/EP88x.h you do not have FDT support enabled in your U-Boot at all (-> CONFIG_OF_LIBFDT). That the output stays the same also hints in this direction, as otherwise you'll see something like this:
## Flattened Device Tree blob at 00600000 Booting using the fdt blob at 0x600000 Uncompressing Kernel Image ... OK
So with your current U-Boot you would need to use the Linux wrappers. I would suggest that you update the configuration to include this.
As I perceive it, your biggest task however will be to come up with a correct FDT for Linux. This is out of scope of this ML and better carried to the linuxppc ML.
Cheers Detlev