The "Universal Bootloader" ("Das U-Boot") is a monitor program.
Free Software: full source code under GPL
hosted on SourceForge:
production quality: used as default boot loader by several board vendors
portable and easy to port and to debug
many supported qrchitectures: PPC, ARM, MIPS, x86, m68k, NIOS, Microblaze
more than 216 board supported by public source tree
many, many features
u-boot(Universal Bootloader) is an open source, multi platform bootloader.
u-boot supports interactive commands, environment variables, command
scripting and booting from external and booting from external media.
u-boot supports a large variety of popular CPUs and CPU families used
today, and a much larger collection of reference boards based on these
processors.
u-boot configures different hardware blocks on the board and brings them
out of reset into a sane state. It can load and start an OS automatically
(auto-boot) or, alternatively, it allows the user to run commands to
start the OS. The subset of default commands that are part of u-boot
also provide capability to the user to perform memory, network, flash
operations, and more prior to OS boot-up.
Generally, u-boot resides in the beginning area of the flash. The exact
sector or block is defined by the processor. U-boot initialize the CPU
and several peripherals located on board, create some critical data
structures which will be used by kernel, and load itself into the top
of the memory.
When control is transferred to u-boot, it will initialize the interrupts
and the rest peripherals. Then it will wait for commands from user.
If u-boot receives the command to boot the kernel image or if it is used
to boot the kernel image directly, it will uncompress the kernel, load
it to the memory, and give the control to the kernel. Then kernel will
continue execution without the intervention of u-boot.
u-boot provides additional functions than just booting device and
initializing kernel. Usually it comes with a command-line interface.