[U-Boot] Linux does not boot from flash, but will from RAM
Jerry Van Baren
gvb.uboot at gmail.com
Fri Oct 10 02:46:33 CEST 2008
Curran, Tom wrote:
> I am using u-boot on the Avnet V5FX30T (Xilinx FPGA, PPC440) eval board
> to boot a Linux 2.6.27-rc4 kernel. I can use u-boot to tftp the kernel,
> ramdisk, and device tree blob to RAM and boot from there OK. I copied
> the kernel, ramdisk and blob to flash and verified those elements were
> programmed in flash correctly with 'iminfo', but when I try to boot from
> flash the boot process hangs at "Loading Ramdisk to 03d59000, end
> 03ec8f20 ... OK". At this point u-boot will restart (after a
> WDT-induced reset?) after a few minutes. Interestingly enough, I can
> boot from flash IF the ramdisk is already in RAM with a "bootm
> $(kernel_flash_addr) $(ramdisk_ram_addr) $(blob_flash_addr)". This
> leads me to believe something is going wrong in the copying of the
> ramdisk from flash to RAM. Perhaps I am doing something wrong or missed
> a step somewhere? I have read the FAQ, but have not found anything
> relevant. Perhaps someone here has had this problem too and can offer a
> solution? Any help is appreciated. Many thanks in advance!
>
> --Tom
Hi Tom,
Do you have *no* console output from linux with the ramdisk-in-flash
version? I assume you have normal console diarrhea when the ramdisk is
in ram. Is linux booting at all? If your console output isn't
outputting, it is hard to tell the difference between crashing before
linux even starts or something much less fatal like the ramdisk not
mounting properly (rebooting in 180 seconds...).
Can you look in the linux debug output buffer in memory in the failed
boot? Find the symbol log_buf in the map file System.map. This will be
a virtual address, e.g. c013c494 b log_buf . Drop the first nibble to
get the physical address, e.g. 0x0013c494. Dump this area of memory to
find what was sent to the system log before the crash.
What happens if you load your ramdisk into ram at 03d59000 (like your
failed boot) rather than whatever $(ramdisk_ram_addr) is?
Best regards,
gvb
P.S. You should use curly braces ${variable} rather than $(variable).
More information about the U-Boot
mailing list