Specifications

5.9.4.2. bootm - boot application image from memory
=> help bootm
bootm - boot application image from memory
Usage:
bootm [addr [arg ...]]
- boot application image stored in memory
passing arguments 'arg ...'; when booting a Linux kernel,
'arg' can be the address of an initrd image
When booting a Linux kernel which requires a flat device-tree
a third argument is required which is the address of the
device-tree blob. To boot that kernel without an initrd image,
use a '-' for the second argument. If you do not pass a third
a bd_info struct will be passed instead
Sub-commands to do part of the bootm sequence. The sub-commands must be
issued in the order below (it's ok to not issue all sub-commands):
start [addr [arg ...]]
loados - load OS image
fdt - relocate flat device tree
cmdline - OS specific command line processing/setup
bdt - OS specific bd_t processing
prep - OS specific prep before relocation or go
go - start OS
=>
The bootm command is used to start operating system images. From the image header it gets information
about the type of the operating system, the file compression method used (if any), the load and entry point
addresses, etc. The command will then load the image to the required memory address, uncompressing it on
the fly if necessary. Depending on the OS it will pass the required boot arguments and start the OS at it's entry
point.
The first argument to bootm is the memory address (in RAM, ROM or flash memory) where the image is
stored, followed by optional arguments that depend on the OS.
For Linux, exactly one optional argument can be passed. If it is present, it is interpreted as the start address
of a initrd ramdisk image (in RAM, ROM or flash memory). In this case the bootm command consists of
three steps: first the Linux kernel image is uncompressed and copied into RAM, then the ramdisk image is
loaded to RAM, and finally controll is passed to the Linux kernel, passing information about the location and
size of the ramdisk image.
To boot a Linux kernel image without a initrd ramdisk image, the following command can be used:
=> bootm ${kernel_addr}
If a ramdisk image shall be used, you can type:
=> bootm ${kernel_addr} ${ramdisk_addr}
Both examples of course imply that the variables used are set to correct addresses for a kernel and a initrd
ramdisk image.
When booting images that have been loaded to RAM (for instance using TFTP download) you have to be
careful that the locations where the (compressed) images were stored do not overlap with the memory needed
to load the uncompressed kernel. For instance, if you load a ramdisk image at a location in low memory, it
may be overwritten when the Linux kernel gets loaded. This will cause undefined system crashes.
5.9.4.2. bootm - boot application image from memory 60