This problem is typical for ARM systems only.
The following discussion is ARM-centric:
First, check to ensure that you have configured your U-Boot build so that
CONFIG_CMDLINE_TAG
is enabled. (Other tags like CONFIG_SETUP_MEMORY_TAGS
or CONFIG_INITRD_TAG
may be needed, too.)
This ensures that u-boot will boot the kernel with a command-line tag
that incorporates the kernel options you set in the
"bootargs"
environment variable.
If you have the CONFIG_CMDLINE_TAG
option configured, the
problem is almost certainly with your kernel build. You have to instruct the
kernel to pick up the boot tags at a certain address. This is done in the
machine descriptor macros, which are found in the processor start-up C code
for your architecture. For the Intel DBPXA250 "Lubbock"
development board,
the machine descriptor macros are located at the bottom of the file
arch/arm/mach-pxa/lubbock.c
, and they look like this:
MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform")
MAINTAINER("MontaVista Software Inc.")
BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
FIXUP(fixup_lubbock)
MAPIO(lubbock_map_io)
INITIRQ(lubbock_init_irq)
MACHINE_END
The machine descriptor macros for your machine will be located in a similar
file in your kernel source tree. Having located your machine descriptor
macros, the next step is to find out where U-Boot puts the kernel boot tags
in memory for your architecture. On the Lubbock, this address turns out to
be the start of physical RAM plus 0x100, or 0xa0000100. Add the "BOOT_PARAMS"
macro with this address to your machine descriptor macros; the result
should look something like this:
MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform")
MAINTAINER("MontaVista Software Inc.")
BOOT_PARAMS(0xa0000100)
BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
FIXUP(fixup_lubbock)
MAPIO(lubbock_map_io)
INITIRQ(lubbock_init_irq)
MACHINE_END
If there is already a BOOT_PARAMS macro in your machine descriptor macros,
modify it so that it has the correct address. Then, rebuild your kernel and
re-install it on your target. Now the kernel should be able to pick up
the kernel options you have set in the "bootargs"
environment variable.