- I am using U-Boot with a Linux kernel version
Y < 2.4.5-pre5), but the last message I see is
Uncompressing Kernel Image ... OK
Then the system hangs.
- Most probably you pass bad parameters to the Linux kernel.
There are several possible reasons:
- Bad device tree; for example, check that the memory mapset up by the
boot loader (like mapping of IMMR, PCI addresses etc.) is consistent
with what is encoded in your device tree specification.
Here some possible reasons for older Linux kernel versions:
- arch/ppc: Bad definition of the
You must make sure that your machine specific header file
(for instance include/asm-ppc/tqm8xx.h)
includes the same definition of the Board Information
structure as we define in
include/ppcboot.h, and make sure that
your definition of
IMAP_ADDR uses the same
value as your U-Boot configuration in
- Bad clock information
Before kernel version 2.4.5-pre5 (BitKeeper Patch 22.214.171.124,
22MAY2001) the kernel expected the clock information in MHz,
but recent kernels expect it in Hz instead. U-Boot passes
the clock information in Hz by default.
To switch to the old behaviour, you can set the
"clocks_in_mhz" in U-Boot:
=> setenv clocks_in_mhz 1
For recent kernel the
variable must not be set
If it is present in your environment, you can delete it as follows:
=> setenv clocks_in_mhz
A common error is to try
"setenv clocks_in_mhz 0"
or to some other value - this
will not work,
as the value of the variable is not important at all
It is the existence
of the variable that will be checked.
- Inconsistent memory map
Some boards may need corrct mappings for some special hardware devices like
BCSR (Board Control and Status Registers) etc.
Verify that the mappings expected by Linux match those created by U-Boot.